aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorBruno Randolf <bruno@thinktube.com>2008-01-19 04:18:41 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:10:53 -0500
commit6d91e1d80822da1c3e790bfbe8df432360fd7f68 (patch)
treecabcf6c28d7e25a45d68419d65a2e748973a62f7 /drivers/net
parent036cd1ec038f7e3a36740beaf2aa4a0d2e8ed2c1 (diff)
ath5k: configure backoff for IBSS beacon queue
in "11.1.2.2 Beacon generation in an IBSS" the IEEE802.11 standard says, each STA should... "b) Calculate a random delay uniformly distributed in the range between zero and twice aCWmin × aSlotTime,". configure cwmin and cwmax of the beacon queue in IBSS mode according to this. unfortunately beacon backoff does not work reliably yet, so i suspect we have a problem somewhere else, since the same settings (and similar beacon timer configuration) work for madwifi. drivers/net/wireless/ath5k/base.c: Changes-licensed-under: 3-Clause-BSD Signed-off-by: Bruno Randolf <bruno@thinktube.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath5k/base.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index eb98284cba92..b2a6ef559b69 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -1458,8 +1458,7 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
1458 ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi); 1458 ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi);
1459 if (ret) 1459 if (ret)
1460 return ret; 1460 return ret;
1461 if (sc->opmode == IEEE80211_IF_TYPE_AP || 1461 if (sc->opmode == IEEE80211_IF_TYPE_AP) {
1462 sc->opmode == IEEE80211_IF_TYPE_IBSS) {
1463 /* 1462 /*
1464 * Always burst out beacon and CAB traffic 1463 * Always burst out beacon and CAB traffic
1465 * (aifs = cwmin = cwmax = 0) 1464 * (aifs = cwmin = cwmax = 0)
@@ -1467,8 +1466,19 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
1467 qi.tqi_aifs = 0; 1466 qi.tqi_aifs = 0;
1468 qi.tqi_cw_min = 0; 1467 qi.tqi_cw_min = 0;
1469 qi.tqi_cw_max = 0; 1468 qi.tqi_cw_max = 0;
1469 } else if (sc->opmode == IEEE80211_IF_TYPE_IBSS) {
1470 /*
1471 * Adhoc mode; backoff between 0 and (2 * cw_min).
1472 */
1473 qi.tqi_aifs = 0;
1474 qi.tqi_cw_min = 0;
1475 qi.tqi_cw_max = 2 * ah->ah_cw_min;
1470 } 1476 }
1471 1477
1478 ATH5K_DBG(sc, ATH5K_DEBUG_BEACON,
1479 "beacon queueprops tqi_aifs:%d tqi_cw_min:%d tqi_cw_max:%d\n",
1480 qi.tqi_aifs, qi.tqi_cw_min, qi.tqi_cw_max);
1481
1472 ret = ath5k_hw_setup_tx_queueprops(ah, sc->bhalq, &qi); 1482 ret = ath5k_hw_setup_tx_queueprops(ah, sc->bhalq, &qi);
1473 if (ret) { 1483 if (ret) {
1474 ATH5K_ERR(sc, "%s: unable to update parameters for beacon " 1484 ATH5K_ERR(sc, "%s: unable to update parameters for beacon "