2022-05-09 17:40:18

by Aloka Dixit

[permalink] [raw]
Subject: [PATCH v3 0/2] Additional processing in NL80211_CMD_SET_BEACON

FILS discovery and unsolicited broadcast probe response transmissions
are configured as part of NL80211_CMD_START_AP, however both stop
after userspace issues NL80211_CMD_SET_BEACON command as these
attributes are not processed as part of this command.
Add the missing implementation in nl80211 and mac80211 to fix the issue.

Aloka Dixit (2):
nl80211: process additional attributes in NL80211_CMD_SET_BEACON
mac80211: process additional data in ieee80211_change_beacon()

include/net/cfg80211.h | 2 +-
net/mac80211/cfg.c | 25 +++++++++++++++++---
net/wireless/nl80211.c | 28 ++++++++++++++++++----
net/wireless/rdev-ops.h | 2 +-
net/wireless/trace.h | 52 +++++++++++++++++++++++------------------
5 files changed, 77 insertions(+), 32 deletions(-)


base-commit: fc20106d6e2086dd37bf286605c28b28b4f2492c
--
2.31.1



2022-05-09 17:40:19

by Aloka Dixit

[permalink] [raw]
Subject: [PATCH v3 1/2] nl80211: process additional attributes in NL80211_CMD_SET_BEACON

FILS discovery and unsolicited broadcast probe response transmissions
are configured as part of NL80211_CMD_START_AP, however both stop
after userspace uses the NL80211_CMD_SET_BEACON command as these
attributes are not processed as part of this command.
Add the missing implementation.

Modify the local variable in nl80211_set_beacon() and input parameter
to rdev_change_beacon() from type struct cfg80211_beacon_data to
type struct cfg80211_ap_settings to support the new processing.

Signed-off-by: Aloka Dixit <[email protected]>
---
v3: Dynamic memory allocation for 'params'.
Also introduced local variable 'attrs' for better readability.

include/net/cfg80211.h | 2 +-
net/wireless/nl80211.c | 28 ++++++++++++++++++----
net/wireless/rdev-ops.h | 2 +-
net/wireless/trace.h | 52 +++++++++++++++++++++++------------------
4 files changed, 55 insertions(+), 29 deletions(-)

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 68713388b617..b388e5c9beb8 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -4195,7 +4195,7 @@ struct cfg80211_ops {
int (*start_ap)(struct wiphy *wiphy, struct net_device *dev,
struct cfg80211_ap_settings *settings);
int (*change_beacon)(struct wiphy *wiphy, struct net_device *dev,
- struct cfg80211_beacon_data *info);
+ struct cfg80211_ap_settings *info);
int (*stop_ap)(struct wiphy *wiphy, struct net_device *dev);


diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 945ed87d12e0..5ce4215125f0 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5799,7 +5799,8 @@ static int nl80211_set_beacon(struct sk_buff *skb, struct genl_info *info)
struct cfg80211_registered_device *rdev = info->user_ptr[0];
struct net_device *dev = info->user_ptr[1];
struct wireless_dev *wdev = dev->ieee80211_ptr;
- struct cfg80211_beacon_data params;
+ struct cfg80211_ap_settings *params;
+ struct nlattr *attrs;
int err;

if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP &&
@@ -5812,16 +5813,35 @@ static int nl80211_set_beacon(struct sk_buff *skb, struct genl_info *info)
if (!wdev->beacon_interval)
return -EINVAL;

- err = nl80211_parse_beacon(rdev, info->attrs, &params);
+ params = kzalloc(sizeof(*params), GFP_KERNEL);
+ if (!params)
+ return -ENOMEM;
+
+ err = nl80211_parse_beacon(rdev, info->attrs, &params->beacon);
if (err)
goto out;

