@@ -1313,12 +1313,14 @@ 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 ieee80211_bss_conf *bss_conf;
+ struct cfg80211_beacon_data *beacon = ¶ms->beacon;
struct beacon_data *old;
int err;
+ u32 changed;
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
sdata_assert_lock(sdata);
@@ -1333,18 +1335,36 @@ 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, beacon, NULL, NULL);
if (err < 0)
return 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;
+ }
+
bss_conf = &sdata->vif.bss_conf;
- if (params->he_bss_color_valid &&
- params->he_bss_color.enabled != bss_conf->he_bss_color.enabled) {
- bss_conf->he_bss_color.enabled = params->he_bss_color.enabled;
- err |= BSS_CHANGED_HE_BSS_COLOR;
+ if (beacon->he_bss_color_valid &&
+ beacon->he_bss_color.enabled != bss_conf->he_bss_color.enabled) {
+ bss_conf->he_bss_color.enabled = beacon->he_bss_color.enabled;
+ changed |= BSS_CHANGED_HE_BSS_COLOR;
}
- ieee80211_bss_info_change_notify(sdata, err);
+ ieee80211_bss_info_change_notify(sdata, changed);
return 0;
}
Modify the prototype for ieee80211_change_beacon() to accept struct cfg80211_ap_settings instead of struct cfg80211_beacon_data to process FILS discovery and unsolicited broadcast probe response transmission configurations. Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com> --- net/mac80211/cfg.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-)