From: Ivo van Doorn Date: Sun, 10 Feb 2008 21:51:41 +0000 (+0100) Subject: rt2x00: Fix queue->qid initialization X-Git-Tag: v2.6.26-rc1~1138^2~530^2~40 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f539276ee97bd174f644fb6c18bb9965b596032;p=linux-2.6 rt2x00: Fix queue->qid initialization As Adam Baker reported the queue->qid was not initialized correctly. The QID_AC_BE was assigned to the RX ring. This will move the queue initialization into a seperate function and makes sure that all queues are initialized directly with the correct qids. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville --- diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index 943afc9067..9188323f06 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c @@ -228,6 +228,18 @@ void rt2x00queue_uninitialize(struct rt2x00_dev *rt2x00dev) } } +static void rt2x00queue_init(struct rt2x00_dev *rt2x00dev, + struct data_queue *queue, enum data_queue_qid qid) +{ + spin_lock_init(&queue->lock); + + queue->rt2x00dev = rt2x00dev; + queue->qid = qid; + queue->aifs = 2; + queue->cw_min = 5; + queue->cw_max = 10; +} + int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) { struct data_queue *queue; @@ -265,24 +277,15 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) * TX: cw_max: 2^10 = 1024. * BCN & Atim: qid = QID_MGMT */ - qid = QID_AC_BE; - queue_for_each(rt2x00dev, queue) { - spin_lock_init(&queue->lock); + rt2x00queue_init(rt2x00dev, rt2x00dev->rx, QID_RX); - queue->rt2x00dev = rt2x00dev; - queue->qid = qid++; - queue->aifs = 2; - queue->cw_min = 5; - queue->cw_max = 10; - } + qid = QID_AC_BE; + tx_queue_for_each(rt2x00dev, queue) + rt2x00queue_init(rt2x00dev, queue, qid++); - /* - * Fix non-TX data qid's - */ - rt2x00dev->rx->qid = QID_RX; - rt2x00dev->bcn[0].qid = QID_MGMT; + rt2x00queue_init(rt2x00dev, &rt2x00dev->bcn[0], QID_MGMT); if (req_atim) - rt2x00dev->bcn[1].qid = QID_MGMT; + rt2x00queue_init(rt2x00dev, &rt2x00dev->bcn[1], QID_MGMT); return 0; }