+ attrs = info->attrs[NL80211_ATTR_FILS_DISCOVERY];
+ if (attrs) {
+ err = nl80211_parse_fils_discovery(rdev, attrs, params);
+ if (err)
+ goto out;
+ }
+
+ attrs = info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP];
+ if (attrs) {
+ err = nl80211_parse_unsol_bcast_probe_resp(rdev, attrs, params);
+ if (err)
+ goto out;
+ }
+
wdev_lock(wdev);
- err = rdev_change_beacon(rdev, dev, &params);
+ err = rdev_change_beacon(rdev, dev, params);
wdev_unlock(wdev);

out:
- kfree(params.mbssid_ies);
+ kfree(params->beacon.mbssid_ies);
+ kfree(params);
return err;
}

diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h
index 439bcf52369c..131fbe9c3199 100644
--- a/net/wireless/rdev-ops.h
+++ b/net/wireless/rdev-ops.h
@@ -162,7 +162,7 @@ static inline int rdev_start_ap(struct cfg80211_registered_device *rdev,

static inline int rdev_change_beacon(struct cfg80211_registered_device *rdev,
struct net_device *dev,
- struct cfg80211_beacon_data *info)
+ struct cfg80211_ap_settings *info)
{
int ret;
trace_rdev_change_beacon(&rdev->wiphy, dev, info);
diff --git a/net/wireless/trace.h b/net/wireless/trace.h
index 228079d7690a..97ca10cbbfee 100644
--- a/net/wireless/trace.h
+++ b/net/wireless/trace.h
@@ -597,44 +597,50 @@ TRACE_EVENT(rdev_start_ap,

TRACE_EVENT(rdev_change_beacon,
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev,
- struct cfg80211_beacon_data *info),
+ struct cfg80211_ap_settings *info),
TP_ARGS(wiphy, netdev, info),
TP_STRUCT__entry(
WIPHY_ENTRY
NETDEV_ENTRY
- __dynamic_array(u8, head, info ? info->head_len : 0)
- __dynamic_array(u8, tail, info ? info->tail_len : 0)
- __dynamic_array(u8, beacon_ies, info ? info->beacon_ies_len : 0)
+ __dynamic_array(u8, head, info ? info->beacon.head_len : 0)
+ __dynamic_array(u8, tail, info ? info->beacon.tail_len : 0)
+ __dynamic_array(u8, beacon_ies,
+ info ? info->beacon.beacon_ies_len : 0)
__dynamic_array(u8, proberesp_ies,
- info ? info->proberesp_ies_len : 0)
+ info ? info->beacon.proberesp_ies_len : 0)
__dynamic_array(u8, assocresp_ies,
- info ? info->assocresp_ies_len : 0)
- __dynamic_array(u8, probe_resp, info ? info->probe_resp_len : 0)
+ info ? info->beacon.assocresp_ies_len : 0)
+ __dynamic_array(u8, probe_resp,
+ info ? info->beacon.probe_resp_len : 0)
),
TP_fast_assign(
WIPHY_ASSIGN;
NETDEV_ASSIGN;
if (info) {
- if (info->head)
- memcpy(__get_dynamic_array(head), info->head,
- info->head_len);
- if (info->tail)
- memcpy(__get_dynamic_array(tail), info->tail,
- info->tail_len);
- if (info->beacon_ies)
+ if (info->beacon.head)
+ memcpy(__get_dynamic_array(head),
+ info->beacon.head,
+ info->beacon.head_len);
+ if (info->beacon.tail)
+ memcpy(__get_dynamic_array(tail),
+ info->beacon.tail,
+ info->beacon.tail_len);
+ if (info->beacon.beacon_ies)
memcpy(__get_dynamic_array(beacon_ies),
- info->beacon_ies, info->beacon_ies_len);
- if (info->proberesp_ies)
+ info->beacon.beacon_ies,
+ info->beacon.beacon_ies_len);
+ if (info->beacon.proberesp_ies)
memcpy(__get_dynamic_array(proberesp_ies),
- info->proberesp_ies,
- info->proberesp_ies_len);
- if (info->assocresp_ies)
+ info->beacon.proberesp_ies,
+ info->beacon.proberesp_ies_len);
+ if (info->beacon.assocresp_ies)
memcpy(__get_dynamic_array(assocresp_ies),
- info->assocresp_ies,
- info->assocresp_ies_len);
- if (info->probe_resp)
+ info->beacon.assocresp_ies,
+ info->beacon.assocresp_ies_len);
+ if (info->beacon.probe_resp)
memcpy(__get_dynamic_array(probe_resp),
- info->probe_resp, info->probe_resp_len);
+ info->beacon.probe_resp,
+ info->beacon.probe_resp_len);
}
),
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT, WIPHY_PR_ARG, NETDEV_PR_ARG)
--
2.31.1


