mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-24 22:32:25 +02:00
ath9k: fix rx tsf parsing
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22493 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
07f6449545
commit
1eb6639f5e
44
package/mac80211/patches/550-ath9k_tsf_fix.patch
Normal file
44
package/mac80211/patches/550-ath9k_tsf_fix.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
ath9k_rx_skb_preprocess nulls rxs and the mactime is never set again -
|
||||||
|
mactime is always 0. This causes problems in IBSS mode.
|
||||||
|
|
||||||
|
ieee80211_rx_bss_info uses mactime to decide if an IBSS merge is needed.
|
||||||
|
Without this patch the merge is triggered by each beacon received.
|
||||||
|
|
||||||
|
This can be recognized by the "beacon TSF higher than local TSF - IBSS
|
||||||
|
merge with BSSID" log message accompanying each beacon.
|
||||||
|
|
||||||
|
This problem was not completely fixed in commit
|
||||||
|
a6d2055b02dde1067075795274672720baadd3ca and is not a stable kernel fix.
|
||||||
|
It is solely intended for wireless-testing.
|
||||||
|
|
||||||
|
Signed-off-by: Jan Friedrich <jft@dev2day.de>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath9k/recv.c | 10 +++++-----
|
||||||
|
1 files changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath9k/recv.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath9k/recv.c
|
||||||
|
@@ -1140,6 +1140,11 @@ int ath_rx_tasklet(struct ath_softc *sc,
|
||||||
|
if (flush)
|
||||||
|
goto requeue;
|
||||||
|
|
||||||
|
+ retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs,
|
||||||
|
+ rxs, &decrypt_error);
|
||||||
|
+ if (retval)
|
||||||
|
+ goto requeue;
|
||||||
|
+
|
||||||
|
rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp;
|
||||||
|
if (rs.rs_tstamp > tsf_lower &&
|
||||||
|
unlikely(rs.rs_tstamp - tsf_lower > 0x10000000))
|
||||||
|
@@ -1149,11 +1154,6 @@ int ath_rx_tasklet(struct ath_softc *sc,
|
||||||
|
unlikely(tsf_lower - rs.rs_tstamp > 0x10000000))
|
||||||
|
rxs->mactime += 0x100000000ULL;
|
||||||
|
|
||||||
|
- retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs,
|
||||||
|
- rxs, &decrypt_error);
|
||||||
|
- if (retval)
|
||||||
|
- goto requeue;
|
||||||
|
-
|
||||||
|
/* Ensure we always have an skb to requeue once we are done
|
||||||
|
* processing the current buffer's skb */
|
||||||
|
requeue_skb = ath_rxbuf_alloc(common, common->rx_bufsize, GFP_ATOMIC);
|
Loading…
Reference in New Issue
Block a user