Search Linux Wireless

Re: Compat-wireless-3.2-rc6-3 is broken for rt2860 device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 20, 2012 at 8:29 AM, Andreas Hartmann
<andihartmann@xxxxxxxxxxxxxxx> wrote:
> All in one: Your workaround was a good idea, but unfortunately it
> doesn't "solve" / workaround the problem introduced with the patch
> "mac80211: retry sending failed BAR frames later instead of tearing
> down aggr" [1]. I don't know off any other solution at this time as to revert it.

Ok, so we've got at least one hw issue here: rt2800 is not able to report
correct ACK state of BARs :(

The interesting bit is that the legacy drivers tear the BA session down as
soon as the first AMPDU subframe failed. That's the same behavior as
mac80211 had before the mentioned patch.

So, let's assume the generic way Felix implemented works for other devices
(like ath9k) we could go with a workaround inside rt2x00 to tear down
the BA session as soon as the first AMPDU frame failed.

Mind to try that one (not even compile tested though :) ).

Signed-off-by: Helmut Schaa <helmut.schaa@xxxxxxxxxxxxxx>
---
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c
b/drivers/net/wireless/rt2x00/rt2x00dev.c
index c930ce0..9038934 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -420,8 +420,16 @@ void rt2x00lib_txdone(struct queue_entry *entry,
 		tx_info->status.ampdu_len = 1;
 		tx_info->status.ampdu_ack_len = success ? 1 : 0;

-		if (!success)
-			tx_info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
+		if (!success && ieee80211_is_data_qos(hdr->frame_control)) {
+			/*
+			 * Tear down BA session
+			 */
+			struct ieee80211_sta *sta = tx_info->control.sta;
+			u8 *qc = ieee80211_get_qos_ctl(hdr);
+			int tid = *qc & IEEE80211_QOS_CTL_TID_MASK;
+
+			ieee80211_stop_tx_ba_session(sta, tid);
+		}
 	}

 	if (rate_flags & IEEE80211_TX_RC_USE_RTS_CTS) {
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux