Modify the prototype for ieee80211_change_beacon() to accept an instance of struct cfg80211_ap_settings instead of struct cfg80211_beacon_data to process FILS discovery and unsolicited broadcast probe response transmission configuration. Set the respective flags when applicable. Signed-off-by: Aloka Dixit <quic_alokad@xxxxxxxxxxx> --- v3: No change from v2. net/mac80211/cfg.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index f1d211e61e49..22843184d6ee 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1313,11 +1313,12 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev, } static int ieee80211_change_beacon(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_beacon_data *params) + struct cfg80211_ap_settings *params) { struct ieee80211_sub_if_data *sdata; struct beacon_data *old; int err; + u32 changed; sdata = IEEE80211_DEV_TO_SUB_IF(dev); sdata_assert_lock(sdata); @@ -1332,10 +1333,28 @@ static int ieee80211_change_beacon(struct wiphy *wiphy, struct net_device *dev, if (!old) return -ENOENT; - err = ieee80211_assign_beacon(sdata, params, NULL, NULL); + err = ieee80211_assign_beacon(sdata, ¶ms->beacon, NULL, NULL); if (err < 0) return err; - ieee80211_bss_info_change_notify(sdata, err); + changed = err; + + if (params->fils_discovery.max_interval) { + err = ieee80211_set_fils_discovery(sdata, + ¶ms->fils_discovery); + if (err < 0) + return err; + changed |= BSS_CHANGED_FILS_DISCOVERY; + } + + if (params->unsol_bcast_probe_resp.interval) { + err = ieee80211_set_unsol_bcast_probe_resp(sdata, + ¶ms->unsol_bcast_probe_resp); + if (err < 0) + return err; + changed |= BSS_CHANGED_UNSOL_BCAST_PROBE_RESP; + } + + ieee80211_bss_info_change_notify(sdata, changed); return 0; } -- 2.31.1