2022-05-09 17:40:20

by Aloka Dixit

[permalink] [raw]
Subject: [PATCH v3 2/2] mac80211: process additional data in ieee80211_change_beacon()

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 <[email protected]>
---
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, &params->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,
+ &params->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,
+ &params->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


2022-05-09 21:48:26

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] nl80211: process additional attributes in NL80211_CMD_SET_BEACON

Hi Aloka,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on fc20106d6e2086dd37bf286605c28b28b4f2492c]

url: https://github.com/intel-lab-lkp/linux/commits/Aloka-Dixit/Additional-processing-in-NL80211_CMD_SET_BEACON/20220510-013948
base: fc20106d6e2086dd37bf286605c28b28b4f2492c
config: arm-defconfig (https://download.01.org/0day-ci/archive/20220510/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 3abb68a626160e019c30a4860e569d7bc75e486a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/4b2583148641664d3a44d750efff98707ea07b23
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Aloka-Dixit/Additional-processing-in-NL80211_CMD_SET_BEACON/20220510-013948
git checkout 4b2583148641664d3a44d750efff98707ea07b23
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/net/wireless/broadcom/brcm80211/brcmfmac/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:5577:19: error: incompatible function pointer types initializing 'int (*)(struct wiphy *, struct net_device *, struct cfg80211_ap_settings *)' with an expression of type 's32 (struct wiphy *, struct net_device *, struct cfg80211_beacon_data *)' (aka 'int (struct wiphy *, struct net_device *, struct cfg80211_beacon_data *)') [-Werror,-Wincompatible-function-pointer-types]
.change_beacon = brcmf_cfg80211_change_beacon,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.


vim +5577 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c

2526ff21aa77c2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend van Spriel 2017-06-09 5549
5c22fb85102a75 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Hante Meuleman 2016-02-17 5550 static struct cfg80211_ops brcmf_cfg80211_ops = {
9f440b7bc78688 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2013-02-08 5551 .add_virtual_intf = brcmf_cfg80211_add_iface,
9f440b7bc78688 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2013-02-08 5552 .del_virtual_intf = brcmf_cfg80211_del_iface,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5553 .change_virtual_intf = brcmf_cfg80211_change_iface,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5554 .scan = brcmf_cfg80211_scan,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5555 .set_wiphy_params = brcmf_cfg80211_set_wiphy_params,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5556 .join_ibss = brcmf_cfg80211_join_ibss,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5557 .leave_ibss = brcmf_cfg80211_leave_ibss,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5558 .get_station = brcmf_cfg80211_get_station,
bf2a7e0499b922 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c Hante Meuleman 2015-10-08 5559 .dump_station = brcmf_cfg80211_dump_station,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5560 .set_tx_power = brcmf_cfg80211_set_tx_power,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5561 .get_tx_power = brcmf_cfg80211_get_tx_power,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5562 .add_key = brcmf_cfg80211_add_key,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5563 .del_key = brcmf_cfg80211_del_key,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5564 .get_key = brcmf_cfg80211_get_key,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5565 .set_default_key = brcmf_cfg80211_config_default_key,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5566 .set_default_mgmt_key = brcmf_cfg80211_config_default_mgmt_key,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5567 .set_power_mgmt = brcmf_cfg80211_set_power_mgmt,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5568 .connect = brcmf_cfg80211_connect,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5569 .disconnect = brcmf_cfg80211_disconnect,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5570 .suspend = brcmf_cfg80211_suspend,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5571 .resume = brcmf_cfg80211_resume,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5572 .set_pmksa = brcmf_cfg80211_set_pmksa,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5573 .del_pmksa = brcmf_cfg80211_del_pmksa,
cbaa177d2b2f93 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2012-08-30 5574 .flush_pmksa = brcmf_cfg80211_flush_pmksa,
1a87334239757b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2012-09-27 5575 .start_ap = brcmf_cfg80211_start_ap,
1a87334239757b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2012-09-27 5576 .stop_ap = brcmf_cfg80211_stop_ap,
a0f07959ee6e7f drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 @5577 .change_beacon = brcmf_cfg80211_change_beacon,
1a87334239757b drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2012-09-27 5578 .del_station = brcmf_cfg80211_del_station,
6b89dcb35bfc78 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c Hante Meuleman 2014-12-21 5579 .change_station = brcmf_cfg80211_change_station,
e58060723c91a2 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2012-09-19 5580 .sched_scan_start = brcmf_cfg80211_sched_scan_start,
e58060723c91a2 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2012-09-19 5581 .sched_scan_stop = brcmf_cfg80211_sched_scan_stop,
6cd536fe62ef58 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Johannes Berg 2020-04-17 5582 .update_mgmt_frame_registrations =
6cd536fe62ef58 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Johannes Berg 2020-04-17 5583 brcmf_cfg80211_update_mgmt_frame_registrations,
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5584 .mgmt_tx = brcmf_cfg80211_mgmt_tx,
7dd56ea45a6686 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Alvin Šipraga 2021-02-08 5585 .set_cqm_rssi_range_config = brcmf_cfg80211_set_cqm_rssi_range_config,
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5586 .remain_on_channel = brcmf_p2p_remain_on_channel,
0de8aace0ff499 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Hante Meuleman 2013-02-08 5587 .cancel_remain_on_channel = brcmf_cfg80211_cancel_remain_on_channel,
ee6e7aa383944c drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Rafał Miłecki 2016-05-20 5588 .get_channel = brcmf_cfg80211_get_channel,
27f10e380ad912 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2013-04-05 5589 .start_p2p_device = brcmf_p2p_start_device,
27f10e380ad912 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2013-04-05 5590 .stop_p2p_device = brcmf_p2p_stop_device,
61730d4dfffc2c drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Piotr Haber 2013-04-23 5591 .crit_proto_start = brcmf_cfg80211_crit_proto_start,
61730d4dfffc2c drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Piotr Haber 2013-04-23 5592 .crit_proto_stop = brcmf_cfg80211_crit_proto_stop,
89c2f382fff4ec drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2013-08-10 5593 .tdls_oper = brcmf_cfg80211_tdls_oper,
2a2a5d1835b6f0 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend Van Spriel 2017-01-27 5594 .update_connect_params = brcmf_cfg80211_update_conn_params,
2526ff21aa77c2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend van Spriel 2017-06-09 5595 .set_pmk = brcmf_cfg80211_set_pmk,
2526ff21aa77c2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c Arend van Spriel 2017-06-09 5596 .del_pmk = brcmf_cfg80211_del_pmk,
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5597 };
5b435de0d78686 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c Arend van Spriel 2011-10-05 5598

--
0-DAY CI Kernel Test Service
https://01.org/lkp

2022-05-09 23:35:20

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] nl80211: process additional attributes in NL80211_CMD_SET_BEACON

