|
@@ -2159,6 +2159,7 @@ ath5k_beacon_config(struct ath5k_softc *sc)
|
|
|
if (sc->opmode == NL80211_IFTYPE_STATION) {
|
|
|
sc->imask |= AR5K_INT_BMISS;
|
|
|
} else if (sc->opmode == NL80211_IFTYPE_ADHOC ||
|
|
|
+ sc->opmode == NL80211_IFTYPE_MESH_POINT ||
|
|
|
sc->opmode == NL80211_IFTYPE_AP) {
|
|
|
/*
|
|
|
* In IBSS mode we use a self-linked tx descriptor and let the
|
|
@@ -2753,6 +2754,7 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
|
|
|
case NL80211_IFTYPE_AP:
|
|
|
case NL80211_IFTYPE_STATION:
|
|
|
case NL80211_IFTYPE_ADHOC:
|
|
|
+ case NL80211_IFTYPE_MESH_POINT:
|
|
|
case NL80211_IFTYPE_MONITOR:
|
|
|
sc->opmode = conf->type;
|
|
|
break;
|
|
@@ -2824,6 +2826,7 @@ ath5k_config_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|
|
}
|
|
|
if (conf->changed & IEEE80211_IFCC_BEACON &&
|
|
|
(vif->type == NL80211_IFTYPE_ADHOC ||
|
|
|
+ vif->type == NL80211_IFTYPE_MESH_POINT ||
|
|
|
vif->type == NL80211_IFTYPE_AP)) {
|
|
|
struct sk_buff *beacon = ieee80211_beacon_get(hw, vif);
|
|
|
if (!beacon) {
|
|
@@ -2952,6 +2955,9 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
|
|
|
rfilt |= AR5K_RX_FILTER_PROM;
|
|
|
if (sc->opmode == NL80211_IFTYPE_ADHOC)
|
|
|
rfilt |= AR5K_RX_FILTER_BEACON;
|
|
|
+ if (sc->opmode == NL80211_IFTYPE_MESH_POINT)
|
|
|
+ rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON |
|
|
|
+ AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM;
|
|
|
|
|
|
/* Set filters */
|
|
|
ath5k_hw_set_rx_filter(ah,rfilt);
|