ath5k: add Mesh Point support
authorAndrey Yurovsky <andrey@cozybit.com>
Thu, 17 Jul 2008 20:12:24 +0000 (13:12 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 22 Aug 2008 20:29:49 +0000 (16:29 -0400)
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>
drivers/net/wireless/ath5k/base.c
drivers/net/wireless/ath5k/hw.c

index b20a45aa8680ec1b0fb0501142fedb4ba3c7978c..8bc9b92ad6aa0bb7469ee90bef4352f790b5ea4f 100644 (file)
@@ -1432,7 +1432,8 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
        ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi);
        if (ret)
                return ret;
-       if (sc->opmode == IEEE80211_IF_TYPE_AP) {
+       if (sc->opmode == IEEE80211_IF_TYPE_AP ||
+               sc->opmode == IEEE80211_IF_TYPE_MESH_POINT) {
                /*
                 * Always burst out beacon and CAB traffic
                 * (aifs = cwmin = cwmax = 0)
@@ -2932,6 +2933,7 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
        if (sc->opmode != IEEE80211_IF_TYPE_STA)
                rfilt |= AR5K_RX_FILTER_PROBEREQ;
        if (sc->opmode != IEEE80211_IF_TYPE_AP &&
+               sc->opmode != IEEE80211_IF_TYPE_MESH_POINT &&
                test_bit(ATH_STAT_PROMISC, sc->status))
                rfilt |= AR5K_RX_FILTER_PROM;
        if (sc->opmode == IEEE80211_IF_TYPE_STA ||
index ad1a5b422c8c8c6e2a9ee9d23519da0130837500..b335d3323057f5aa9b436ac3da9266b8ce68a0f5 100644 (file)
@@ -2387,6 +2387,7 @@ int ath5k_hw_set_opmode(struct ath5k_hw *ah)
                break;
 
        case IEEE80211_IF_TYPE_AP:
+       case IEEE80211_IF_TYPE_MESH_POINT:
                pcu_reg |= AR5K_STA_ID1_AP | AR5K_STA_ID1_RTS_DEF_ANTENNA |
                        (ah->ah_version == AR5K_AR5210 ?
                                AR5K_STA_ID1_NO_PSPOLL : 0);