aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Yurovsky <andrey@cozybit.com>2008-07-17 16:12:24 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-08-22 16:29:49 -0400
commit8e5f3d0aaa3ae5305613553f869727b0361cd472 (patch)
treeb13d1e9d08cbbea93066bdc2be7d4f7dbb6eff02
parentd92a8e81e097968d8f2bac0581a0a43bff14b8f0 (diff)
ath5k: add Mesh Point support
This enables draft-802.11s Mesh Point operation. For that we need mesh beaconing. Tested with AR5212/AR5213 PCI card against Zydas and b43 mesh nodes. Signed-off-by: Andrey Yurovsky <andrey@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath5k/base.c4
-rw-r--r--drivers/net/wireless/ath5k/hw.c1
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index b20a45aa8680..8bc9b92ad6aa 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -1432,7 +1432,8 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
1432 ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi); 1432 ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi);
1433 if (ret) 1433 if (ret)
1434 return ret; 1434 return ret;
1435 if (sc->opmode == IEEE80211_IF_TYPE_AP) { 1435 if (sc->opmode == IEEE80211_IF_TYPE_AP ||
1436 sc->opmode == IEEE80211_IF_TYPE_MESH_POINT) {
1436 /* 1437 /*
1437 * Always burst out beacon and CAB traffic 1438 * Always burst out beacon and CAB traffic
1438 * (aifs = cwmin = cwmax = 0) 1439 * (aifs = cwmin = cwmax = 0)
@@ -2932,6 +2933,7 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
2932 if (sc->opmode != IEEE80211_IF_TYPE_STA) 2933 if (sc->opmode != IEEE80211_IF_TYPE_STA)
2933 rfilt |= AR5K_RX_FILTER_PROBEREQ; 2934 rfilt |= AR5K_RX_FILTER_PROBEREQ;
2934 if (sc->opmode != IEEE80211_IF_TYPE_AP && 2935 if (sc->opmode != IEEE80211_IF_TYPE_AP &&
2936 sc->opmode != IEEE80211_IF_TYPE_MESH_POINT &&
2935 test_bit(ATH_STAT_PROMISC, sc->status)) 2937 test_bit(ATH_STAT_PROMISC, sc->status))
2936 rfilt |= AR5K_RX_FILTER_PROM; 2938 rfilt |= AR5K_RX_FILTER_PROM;
2937 if (sc->opmode == IEEE80211_IF_TYPE_STA || 2939 if (sc->opmode == IEEE80211_IF_TYPE_STA ||
diff --git a/drivers/net/wireless/ath5k/hw.c b/drivers/net/wireless/ath5k/hw.c
index ad1a5b422c8c..b335d3323057 100644
--- a/drivers/net/wireless/ath5k/hw.c
+++ b/drivers/net/wireless/ath5k/hw.c
@@ -2387,6 +2387,7 @@ int ath5k_hw_set_opmode(struct ath5k_hw *ah)
2387 break; 2387 break;
2388 2388
2389 case IEEE80211_IF_TYPE_AP: 2389 case IEEE80211_IF_TYPE_AP:
2390 case IEEE80211_IF_TYPE_MESH_POINT:
2390 pcu_reg |= AR5K_STA_ID1_AP | AR5K_STA_ID1_RTS_DEF_ANTENNA | 2391 pcu_reg |= AR5K_STA_ID1_AP | AR5K_STA_ID1_RTS_DEF_ANTENNA |
2391 (ah->ah_version == AR5K_AR5210 ? 2392 (ah->ah_version == AR5K_AR5210 ?
2392 AR5K_STA_ID1_NO_PSPOLL : 0); 2393 AR5K_STA_ID1_NO_PSPOLL : 0);