mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-24 03:18:26 +02:00
ath9k: fix issues with ad-hoc beacon slot selection
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26913 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
1183e23e2f
commit
c5fa9dbc2b
50
package/mac80211/patches/570-ath9k_fix_adhoc_beacons.patch
Normal file
50
package/mac80211/patches/570-ath9k_fix_adhoc_beacons.patch
Normal file
@ -0,0 +1,50 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/beacon.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/beacon.c
|
||||
@@ -351,9 +351,7 @@ void ath_beacon_tasklet(unsigned long da
|
||||
struct ath_buf *bf = NULL;
|
||||
struct ieee80211_vif *vif;
|
||||
int slot;
|
||||
- u32 bfaddr, bc = 0, tsftu;
|
||||
- u64 tsf;
|
||||
- u16 intval;
|
||||
+ u32 bfaddr, bc = 0;
|
||||
|
||||
/*
|
||||
* Check if the previous beacon has gone out. If
|
||||
@@ -388,17 +386,27 @@ void ath_beacon_tasklet(unsigned long da
|
||||
* on the tsf to safeguard against missing an swba.
|
||||
*/
|
||||
|
||||
- intval = cur_conf->beacon_interval ? : ATH_DEFAULT_BINTVAL;
|
||||
|
||||
- tsf = ath9k_hw_gettsf64(ah);
|
||||
- tsf += TU_TO_USEC(ah->config.sw_beacon_response_time);
|
||||
- tsftu = TSF_TO_TU((tsf * ATH_BCBUF) >>32, tsf * ATH_BCBUF);
|
||||
- slot = (tsftu % (intval * ATH_BCBUF)) / intval;
|
||||
- vif = sc->beacon.bslot[slot];
|
||||
+ if (ah->opmode == NL80211_IFTYPE_AP) {
|
||||
+ u16 intval;
|
||||
+ u32 tsftu;
|
||||
+ u64 tsf;
|
||||
+
|
||||
+ intval = cur_conf->beacon_interval ? : ATH_DEFAULT_BINTVAL;
|
||||
+ tsf = ath9k_hw_gettsf64(ah);
|
||||
+ tsf += TU_TO_USEC(ah->config.sw_beacon_response_time);
|
||||
+ tsftu = TSF_TO_TU((tsf * ATH_BCBUF) >>32, tsf * ATH_BCBUF);
|
||||
+ slot = (tsftu % (intval * ATH_BCBUF)) / intval;
|
||||
+ vif = sc->beacon.bslot[slot];
|
||||
+
|
||||
+ ath_dbg(common, ATH_DBG_BEACON,
|
||||
+ "slot %d [tsf %llu tsftu %u intval %u] vif %p\n",
|
||||
+ slot, tsf, tsftu / ATH_BCBUF, intval, vif);
|
||||
+ } else {
|
||||
+ slot = 0;
|
||||
+ vif = sc->beacon.bslot[slot];
|
||||
+ }
|
||||
|
||||
- ath_dbg(common, ATH_DBG_BEACON,
|
||||
- "slot %d [tsf %llu tsftu %u intval %u] vif %p\n",
|
||||
- slot, tsf, tsftu / ATH_BCBUF, intval, vif);
|
||||
|
||||
bfaddr = 0;
|
||||
if (vif) {
|
Loading…
Reference in New Issue
Block a user