@@ -522,7 +522,7 @@ int ieee80211_ibss_csa_beacon(struct ieee80211_sub_if_data *sdata,
if (csa_settings)
ieee80211_send_action_csa(sdata, csa_settings);
- ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON);
+ return BSS_CHANGED_BEACON;
out:
return ret;
}
@@ -559,11 +559,17 @@ int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata)
/* generate the beacon */
err = ieee80211_ibss_csa_beacon(sdata, NULL);
- sdata_unlock(sdata);
if (err < 0)
- return err;
+ goto out;
- return 0;
+ if (err) {
+ ieee80211_bss_info_change_notify(sdata, err);
+ err = 0;
+ }
+out:
+ sdata_unlock(sdata);
+
+ return err;
}
void ieee80211_ibss_stop(struct ieee80211_sub_if_data *sdata)
The return value of ieee80211_ibss_csa_beacon is not aligned with the return value of ieee80211_csa_beacon(). For consistency and to be able to use both functions with similar code, change ieee80211_ibss_csa_beacon() not to send the bss changed notification itself, but return what has changed so the caller can send the notification instead. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> --- In v4: * use goto out instead of sdata_unlock and return in the middle of the flow; (Ilan) net/mac80211/ibss.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)