wifi: nl80211: additions to NL80211_CMD_SET_BEACON
authorAloka Dixit <quic_alokad@quicinc.com>
Thu, 27 Jul 2023 17:40:59 +0000 (10:40 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 13 Sep 2023 10:34:01 +0000 (12:34 +0200)
FILS discovery and unsolicited broadcast probe response templates
need to be updated along with beacon templates in some cases such as
the channel switch operation. Add the missing implementation.

Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
Reviewed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Link: https://lore.kernel.org/r/20230727174100.11721-5-quic_alokad@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/nl80211.c

index 6449072e8def31afe80c7c3df07d70435c1abbbc..218093607b299f5c86b10092cb0767b5f80107b9 100644 (file)
@@ -6199,6 +6199,7 @@ static int nl80211_set_beacon(struct sk_buff *skb, struct genl_info *info)
        struct net_device *dev = info->user_ptr[1];
        struct wireless_dev *wdev = dev->ieee80211_ptr;
        struct cfg80211_ap_settings *params;
+       struct nlattr *attr;
        int err;
 
        if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP &&
@@ -6220,6 +6221,20 @@ static int nl80211_set_beacon(struct sk_buff *skb, struct genl_info *info)
        if (err)
                goto out;
 
+       attr = info->attrs[NL80211_ATTR_FILS_DISCOVERY];
+       if (attr) {
+               err = nl80211_parse_fils_discovery(rdev, attr, params);
+               if (err)
+                       goto out;
+       }
+
+       attr = info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP];
+       if (attr) {
+               err = nl80211_parse_unsol_bcast_probe_resp(rdev, attr, params);
+               if (err)
+                       goto out;
+       }
+
        err = rdev_change_beacon(rdev, dev, params);
 
 out: