diff options
author | Gertjan van Wingerde <gwingerde@gmail.com> | 2011-03-03 13:46:29 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-03-04 14:06:49 -0500 |
commit | 61c6e4893f3070b6473ca4ec3176c7471d44278b (patch) | |
tree | 51df84f8d3993a2a40eadfd5df38850f006311f9 /drivers | |
parent | e74df4a7562da56a7e4dbf41ff167b2f44e84a50 (diff) |
rt2x00: Include ATIM queue support in rt2x00queue_get_tx_queue.
The ATIM queue is considered to be a TX queue by the drivers that support
the queue. Therefore include support for the ATIM queue to the
rt2x00queue_get_tx_queue function so that the drivers that support the ATIM
queue can also use that function.
Add the support in such a way that drivers that do not support the ATIM
queue are not penalized in their efficiency.
Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 8 |
4 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index d78d39e4730a..329f3283697b 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
@@ -1278,7 +1278,7 @@ static void rt2400pci_fill_rxdone(struct queue_entry *entry, | |||
1278 | static void rt2400pci_txdone(struct rt2x00_dev *rt2x00dev, | 1278 | static void rt2400pci_txdone(struct rt2x00_dev *rt2x00dev, |
1279 | const enum data_queue_qid queue_idx) | 1279 | const enum data_queue_qid queue_idx) |
1280 | { | 1280 | { |
1281 | struct data_queue *queue = rt2x00queue_get_queue(rt2x00dev, queue_idx); | 1281 | struct data_queue *queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); |
1282 | struct queue_entry_priv_pci *entry_priv; | 1282 | struct queue_entry_priv_pci *entry_priv; |
1283 | struct queue_entry *entry; | 1283 | struct queue_entry *entry; |
1284 | struct txdone_entry_desc txdesc; | 1284 | struct txdone_entry_desc txdesc; |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 3fb09151c918..5cd6575b6358 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
@@ -1410,7 +1410,7 @@ static void rt2500pci_fill_rxdone(struct queue_entry *entry, | |||
1410 | static void rt2500pci_txdone(struct rt2x00_dev *rt2x00dev, | 1410 | static void rt2500pci_txdone(struct rt2x00_dev *rt2x00dev, |
1411 | const enum data_queue_qid queue_idx) | 1411 | const enum data_queue_qid queue_idx) |
1412 | { | 1412 | { |
1413 | struct data_queue *queue = rt2x00queue_get_queue(rt2x00dev, queue_idx); | 1413 | struct data_queue *queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); |
1414 | struct queue_entry_priv_pci *entry_priv; | 1414 | struct queue_entry_priv_pci *entry_priv; |
1415 | struct queue_entry *entry; | 1415 | struct queue_entry *entry; |
1416 | struct txdone_entry_desc txdesc; | 1416 | struct txdone_entry_desc txdesc; |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 65636a7eba16..6a88c56b43ff 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -1076,6 +1076,9 @@ rt2x00queue_get_tx_queue(struct rt2x00_dev *rt2x00dev, | |||
1076 | if (queue < rt2x00dev->ops->tx_queues && rt2x00dev->tx) | 1076 | if (queue < rt2x00dev->ops->tx_queues && rt2x00dev->tx) |
1077 | return &rt2x00dev->tx[queue]; | 1077 | return &rt2x00dev->tx[queue]; |
1078 | 1078 | ||
1079 | if (queue == QID_ATIM) | ||
1080 | return rt2x00dev->atim; | ||
1081 | |||
1079 | return NULL; | 1082 | return NULL; |
1080 | } | 1083 | } |
1081 | 1084 | ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index 778b6d9cd686..72345787fea6 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
@@ -116,13 +116,13 @@ void rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
116 | goto exit_fail; | 116 | goto exit_fail; |
117 | 117 | ||
118 | /* | 118 | /* |
119 | * Determine which queue to put packet on. | 119 | * Use the ATIM queue if appropriate and present. |
120 | */ | 120 | */ |
121 | if (tx_info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM && | 121 | if (tx_info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM && |
122 | test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags)) | 122 | test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags)) |
123 | queue = rt2x00queue_get_queue(rt2x00dev, QID_ATIM); | 123 | qid = QID_ATIM; |
124 | else | 124 | |
125 | queue = rt2x00queue_get_tx_queue(rt2x00dev, qid); | 125 | queue = rt2x00queue_get_tx_queue(rt2x00dev, qid); |
126 | if (unlikely(!queue)) { | 126 | if (unlikely(!queue)) { |
127 | ERROR(rt2x00dev, | 127 | ERROR(rt2x00dev, |
128 | "Attempt to send packet over invalid queue %d.\n" | 128 | "Attempt to send packet over invalid queue %d.\n" |