|
@@ -1243,18 +1243,33 @@ static int sta_apply_parameters(struct ieee80211_local *local,
|
|
|
|
|
|
if (ieee80211_vif_is_mesh(&sdata->vif)) {
|
|
|
#ifdef CONFIG_MAC80211_MESH
|
|
|
- if (sdata->u.mesh.security & IEEE80211_MESH_SEC_SECURED)
|
|
|
+ if (sdata->u.mesh.security & IEEE80211_MESH_SEC_SECURED) {
|
|
|
+ u32 changed = 0;
|
|
|
+
|
|
|
switch (params->plink_state) {
|
|
|
- case NL80211_PLINK_LISTEN:
|
|
|
case NL80211_PLINK_ESTAB:
|
|
|
+ if (sta->plink_state != NL80211_PLINK_ESTAB)
|
|
|
+ changed = mesh_plink_inc_estab_count(
|
|
|
+ sdata);
|
|
|
+ sta->plink_state = params->plink_state;
|
|
|
+ break;
|
|
|
+ case NL80211_PLINK_LISTEN:
|
|
|
case NL80211_PLINK_BLOCKED:
|
|
|
+ case NL80211_PLINK_OPN_SNT:
|
|
|
+ case NL80211_PLINK_OPN_RCVD:
|
|
|
+ case NL80211_PLINK_CNF_RCVD:
|
|
|
+ case NL80211_PLINK_HOLDING:
|
|
|
+ if (sta->plink_state == NL80211_PLINK_ESTAB)
|
|
|
+ changed = mesh_plink_dec_estab_count(
|
|
|
+ sdata);
|
|
|
sta->plink_state = params->plink_state;
|
|
|
break;
|
|
|
default:
|
|
|
/* nothing */
|
|
|
break;
|
|
|
}
|
|
|
- else
|
|
|
+ ieee80211_bss_info_change_notify(sdata, changed);
|
|
|
+ } else {
|
|
|
switch (params->plink_action) {
|
|
|
case PLINK_ACTION_OPEN:
|
|
|
mesh_plink_open(sta);
|
|
@@ -1263,6 +1278,7 @@ static int sta_apply_parameters(struct ieee80211_local *local,
|
|
|
mesh_plink_block(sta);
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
#endif
|
|
|
}
|
|
|
|