diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2013-10-31 06:23:57 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-11-11 14:38:59 -0500 |
commit | 3d8bfe141be8e5c21261fc63da8e7964d44f2645 (patch) | |
tree | bf5a3ede1705921c8c1084fe54d4ed42f65b3c1d /drivers/net/wireless/rt2x00 | |
parent | 7777bd458e9e7cf9ac604f22e5b1691628b45c66 (diff) |
rt2x00: fix HT TX descriptor settings regression
Since:
commit 36323f817af0376c78612cfdab714b0feb05fea5
Author: Thomas Huehn <thomas@net.t-labs.tu-berlin.de>
Date: Mon Jul 23 21:33:42 2012 +0200
mac80211: move TX station pointer and restructure TX
we do not pass sta pointer to rt2x00queue_create_tx_descriptor_ht(),
hence we do not correctly set station WCID and AMPDU density parameters.
Cc: stable@vger.kernel.org # 3.7+
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00lib.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00queue.c | 4 |
3 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h index a0935987fa3a..7f40ab8e1bd8 100644 --- a/drivers/net/wireless/rt2x00/rt2x00lib.h +++ b/drivers/net/wireless/rt2x00/rt2x00lib.h | |||
@@ -146,7 +146,7 @@ void rt2x00queue_remove_l2pad(struct sk_buff *skb, unsigned int header_length); | |||
146 | * @local: frame is not from mac80211 | 146 | * @local: frame is not from mac80211 |
147 | */ | 147 | */ |
148 | int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, | 148 | int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, |
149 | bool local); | 149 | struct ieee80211_sta *sta, bool local); |
150 | 150 | ||
151 | /** | 151 | /** |
152 | * rt2x00queue_update_beacon - Send new beacon from mac80211 | 152 | * rt2x00queue_update_beacon - Send new beacon from mac80211 |
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index 7c157857f5ce..2183e7978399 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
@@ -90,7 +90,7 @@ static int rt2x00mac_tx_rts_cts(struct rt2x00_dev *rt2x00dev, | |||
90 | frag_skb->data, data_length, tx_info, | 90 | frag_skb->data, data_length, tx_info, |
91 | (struct ieee80211_rts *)(skb->data)); | 91 | (struct ieee80211_rts *)(skb->data)); |
92 | 92 | ||
93 | retval = rt2x00queue_write_tx_frame(queue, skb, true); | 93 | retval = rt2x00queue_write_tx_frame(queue, skb, NULL, true); |
94 | if (retval) { | 94 | if (retval) { |
95 | dev_kfree_skb_any(skb); | 95 | dev_kfree_skb_any(skb); |
96 | rt2x00_warn(rt2x00dev, "Failed to send RTS/CTS frame\n"); | 96 | rt2x00_warn(rt2x00dev, "Failed to send RTS/CTS frame\n"); |
@@ -151,7 +151,7 @@ void rt2x00mac_tx(struct ieee80211_hw *hw, | |||
151 | goto exit_fail; | 151 | goto exit_fail; |
152 | } | 152 | } |
153 | 153 | ||
154 | if (unlikely(rt2x00queue_write_tx_frame(queue, skb, false))) | 154 | if (unlikely(rt2x00queue_write_tx_frame(queue, skb, control->sta, false))) |
155 | goto exit_fail; | 155 | goto exit_fail; |
156 | 156 | ||
157 | /* | 157 | /* |
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index 50590b1420a5..a5d38e8ad9e4 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c | |||
@@ -635,7 +635,7 @@ static void rt2x00queue_bar_check(struct queue_entry *entry) | |||
635 | } | 635 | } |
636 | 636 | ||
637 | int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, | 637 | int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, |
638 | bool local) | 638 | struct ieee80211_sta *sta, bool local) |
639 | { | 639 | { |
640 | struct ieee80211_tx_info *tx_info; | 640 | struct ieee80211_tx_info *tx_info; |
641 | struct queue_entry *entry; | 641 | struct queue_entry *entry; |
@@ -649,7 +649,7 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, | |||
649 | * after that we are free to use the skb->cb array | 649 | * after that we are free to use the skb->cb array |
650 | * for our information. | 650 | * for our information. |
651 | */ | 651 | */ |
652 | rt2x00queue_create_tx_descriptor(queue->rt2x00dev, skb, &txdesc, NULL); | 652 | rt2x00queue_create_tx_descriptor(queue->rt2x00dev, skb, &txdesc, sta); |
653 | 653 | ||
654 | /* | 654 | /* |
655 | * All information is retrieved from the skb->cb array, | 655 | * All information is retrieved from the skb->cb array, |