The IEEE 802.16 standard defines MAC and physical layer protocols for broadband wireless access, however it does not specify any scheduling algorithm. In this paper, we propose a RED-based Weighted Fair Priority Queuing algorithm for inter-class scheduling and a channel aware algorithm for intra-class scheduling. Weights of the service classes are adaptive according to the QoS requirements of each service class. Weights of the subscriber stations are assigned based on their channel quality and bandwidth requests. Simulation results show that overall system throughput is improved without starving lower priority service classes.