aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00queue.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-11-18 19:08:30 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-11-19 11:08:56 -0500
commit7351c6bd482712e5e3ec9dffc547de0e0863efb0 (patch)
tree1847c0470af79727b58611a69fa82384bd904d60 /drivers/net/wireless/rt2x00/rt2x00queue.c
parentad4bb6f8883a13bb0f65b194dae36c62a02ac779 (diff)
mac80211: request TX status where needed
Right now all frames mac80211 hands to the driver have the IEEE80211_TX_CTL_REQ_TX_STATUS flag set to request TX status. This isn't really necessary, only the injected frames need TX status (the latter for hostapd) so move setting this flag. The rate control algorithms also need TX status, but they don't require it. Also, rt2x00 uses that bit for its own purposes and seems to require it being set for all frames, but that can be fixed in rt2x00. This doesn't really change anything for any drivers but in the future drivers using hw-rate control may opt to not report TX status for frames that don't have the IEEE80211_TX_CTL_REQ_TX_STATUS flag set. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: Ivo van Doorn <IvDoorn@gmail.com> [rt2x00 bits] Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00queue.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
index 02972a036bc..eaedee8c05c 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -454,7 +454,8 @@ static void rt2x00queue_write_tx_descriptor(struct queue_entry *entry,
454 rt2x00dev->ops->lib->kick_tx_queue(rt2x00dev, queue->qid); 454 rt2x00dev->ops->lib->kick_tx_queue(rt2x00dev, queue->qid);
455} 455}
456 456
457int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb) 457int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb,
458 bool local)
458{ 459{
459 struct ieee80211_tx_info *tx_info; 460 struct ieee80211_tx_info *tx_info;
460 struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); 461 struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX);
@@ -495,6 +496,9 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb)
495 skbdesc->tx_rate_idx = rate_idx; 496 skbdesc->tx_rate_idx = rate_idx;
496 skbdesc->tx_rate_flags = rate_flags; 497 skbdesc->tx_rate_flags = rate_flags;
497 498
499 if (local)
500 skbdesc->flags |= SKBDESC_NOT_MAC80211;
501
498 /* 502 /*
499 * When hardware encryption is supported, and this frame 503 * When hardware encryption is supported, and this frame
500 * is to be encrypted, we should strip the IV/EIV data from 504 * is to be encrypted, we should strip the IV/EIV data from