Hi Aloka,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on fc20106d6e2086dd37bf286605c28b28b4f2492c]

url: https://github.com/intel-lab-lkp/linux/commits/Aloka-Dixit/Additional-processing-in-NL80211_CMD_SET_BEACON/20220510-013948
base: fc20106d6e2086dd37bf286605c28b28b4f2492c
config: mips-randconfig-r011-20220509 (https://download.01.org/0day-ci/archive/20220510/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 3abb68a626160e019c30a4860e569d7bc75e486a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/4b2583148641664d3a44d750efff98707ea07b23
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Aloka-Dixit/Additional-processing-in-NL80211_CMD_SET_BEACON/20220510-013948
git checkout 4b2583148641664d3a44d750efff98707ea07b23
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/net/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

>> drivers/net/wireless/ath/ath6kl/cfg80211.c:3457:19: error: incompatible function pointer types initializing 'int (*)(struct wiphy *, struct net_device *, struct cfg80211_ap_settings *)' with an expression of type 'int (struct wiphy *, struct net_device *, struct cfg80211_beacon_data *)' [-Werror,-Wincompatible-function-pointer-types]
.change_beacon = ath6kl_change_beacon,
^~~~~~~~~~~~~~~~~~~~
1 error generated.
--
>> drivers/net/wireless/marvell/mwifiex/cfg80211.c:4239:19: error: incompatible function pointer types initializing 'int (*)(struct wiphy *, struct net_device *, struct cfg80211_ap_settings *)' with an expression of type 'int (struct wiphy *, struct net_device *, struct cfg80211_beacon_data *)' [-Werror,-Wincompatible-function-pointer-types]
.change_beacon = mwifiex_cfg80211_change_beacon,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
--
>> drivers/net/wireless/quantenna/qtnfmac/cfg80211.c:1004:20: error: incompatible function pointer types initializing 'int (*)(struct wiphy *, struct net_device *, struct cfg80211_ap_settings *)' with an expression of type 'int (struct wiphy *, struct net_device *, struct cfg80211_beacon_data *)' [-Werror,-Wincompatible-function-pointer-types]
.change_beacon = qtnf_change_beacon,
^~~~~~~~~~~~~~~~~~
1 error generated.
--
>> drivers/net/wireless/ath/wil6210/cfg80211.c:2656:19: error: incompatible function pointer types initializing 'int (*)(struct wiphy *, struct net_device *, struct cfg80211_ap_settings *)' with an expression of type 'int (struct wiphy *, struct net_device *, struct cfg80211_beacon_data *)' [-Werror,-Wincompatible-function-pointer-types]
.change_beacon = wil_cfg80211_change_beacon,
^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.


vim +3457 drivers/net/wireless/ath/ath6kl/cfg80211.c

f80574ae1538f6 Jouni Malinen 2011-08-30 3429
bdcd81707973cf Kalle Valo 2011-07-18 3430 static struct cfg80211_ops ath6kl_cfg80211_ops = {
55055976fe15f4 Vasanthakumar Thiagarajan 2011-10-25 3431 .add_virtual_intf = ath6kl_cfg80211_add_iface,
55055976fe15f4 Vasanthakumar Thiagarajan 2011-10-25 3432 .del_virtual_intf = ath6kl_cfg80211_del_iface,
bdcd81707973cf Kalle Valo 2011-07-18 3433 .change_virtual_intf = ath6kl_cfg80211_change_iface,
bdcd81707973cf Kalle Valo 2011-07-18 3434 .scan = ath6kl_cfg80211_scan,
bdcd81707973cf Kalle Valo 2011-07-18 3435 .connect = ath6kl_cfg80211_connect,
bdcd81707973cf Kalle Valo 2011-07-18 3436 .disconnect = ath6kl_cfg80211_disconnect,
bdcd81707973cf Kalle Valo 2011-07-18 3437 .add_key = ath6kl_cfg80211_add_key,
bdcd81707973cf Kalle Valo 2011-07-18 3438 .get_key = ath6kl_cfg80211_get_key,
bdcd81707973cf Kalle Valo 2011-07-18 3439 .del_key = ath6kl_cfg80211_del_key,
bdcd81707973cf Kalle Valo 2011-07-18 3440 .set_default_key = ath6kl_cfg80211_set_default_key,
bdcd81707973cf Kalle Valo 2011-07-18 3441 .set_wiphy_params = ath6kl_cfg80211_set_wiphy_params,
bdcd81707973cf Kalle Valo 2011-07-18 3442 .set_tx_power = ath6kl_cfg80211_set_txpower,
bdcd81707973cf Kalle Valo 2011-07-18 3443 .get_tx_power = ath6kl_cfg80211_get_txpower,
bdcd81707973cf Kalle Valo 2011-07-18 3444 .set_power_mgmt = ath6kl_cfg80211_set_power_mgmt,
bdcd81707973cf Kalle Valo 2011-07-18 3445 .join_ibss = ath6kl_cfg80211_join_ibss,
bdcd81707973cf Kalle Valo 2011-07-18 3446 .leave_ibss = ath6kl_cfg80211_leave_ibss,
bdcd81707973cf Kalle Valo 2011-07-18 3447 .get_station = ath6kl_get_station,
bdcd81707973cf Kalle Valo 2011-07-18 3448 .set_pmksa = ath6kl_set_pmksa,
bdcd81707973cf Kalle Valo 2011-07-18 3449 .del_pmksa = ath6kl_del_pmksa,
bdcd81707973cf Kalle Valo 2011-07-18 3450 .flush_pmksa = ath6kl_flush_pmksa,
003353b0d27489 Kalle Valo 2011-09-01 3451 CFG80211_TESTMODE_CMD(ath6kl_tm_cmd)
abcb344b3b823c Kalle Valo 2011-07-22 3452 #ifdef CONFIG_PM
52d81a6883fb36 Kalle Valo 2011-11-01 3453 .suspend = __ath6kl_cfg80211_suspend,
52d81a6883fb36 Kalle Valo 2011-11-01 3454 .resume = __ath6kl_cfg80211_resume,
abcb344b3b823c Kalle Valo 2011-07-22 3455 #endif
8860020e0be1f0 Johannes Berg 2012-02-13 3456 .start_ap = ath6kl_start_ap,
8860020e0be1f0 Johannes Berg 2012-02-13 @3457 .change_beacon = ath6kl_change_beacon,
8860020e0be1f0 Johannes Berg 2012-02-13 3458 .stop_ap = ath6kl_stop_ap,
33e5308d8a0fb8 Jouni Malinen 2011-12-27 3459 .del_station = ath6kl_del_station,
238751365a1c42 Jouni Malinen 2011-08-30 3460 .change_station = ath6kl_change_station,
63fa1e0ca7a2c1 Jouni Malinen 2011-08-30 3461 .remain_on_channel = ath6kl_remain_on_channel,
63fa1e0ca7a2c1 Jouni Malinen 2011-08-30 3462 .cancel_remain_on_channel = ath6kl_cancel_remain_on_channel,
8a6c8060c0b166 Jouni Malinen 2011-08-30 3463 .mgmt_tx = ath6kl_mgmt_tx,
6cd536fe62ef58 Johannes Berg 2020-04-17 3464 .update_mgmt_frame_registrations =
6cd536fe62ef58 Johannes Berg 2020-04-17 3465 ath6kl_update_mgmt_frame_registrations,
9c2e90ffc97a8f Ben Greear 2015-10-21 3466 .get_antenna = ath6kl_get_antenna,
10509f903ebb7d Kalle Valo 2011-12-13 3467 .sched_scan_start = ath6kl_cfg80211_sscan_start,
10509f903ebb7d Kalle Valo 2011-12-13 3468 .sched_scan_stop = ath6kl_cfg80211_sscan_stop,
06e360ace9434b Bala Shanmugam 2012-05-22 3469 .set_bitrate_mask = ath6kl_cfg80211_set_bitrate,
279b2862ee6ba9 Thomas Pedersen 2012-07-17 3470 .set_cqm_txe_config = ath6kl_cfg80211_set_txe_config,
bdcd81707973cf Kalle Valo 2011-07-18 3471 };
bdcd81707973cf Kalle Valo 2011-07-18 3472

--
0-DAY CI Kernel Test Service
https://01.org/lkp