mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
madwifi: allow ad-hoc mode with software based TSF merging (hardware merging can screw up the internal timers and cause transmit hangs) - based on a patch by sven-ola. activated by wlanconfig's nosbeacon flag
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12883 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
static int ath_desc_alloc(struct ath_softc *);
|
||||
static void ath_desc_free(struct ath_softc *);
|
||||
static void ath_desc_swap(struct ath_desc *);
|
||||
@@ -2783,6 +2784,72 @@
|
||||
@@ -2793,6 +2794,72 @@
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
/*
|
||||
* Reset the hardware w/o losing operational state. This is
|
||||
* basically a more efficient way of doing ath_stop, ath_init,
|
||||
@@ -5282,6 +5349,7 @@
|
||||
@@ -5292,6 +5359,7 @@
|
||||
u_int64_t tsf, hw_tsf;
|
||||
u_int32_t tsftu, hw_tsftu;
|
||||
u_int32_t intval, nexttbtt = 0;
|
||||
@@ -89,7 +89,7 @@
|
||||
int reset_tsf = 0;
|
||||
|
||||
if (vap == NULL)
|
||||
@@ -5289,6 +5357,9 @@
|
||||
@@ -5299,6 +5367,9 @@
|
||||
|
||||
ni = vap->iv_bss;
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
hw_tsf = ath_hal_gettsf64(ah);
|
||||
tsf = le64_to_cpu(ni->ni_tstamp.tsf);
|
||||
hw_tsftu = hw_tsf >> 10;
|
||||
@@ -5478,15 +5549,27 @@
|
||||
@@ -5488,15 +5559,27 @@
|
||||
<= ath_hal_sw_beacon_response_time)
|
||||
nexttbtt += intval;
|
||||
sc->sc_nexttbtt = nexttbtt;
|
||||
@@ -115,7 +115,7 @@
|
||||
sc->sc_bmisscount = 0;
|
||||
ath_hal_intrset(ah, sc->sc_imask);
|
||||
+
|
||||
+ if (ath_hw_check_atim(sc, 1, intval & HAL_BEACON_PERIOD)) {
|
||||
+ if ((sc->sc_opmode == HAL_M_IBSS) && ath_hw_check_atim(sc, 1, intval & HAL_BEACON_PERIOD)) {
|
||||
+ DPRINTF(sc, ATH_DEBUG_BEACON,
|
||||
+ "fixed atim window after beacon init\n");
|
||||
+ }
|
||||
@@ -127,11 +127,11 @@
|
||||
/* We print all debug messages here, in order to preserve the
|
||||
* time critical aspect of this function */
|
||||
DPRINTF(sc, ATH_DEBUG_BEACON,
|
||||
@@ -6389,6 +6472,11 @@
|
||||
@@ -6399,6 +6482,11 @@
|
||||
DPRINTF(sc, ATH_DEBUG_BEACON,
|
||||
"Updated beacon timers\n");
|
||||
}
|
||||
+ if ((sc->sc_opmode == IEEE80211_M_IBSS) &&
|
||||
+ if ((sc->sc_opmode == HAL_M_IBSS) &&
|
||||
+ IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid) &&
|
||||
+ ath_hw_check_atim(sc, 1, vap->iv_bss->ni_intval)) {
|
||||
+ DPRINTF(sc, ATH_DEBUG_ANY, "Fixed ATIM window after beacon recv\n");
|
||||
|
||||
Reference in New Issue
Block a user