|
@@ -938,6 +938,9 @@ static void ath9k_vif_iter(struct ath9k_vif_iter_data *iter_data,
|
|
|
if (avp->assoc && !iter_data->primary_sta)
|
|
|
iter_data->primary_sta = vif;
|
|
|
break;
|
|
|
+ case NL80211_IFTYPE_OCB:
|
|
|
+ iter_data->nocbs++;
|
|
|
+ break;
|
|
|
case NL80211_IFTYPE_ADHOC:
|
|
|
iter_data->nadhocs++;
|
|
|
if (vif->bss_conf.enable_beacon)
|
|
@@ -1111,6 +1114,8 @@ void ath9k_calculate_summary_state(struct ath_softc *sc,
|
|
|
|
|
|
if (iter_data.nmeshes)
|
|
|
ah->opmode = NL80211_IFTYPE_MESH_POINT;
|
|
|
+ else if (iter_data.nocbs)
|
|
|
+ ah->opmode = NL80211_IFTYPE_OCB;
|
|
|
else if (iter_data.nwds)
|
|
|
ah->opmode = NL80211_IFTYPE_AP;
|
|
|
else if (iter_data.nadhocs)
|
|
@@ -1760,7 +1765,8 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
|
|
|
ath9k_calculate_summary_state(sc, avp->chanctx);
|
|
|
}
|
|
|
|
|
|
- if (changed & BSS_CHANGED_IBSS) {
|
|
|
+ if ((changed & BSS_CHANGED_IBSS) ||
|
|
|
+ (changed & BSS_CHANGED_OCB)) {
|
|
|
memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN);
|
|
|
common->curaid = bss_conf->aid;
|
|
|
ath9k_hw_write_associd(sc->sc_ah);
|