Commit 15ddba5f authored by Anjaneyulu's avatar Anjaneyulu Committed by Johannes Berg

wifi: mac80211: consistently use u64 for BSS changes

Currently, enum ieee80211_bss_change has more than 32 flags.
Change the type of the corresponding variables from u32 to u64.
Signed-off-by: default avatarAnjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230604120651.10354a05eaf1.If19359262fe2728dd523ea6d7c3aa7dc50940411@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 92747f17
...@@ -1101,18 +1101,20 @@ ieee80211_copy_rnr_beacon(u8 *pos, struct cfg80211_rnr_elems *dst, ...@@ -1101,18 +1101,20 @@ ieee80211_copy_rnr_beacon(u8 *pos, struct cfg80211_rnr_elems *dst,
return offset; return offset;
} }
static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata, static int
struct ieee80211_link_data *link, ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata,
struct cfg80211_beacon_data *params, struct ieee80211_link_data *link,
const struct ieee80211_csa_settings *csa, struct cfg80211_beacon_data *params,
const struct ieee80211_color_change_settings *cca) const struct ieee80211_csa_settings *csa,
const struct ieee80211_color_change_settings *cca,
u64 *changed)
{ {
struct cfg80211_mbssid_elems *mbssid = NULL; struct cfg80211_mbssid_elems *mbssid = NULL;
struct cfg80211_rnr_elems *rnr = NULL; struct cfg80211_rnr_elems *rnr = NULL;
struct beacon_data *new, *old; struct beacon_data *new, *old;
int new_head_len, new_tail_len; int new_head_len, new_tail_len;
int size, err; int size, err;
u32 changed = BSS_CHANGED_BEACON; u64 _changed = BSS_CHANGED_BEACON;
struct ieee80211_bss_conf *link_conf = link->conf; struct ieee80211_bss_conf *link_conf = link->conf;
old = sdata_dereference(link->u.ap.beacon, sdata); old = sdata_dereference(link->u.ap.beacon, sdata);
...@@ -1219,7 +1221,7 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -1219,7 +1221,7 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata,
return err; return err;
} }
if (err == 0) if (err == 0)
changed |= BSS_CHANGED_AP_PROBE_RESP; _changed |= BSS_CHANGED_AP_PROBE_RESP;
if (params->ftm_responder != -1) { if (params->ftm_responder != -1) {
link_conf->ftm_responder = params->ftm_responder; link_conf->ftm_responder = params->ftm_responder;
...@@ -1235,7 +1237,7 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -1235,7 +1237,7 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata,
return err; return err;
} }
changed |= BSS_CHANGED_FTM_RESPONDER; _changed |= BSS_CHANGED_FTM_RESPONDER;
} }
rcu_assign_pointer(link->u.ap.beacon, new); rcu_assign_pointer(link->u.ap.beacon, new);
...@@ -1244,7 +1246,8 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -1244,7 +1246,8 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata,
if (old) if (old)
kfree_rcu(old, rcu_head); kfree_rcu(old, rcu_head);
return changed; *changed |= _changed;
return 0;
} }
static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev, static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
...@@ -1446,10 +1449,10 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev, ...@@ -1446,10 +1449,10 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL)) if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL))
link_conf->beacon_tx_rate = params->beacon_rate; link_conf->beacon_tx_rate = params->beacon_rate;
err = ieee80211_assign_beacon(sdata, link, &params->beacon, NULL, NULL); err = ieee80211_assign_beacon(sdata, link, &params->beacon, NULL, NULL,
&changed);
if (err < 0) if (err < 0)
goto error; goto error;
changed |= err;
if (params->fils_discovery.max_interval) { if (params->fils_discovery.max_interval) {
err = ieee80211_set_fils_discovery(sdata, err = ieee80211_set_fils_discovery(sdata,
...@@ -1506,6 +1509,7 @@ static int ieee80211_change_beacon(struct wiphy *wiphy, struct net_device *dev, ...@@ -1506,6 +1509,7 @@ static int ieee80211_change_beacon(struct wiphy *wiphy, struct net_device *dev,
struct beacon_data *old; struct beacon_data *old;
int err; int err;
struct ieee80211_bss_conf *link_conf; struct ieee80211_bss_conf *link_conf;
u64 changed = 0;
sdata_assert_lock(sdata); sdata_assert_lock(sdata);
...@@ -1525,17 +1529,18 @@ static int ieee80211_change_beacon(struct wiphy *wiphy, struct net_device *dev, ...@@ -1525,17 +1529,18 @@ static int ieee80211_change_beacon(struct wiphy *wiphy, struct net_device *dev,
if (!old) if (!old)
return -ENOENT; return -ENOENT;
err = ieee80211_assign_beacon(sdata, link, params, NULL, NULL); err = ieee80211_assign_beacon(sdata, link, params, NULL, NULL,
&changed);
if (err < 0) if (err < 0)
return err; return err;
if (params->he_bss_color_valid && if (params->he_bss_color_valid &&
params->he_bss_color.enabled != link_conf->he_bss_color.enabled) { params->he_bss_color.enabled != link_conf->he_bss_color.enabled) {
link_conf->he_bss_color.enabled = params->he_bss_color.enabled; link_conf->he_bss_color.enabled = params->he_bss_color.enabled;
err |= BSS_CHANGED_HE_BSS_COLOR; changed |= BSS_CHANGED_HE_BSS_COLOR;
} }
ieee80211_link_info_change_notify(sdata, link, err); ieee80211_link_info_change_notify(sdata, link, changed);
return 0; return 0;
} }
...@@ -1717,7 +1722,7 @@ static void sta_apply_mesh_params(struct ieee80211_local *local, ...@@ -1717,7 +1722,7 @@ static void sta_apply_mesh_params(struct ieee80211_local *local,
{ {
#ifdef CONFIG_MAC80211_MESH #ifdef CONFIG_MAC80211_MESH
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
u32 changed = 0; u64 changed = 0;
if (params->sta_modify_mask & STATION_PARAM_APPLY_PLINK_STATE) { if (params->sta_modify_mask & STATION_PARAM_APPLY_PLINK_STATE) {
switch (params->plink_state) { switch (params->plink_state) {
...@@ -2664,7 +2669,7 @@ static int ieee80211_change_bss(struct wiphy *wiphy, ...@@ -2664,7 +2669,7 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
struct ieee80211_link_data *link; struct ieee80211_link_data *link;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
u32 changed = 0; u64 changed = 0;
link = ieee80211_link_or_deflink(sdata, params->link_id, true); link = ieee80211_link_or_deflink(sdata, params->link_id, true);
if (IS_ERR(link)) if (IS_ERR(link))
...@@ -3589,7 +3594,7 @@ void ieee80211_channel_switch_disconnect(struct ieee80211_vif *vif, bool block_t ...@@ -3589,7 +3594,7 @@ void ieee80211_channel_switch_disconnect(struct ieee80211_vif *vif, bool block_t
EXPORT_SYMBOL(ieee80211_channel_switch_disconnect); EXPORT_SYMBOL(ieee80211_channel_switch_disconnect);
static int ieee80211_set_after_csa_beacon(struct ieee80211_sub_if_data *sdata, static int ieee80211_set_after_csa_beacon(struct ieee80211_sub_if_data *sdata,
u32 *changed) u64 *changed)
{ {
int err; int err;
...@@ -3600,25 +3605,22 @@ static int ieee80211_set_after_csa_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -3600,25 +3605,22 @@ static int ieee80211_set_after_csa_beacon(struct ieee80211_sub_if_data *sdata,
err = ieee80211_assign_beacon(sdata, &sdata->deflink, err = ieee80211_assign_beacon(sdata, &sdata->deflink,
sdata->deflink.u.ap.next_beacon, sdata->deflink.u.ap.next_beacon,
NULL, NULL); NULL, NULL, changed);
ieee80211_free_next_beacon(&sdata->deflink); ieee80211_free_next_beacon(&sdata->deflink);
if (err < 0) if (err < 0)
return err; return err;
*changed |= err;
break; break;
case NL80211_IFTYPE_ADHOC: case NL80211_IFTYPE_ADHOC:
err = ieee80211_ibss_finish_csa(sdata); err = ieee80211_ibss_finish_csa(sdata, changed);
if (err < 0) if (err < 0)
return err; return err;
*changed |= err;
break; break;
#ifdef CONFIG_MAC80211_MESH #ifdef CONFIG_MAC80211_MESH
case NL80211_IFTYPE_MESH_POINT: case NL80211_IFTYPE_MESH_POINT:
err = ieee80211_mesh_finish_csa(sdata); err = ieee80211_mesh_finish_csa(sdata, changed);
if (err < 0) if (err < 0)
return err; return err;
*changed |= err;
break; break;
#endif #endif
default: default:
...@@ -3632,7 +3634,7 @@ static int ieee80211_set_after_csa_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -3632,7 +3634,7 @@ static int ieee80211_set_after_csa_beacon(struct ieee80211_sub_if_data *sdata,
static int __ieee80211_csa_finalize(struct ieee80211_sub_if_data *sdata) static int __ieee80211_csa_finalize(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
u32 changed = 0; u64 changed = 0;
int err; int err;
sdata_assert_lock(sdata); sdata_assert_lock(sdata);
...@@ -3729,7 +3731,7 @@ void ieee80211_csa_finalize_work(struct work_struct *work) ...@@ -3729,7 +3731,7 @@ void ieee80211_csa_finalize_work(struct work_struct *work)
static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata, static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata,
struct cfg80211_csa_settings *params, struct cfg80211_csa_settings *params,
u32 *changed) u64 *changed)
{ {
struct ieee80211_csa_settings csa = {}; struct ieee80211_csa_settings csa = {};
int err; int err;
...@@ -3776,12 +3778,11 @@ static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -3776,12 +3778,11 @@ static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata,
err = ieee80211_assign_beacon(sdata, &sdata->deflink, err = ieee80211_assign_beacon(sdata, &sdata->deflink,
&params->beacon_csa, &csa, &params->beacon_csa, &csa,
NULL); NULL, changed);
if (err < 0) { if (err < 0) {
ieee80211_free_next_beacon(&sdata->deflink); ieee80211_free_next_beacon(&sdata->deflink);
return err; return err;
} }
*changed |= err;
break; break;
case NL80211_IFTYPE_ADHOC: case NL80211_IFTYPE_ADHOC:
...@@ -3813,10 +3814,9 @@ static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -3813,10 +3814,9 @@ static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata,
/* see comments in the NL80211_IFTYPE_AP block */ /* see comments in the NL80211_IFTYPE_AP block */
if (params->count > 1) { if (params->count > 1) {
err = ieee80211_ibss_csa_beacon(sdata, params); err = ieee80211_ibss_csa_beacon(sdata, params, changed);
if (err < 0) if (err < 0)
return err; return err;
*changed |= err;
} }
ieee80211_send_action_csa(sdata, params); ieee80211_send_action_csa(sdata, params);
...@@ -3841,12 +3841,11 @@ static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -3841,12 +3841,11 @@ static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata,
/* see comments in the NL80211_IFTYPE_AP block */ /* see comments in the NL80211_IFTYPE_AP block */
if (params->count > 1) { if (params->count > 1) {
err = ieee80211_mesh_csa_beacon(sdata, params); err = ieee80211_mesh_csa_beacon(sdata, params, changed);
if (err < 0) { if (err < 0) {
ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE; ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE;
return err; return err;
} }
*changed |= err;
} }
if (ifmsh->csa_role == IEEE80211_MESH_CSA_ROLE_INIT) if (ifmsh->csa_role == IEEE80211_MESH_CSA_ROLE_INIT)
...@@ -3880,7 +3879,7 @@ __ieee80211_channel_switch(struct wiphy *wiphy, struct net_device *dev, ...@@ -3880,7 +3879,7 @@ __ieee80211_channel_switch(struct wiphy *wiphy, struct net_device *dev,
struct ieee80211_channel_switch ch_switch; struct ieee80211_channel_switch ch_switch;
struct ieee80211_chanctx_conf *conf; struct ieee80211_chanctx_conf *conf;
struct ieee80211_chanctx *chanctx; struct ieee80211_chanctx *chanctx;
u32 changed = 0; u64 changed = 0;
int err; int err;
sdata_assert_lock(sdata); sdata_assert_lock(sdata);
...@@ -4613,7 +4612,7 @@ static int ieee80211_set_sar_specs(struct wiphy *wiphy, ...@@ -4613,7 +4612,7 @@ static int ieee80211_set_sar_specs(struct wiphy *wiphy,
static int static int
ieee80211_set_after_color_change_beacon(struct ieee80211_sub_if_data *sdata, ieee80211_set_after_color_change_beacon(struct ieee80211_sub_if_data *sdata,
u32 *changed) u64 *changed)
{ {
switch (sdata->vif.type) { switch (sdata->vif.type) {
case NL80211_IFTYPE_AP: { case NL80211_IFTYPE_AP: {
...@@ -4624,13 +4623,12 @@ ieee80211_set_after_color_change_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -4624,13 +4623,12 @@ ieee80211_set_after_color_change_beacon(struct ieee80211_sub_if_data *sdata,
ret = ieee80211_assign_beacon(sdata, &sdata->deflink, ret = ieee80211_assign_beacon(sdata, &sdata->deflink,
sdata->deflink.u.ap.next_beacon, sdata->deflink.u.ap.next_beacon,
NULL, NULL); NULL, NULL, changed);
ieee80211_free_next_beacon(&sdata->deflink); ieee80211_free_next_beacon(&sdata->deflink);
if (ret < 0) if (ret < 0)
return ret; return ret;
*changed |= ret;
break; break;
} }
default: default:
...@@ -4644,7 +4642,7 @@ ieee80211_set_after_color_change_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -4644,7 +4642,7 @@ ieee80211_set_after_color_change_beacon(struct ieee80211_sub_if_data *sdata,
static int static int
ieee80211_set_color_change_beacon(struct ieee80211_sub_if_data *sdata, ieee80211_set_color_change_beacon(struct ieee80211_sub_if_data *sdata,
struct cfg80211_color_change_settings *params, struct cfg80211_color_change_settings *params,
u32 *changed) u64 *changed)
{ {
struct ieee80211_color_change_settings color_change = {}; struct ieee80211_color_change_settings color_change = {};
int err; int err;
...@@ -4667,12 +4665,11 @@ ieee80211_set_color_change_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -4667,12 +4665,11 @@ ieee80211_set_color_change_beacon(struct ieee80211_sub_if_data *sdata,
err = ieee80211_assign_beacon(sdata, &sdata->deflink, err = ieee80211_assign_beacon(sdata, &sdata->deflink,
&params->beacon_color_change, &params->beacon_color_change,
NULL, &color_change); NULL, &color_change, changed);
if (err < 0) { if (err < 0) {
ieee80211_free_next_beacon(&sdata->deflink); ieee80211_free_next_beacon(&sdata->deflink);
return err; return err;
} }
*changed |= err;
break; break;
default: default:
return -EOPNOTSUPP; return -EOPNOTSUPP;
...@@ -4683,7 +4680,7 @@ ieee80211_set_color_change_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -4683,7 +4680,7 @@ ieee80211_set_color_change_beacon(struct ieee80211_sub_if_data *sdata,
static void static void
ieee80211_color_change_bss_config_notify(struct ieee80211_sub_if_data *sdata, ieee80211_color_change_bss_config_notify(struct ieee80211_sub_if_data *sdata,
u8 color, int enable, u32 changed) u8 color, int enable, u64 changed)
{ {
sdata->vif.bss_conf.he_bss_color.color = color; sdata->vif.bss_conf.he_bss_color.color = color;
sdata->vif.bss_conf.he_bss_color.enabled = enable; sdata->vif.bss_conf.he_bss_color.enabled = enable;
...@@ -4711,7 +4708,7 @@ ieee80211_color_change_bss_config_notify(struct ieee80211_sub_if_data *sdata, ...@@ -4711,7 +4708,7 @@ ieee80211_color_change_bss_config_notify(struct ieee80211_sub_if_data *sdata,
static int ieee80211_color_change_finalize(struct ieee80211_sub_if_data *sdata) static int ieee80211_color_change_finalize(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
u32 changed = 0; u64 changed = 0;
int err; int err;
sdata_assert_lock(sdata); sdata_assert_lock(sdata);
...@@ -4808,7 +4805,7 @@ ieee80211_color_change(struct wiphy *wiphy, struct net_device *dev, ...@@ -4808,7 +4805,7 @@ ieee80211_color_change(struct wiphy *wiphy, struct net_device *dev,
{ {
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
u32 changed = 0; u64 changed = 0;
int err; int err;
sdata_assert_lock(sdata); sdata_assert_lock(sdata);
......
...@@ -1238,7 +1238,7 @@ ieee80211_link_use_reserved_reassign(struct ieee80211_link_data *link) ...@@ -1238,7 +1238,7 @@ ieee80211_link_use_reserved_reassign(struct ieee80211_link_data *link)
struct ieee80211_vif_chanctx_switch vif_chsw[1] = {}; struct ieee80211_vif_chanctx_switch vif_chsw[1] = {};
struct ieee80211_chanctx *old_ctx, *new_ctx; struct ieee80211_chanctx *old_ctx, *new_ctx;
const struct cfg80211_chan_def *chandef; const struct cfg80211_chan_def *chandef;
u32 changed = 0; u64 changed = 0;
int err; int err;
lockdep_assert_held(&local->mtx); lockdep_assert_held(&local->mtx);
...@@ -1634,7 +1634,7 @@ static int ieee80211_vif_use_reserved_switch(struct ieee80211_local *local) ...@@ -1634,7 +1634,7 @@ static int ieee80211_vif_use_reserved_switch(struct ieee80211_local *local)
reserved_chanctx_list) { reserved_chanctx_list) {
struct ieee80211_sub_if_data *sdata = link->sdata; struct ieee80211_sub_if_data *sdata = link->sdata;
struct ieee80211_bss_conf *link_conf = link->conf; struct ieee80211_bss_conf *link_conf = link->conf;
u32 changed = 0; u64 changed = 0;
if (!ieee80211_link_has_in_place_reservation(link)) if (!ieee80211_link_has_in_place_reservation(link))
continue; continue;
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* Copyright 2009, Johannes Berg <johannes@sipsolutions.net> * Copyright 2009, Johannes Berg <johannes@sipsolutions.net>
* Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2013-2014 Intel Mobile Communications GmbH
* Copyright(c) 2016 Intel Deutschland GmbH * Copyright(c) 2016 Intel Deutschland GmbH
* Copyright(c) 2018-2022 Intel Corporation * Copyright(c) 2018-2023 Intel Corporation
*/ */
#include <linux/delay.h> #include <linux/delay.h>
...@@ -226,7 +226,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, ...@@ -226,7 +226,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct ieee80211_mgmt *mgmt; struct ieee80211_mgmt *mgmt;
struct cfg80211_bss *bss; struct cfg80211_bss *bss;
u32 bss_change; u64 bss_change;
struct cfg80211_chan_def chandef; struct cfg80211_chan_def chandef;
struct ieee80211_channel *chan; struct ieee80211_channel *chan;
struct beacon_data *presp; struct beacon_data *presp;
...@@ -478,7 +478,8 @@ static void ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, ...@@ -478,7 +478,8 @@ static void ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
} }
int ieee80211_ibss_csa_beacon(struct ieee80211_sub_if_data *sdata, int ieee80211_ibss_csa_beacon(struct ieee80211_sub_if_data *sdata,
struct cfg80211_csa_settings *csa_settings) struct cfg80211_csa_settings *csa_settings,
u64 *changed)
{ {
struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
struct beacon_data *presp, *old_presp; struct beacon_data *presp, *old_presp;
...@@ -520,10 +521,11 @@ int ieee80211_ibss_csa_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -520,10 +521,11 @@ int ieee80211_ibss_csa_beacon(struct ieee80211_sub_if_data *sdata,
if (old_presp) if (old_presp)
kfree_rcu(old_presp, rcu_head); kfree_rcu(old_presp, rcu_head);
return BSS_CHANGED_BEACON; *changed |= BSS_CHANGED_BEACON;
return 0;
} }
int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata) int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata, u64 *changed)
{ {
struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
struct cfg80211_bss *cbss; struct cfg80211_bss *cbss;
...@@ -552,7 +554,7 @@ int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata) ...@@ -552,7 +554,7 @@ int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata)
ifibss->chandef = sdata->deflink.csa_chandef; ifibss->chandef = sdata->deflink.csa_chandef;
/* generate the beacon */ /* generate the beacon */
return ieee80211_ibss_csa_beacon(sdata, NULL); return ieee80211_ibss_csa_beacon(sdata, NULL, changed);
} }
void ieee80211_ibss_stop(struct ieee80211_sub_if_data *sdata) void ieee80211_ibss_stop(struct ieee80211_sub_if_data *sdata)
...@@ -1754,7 +1756,7 @@ void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local) ...@@ -1754,7 +1756,7 @@ void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local)
int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata, int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
struct cfg80211_ibss_params *params) struct cfg80211_ibss_params *params)
{ {
u32 changed = 0; u64 changed = 0;
u32 rate_flags; u32 rate_flags;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
enum ieee80211_chanctx_mode chanmode; enum ieee80211_chanctx_mode chanmode;
......
...@@ -1827,7 +1827,7 @@ void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata, ...@@ -1827,7 +1827,7 @@ void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
struct ieee80211_link_data *link, struct ieee80211_link_data *link,
u64 changed); u64 changed);
void ieee80211_configure_filter(struct ieee80211_local *local); void ieee80211_configure_filter(struct ieee80211_local *local);
u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata); u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata);
u64 ieee80211_mgmt_tx_cookie(struct ieee80211_local *local); u64 ieee80211_mgmt_tx_cookie(struct ieee80211_local *local);
int ieee80211_attach_ack_skb(struct ieee80211_local *local, struct sk_buff *skb, int ieee80211_attach_ack_skb(struct ieee80211_local *local, struct sk_buff *skb,
...@@ -1887,8 +1887,10 @@ void ieee80211_ibss_work(struct ieee80211_sub_if_data *sdata); ...@@ -1887,8 +1887,10 @@ void ieee80211_ibss_work(struct ieee80211_sub_if_data *sdata);
void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb); struct sk_buff *skb);
int ieee80211_ibss_csa_beacon(struct ieee80211_sub_if_data *sdata, int ieee80211_ibss_csa_beacon(struct ieee80211_sub_if_data *sdata,
struct cfg80211_csa_settings *csa_settings); struct cfg80211_csa_settings *csa_settings,
int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata); u64 *changed);
int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata,
u64 *changed);
void ieee80211_ibss_stop(struct ieee80211_sub_if_data *sdata); void ieee80211_ibss_stop(struct ieee80211_sub_if_data *sdata);
/* OCB code */ /* OCB code */
...@@ -1905,8 +1907,10 @@ void ieee80211_mesh_work(struct ieee80211_sub_if_data *sdata); ...@@ -1905,8 +1907,10 @@ void ieee80211_mesh_work(struct ieee80211_sub_if_data *sdata);
void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb); struct sk_buff *skb);
int ieee80211_mesh_csa_beacon(struct ieee80211_sub_if_data *sdata, int ieee80211_mesh_csa_beacon(struct ieee80211_sub_if_data *sdata,
struct cfg80211_csa_settings *csa_settings); struct cfg80211_csa_settings *csa_settings,
int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata); u64 *changed);
int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata,
u64 *changed);
/* scan/BSS handling */ /* scan/BSS handling */
void ieee80211_scan_work(struct work_struct *work); void ieee80211_scan_work(struct work_struct *work);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* Copyright 2008, Johannes Berg <johannes@sipsolutions.net> * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
* Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2013-2014 Intel Mobile Communications GmbH
* Copyright (c) 2016 Intel Deutschland GmbH * Copyright (c) 2016 Intel Deutschland GmbH
* Copyright (C) 2018-2022 Intel Corporation * Copyright (C) 2018-2023 Intel Corporation
*/ */
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -1221,7 +1221,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) ...@@ -1221,7 +1221,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
struct net_device *dev = wdev->netdev; struct net_device *dev = wdev->netdev;
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
u32 changed = 0; u64 changed = 0;
int res; int res;
u32 hw_reconf_flags = 0; u32 hw_reconf_flags = 0;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
* Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2013-2014 Intel Mobile Communications GmbH
* Copyright (C) 2017 Intel Deutschland GmbH * Copyright (C) 2017 Intel Deutschland GmbH
* Copyright (C) 2018-2022 Intel Corporation * Copyright (C) 2018-2023 Intel Corporation
*/ */
#include <net/mac80211.h> #include <net/mac80211.h>
...@@ -291,7 +291,7 @@ void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata, ...@@ -291,7 +291,7 @@ void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
drv_link_info_changed(local, sdata, link->conf, link->link_id, changed); drv_link_info_changed(local, sdata, link->conf, link->link_id, changed);
} }
u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata) u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
{ {
sdata->vif.bss_conf.use_cts_prot = false; sdata->vif.bss_conf.use_cts_prot = false;
sdata->vif.bss_conf.use_short_preamble = false; sdata->vif.bss_conf.use_short_preamble = false;
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2008, 2009 open80211s Ltd. * Copyright (c) 2008, 2009 open80211s Ltd.
* Copyright (C) 2018 - 2022 Intel Corporation * Copyright (C) 2018 - 2023 Intel Corporation
* Authors: Luis Carlos Cobo <luisca@cozybit.com> * Authors: Luis Carlos Cobo <luisca@cozybit.com>
* Javier Cardona <javier@cozybit.com> * Javier Cardona <javier@cozybit.com>
*/ */
...@@ -133,10 +133,10 @@ bool mesh_peer_accepts_plinks(struct ieee802_11_elems *ie) ...@@ -133,10 +133,10 @@ bool mesh_peer_accepts_plinks(struct ieee802_11_elems *ie)
* *
* Returns: beacon changed flag if the beacon content changed. * Returns: beacon changed flag if the beacon content changed.
*/ */
u32 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata) u64 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata)
{ {
bool free_plinks; bool free_plinks;
u32 changed = 0; u64 changed = 0;
/* In case mesh_plink_free_count > 0 and mesh_plinktbl_capacity == 0, /* In case mesh_plink_free_count > 0 and mesh_plinktbl_capacity == 0,
* the mesh interface might be able to establish plinks with peers that * the mesh interface might be able to establish plinks with peers that
...@@ -162,7 +162,7 @@ u32 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata) ...@@ -162,7 +162,7 @@ u32 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata)
void mesh_sta_cleanup(struct sta_info *sta) void mesh_sta_cleanup(struct sta_info *sta)
{ {
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
u32 changed = mesh_plink_deactivate(sta); u64 changed = mesh_plink_deactivate(sta);
if (changed) if (changed)
ieee80211_mbss_info_change_notify(sdata, changed); ieee80211_mbss_info_change_notify(sdata, changed);
...@@ -923,7 +923,7 @@ unsigned int ieee80211_new_mesh_header(struct ieee80211_sub_if_data *sdata, ...@@ -923,7 +923,7 @@ unsigned int ieee80211_new_mesh_header(struct ieee80211_sub_if_data *sdata,
static void ieee80211_mesh_housekeeping(struct ieee80211_sub_if_data *sdata) static void ieee80211_mesh_housekeeping(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
u32 changed; u64 changed;
if (ifmsh->mshcfg.plink_timeout > 0) if (ifmsh->mshcfg.plink_timeout > 0)
ieee80211_sta_expire(sdata, ifmsh->mshcfg.plink_timeout * HZ); ieee80211_sta_expire(sdata, ifmsh->mshcfg.plink_timeout * HZ);
...@@ -1164,7 +1164,7 @@ ieee80211_mesh_rebuild_beacon(struct ieee80211_sub_if_data *sdata) ...@@ -1164,7 +1164,7 @@ ieee80211_mesh_rebuild_beacon(struct ieee80211_sub_if_data *sdata)
} }
void ieee80211_mbss_info_change_notify(struct ieee80211_sub_if_data *sdata, void ieee80211_mbss_info_change_notify(struct ieee80211_sub_if_data *sdata,
u32 changed) u64 changed)
{ {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
unsigned long bits = changed; unsigned long bits = changed;
...@@ -1184,7 +1184,7 @@ int ieee80211_start_mesh(struct ieee80211_sub_if_data *sdata) ...@@ -1184,7 +1184,7 @@ int ieee80211_start_mesh(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
u32 changed = BSS_CHANGED_BEACON | u64 changed = BSS_CHANGED_BEACON |
BSS_CHANGED_BEACON_ENABLED | BSS_CHANGED_BEACON_ENABLED |
BSS_CHANGED_HT | BSS_CHANGED_HT |
BSS_CHANGED_BASIC_RATES | BSS_CHANGED_BASIC_RATES |
...@@ -1525,12 +1525,11 @@ static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, ...@@ -1525,12 +1525,11 @@ static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
kfree(elems); kfree(elems);
} }
int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata) int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata, u64 *changed)
{ {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
struct mesh_csa_settings *tmp_csa_settings; struct mesh_csa_settings *tmp_csa_settings;
int ret = 0; int ret = 0;
int changed = 0;
/* Reset the TTL value and Initiator flag */ /* Reset the TTL value and Initiator flag */
ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE; ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE;
...@@ -1545,15 +1544,16 @@ int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata) ...@@ -1545,15 +1544,16 @@ int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata)
if (ret) if (ret)
return -EINVAL; return -EINVAL;
changed |= BSS_CHANGED_BEACON; *changed |= BSS_CHANGED_BEACON;
mcsa_dbg(sdata, "complete switching to center freq %d MHz", mcsa_dbg(sdata, "complete switching to center freq %d MHz",
sdata->vif.bss_conf.chandef.chan->center_freq); sdata->vif.bss_conf.chandef.chan->center_freq);
return changed; return 0;
} }
int ieee80211_mesh_csa_beacon(struct ieee80211_sub_if_data *sdata, int ieee80211_mesh_csa_beacon(struct ieee80211_sub_if_data *sdata,
struct cfg80211_csa_settings *csa_settings) struct cfg80211_csa_settings *csa_settings,
u64 *changed)
{ {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
struct mesh_csa_settings *tmp_csa_settings; struct mesh_csa_settings *tmp_csa_settings;
...@@ -1579,7 +1579,8 @@ int ieee80211_mesh_csa_beacon(struct ieee80211_sub_if_data *sdata, ...@@ -1579,7 +1579,8 @@ int ieee80211_mesh_csa_beacon(struct ieee80211_sub_if_data *sdata,
return ret; return ret;
} }
return BSS_CHANGED_BEACON; *changed |= BSS_CHANGED_BEACON;
return 0;
} }
static int mesh_fwd_csa_frame(struct ieee80211_sub_if_data *sdata, static int mesh_fwd_csa_frame(struct ieee80211_sub_if_data *sdata,
...@@ -1720,7 +1721,8 @@ void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, ...@@ -1720,7 +1721,8 @@ void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
static void mesh_bss_info_changed(struct ieee80211_sub_if_data *sdata) static void mesh_bss_info_changed(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
u32 bit, changed = 0; u32 bit;
u64 changed = 0;
for_each_set_bit(bit, &ifmsh->mbss_changed, for_each_set_bit(bit, &ifmsh->mbss_changed,
sizeof(changed) * BITS_PER_BYTE) { sizeof(changed) * BITS_PER_BYTE) {
......
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
/* /*
* Copyright (c) 2008, 2009 open80211s Ltd. * Copyright (c) 2008, 2009 open80211s Ltd.
* Copyright (C) 2023 Intel Corporation
* Authors: Luis Carlos Cobo <luisca@cozybit.com> * Authors: Luis Carlos Cobo <luisca@cozybit.com>
* Javier Cardona <javier@cozybit.com> * Javier Cardona <javier@cozybit.com>
*/ */
...@@ -252,11 +253,11 @@ void ieee80211_mesh_root_setup(struct ieee80211_if_mesh *ifmsh); ...@@ -252,11 +253,11 @@ void ieee80211_mesh_root_setup(struct ieee80211_if_mesh *ifmsh);
const struct ieee80211_mesh_sync_ops *ieee80211_mesh_sync_ops_get(u8 method); const struct ieee80211_mesh_sync_ops *ieee80211_mesh_sync_ops_get(u8 method);
/* wrapper for ieee80211_bss_info_change_notify() */ /* wrapper for ieee80211_bss_info_change_notify() */
void ieee80211_mbss_info_change_notify(struct ieee80211_sub_if_data *sdata, void ieee80211_mbss_info_change_notify(struct ieee80211_sub_if_data *sdata,
u32 changed); u64 changed);
/* mesh power save */ /* mesh power save */
u32 ieee80211_mps_local_status_update(struct ieee80211_sub_if_data *sdata); u64 ieee80211_mps_local_status_update(struct ieee80211_sub_if_data *sdata);
u32 ieee80211_mps_set_sta_local_pm(struct sta_info *sta, u64 ieee80211_mps_set_sta_local_pm(struct sta_info *sta,
enum nl80211_mesh_power_mode pm); enum nl80211_mesh_power_mode pm);
void ieee80211_mps_set_frame_flags(struct ieee80211_sub_if_data *sdata, void ieee80211_mps_set_frame_flags(struct ieee80211_sub_if_data *sdata,
struct sta_info *sta, struct sta_info *sta,
...@@ -303,12 +304,12 @@ void mesh_neighbour_update(struct ieee80211_sub_if_data *sdata, ...@@ -303,12 +304,12 @@ void mesh_neighbour_update(struct ieee80211_sub_if_data *sdata,
u8 *hw_addr, struct ieee802_11_elems *ie, u8 *hw_addr, struct ieee802_11_elems *ie,
struct ieee80211_rx_status *rx_status); struct ieee80211_rx_status *rx_status);
bool mesh_peer_accepts_plinks(struct ieee802_11_elems *ie); bool mesh_peer_accepts_plinks(struct ieee802_11_elems *ie);
u32 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata); u64 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata);
void mesh_plink_timer(struct timer_list *t); void mesh_plink_timer(struct timer_list *t);
void mesh_plink_broken(struct sta_info *sta); void mesh_plink_broken(struct sta_info *sta);
u32 mesh_plink_deactivate(struct sta_info *sta); u64 mesh_plink_deactivate(struct sta_info *sta);
u32 mesh_plink_open(struct sta_info *sta); u64 mesh_plink_open(struct sta_info *sta);
u32 mesh_plink_block(struct sta_info *sta); u64 mesh_plink_block(struct sta_info *sta);
void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata,
struct ieee80211_mgmt *mgmt, size_t len, struct ieee80211_mgmt *mgmt, size_t len,
struct ieee80211_rx_status *rx_status); struct ieee80211_rx_status *rx_status);
...@@ -349,14 +350,14 @@ void mesh_path_refresh(struct ieee80211_sub_if_data *sdata, ...@@ -349,14 +350,14 @@ void mesh_path_refresh(struct ieee80211_sub_if_data *sdata,
#ifdef CONFIG_MAC80211_MESH #ifdef CONFIG_MAC80211_MESH
static inline static inline
u32 mesh_plink_inc_estab_count(struct ieee80211_sub_if_data *sdata) u64 mesh_plink_inc_estab_count(struct ieee80211_sub_if_data *sdata)
{ {
atomic_inc(&sdata->u.mesh.estab_plinks); atomic_inc(&sdata->u.mesh.estab_plinks);
return mesh_accept_plinks_update(sdata) | BSS_CHANGED_BEACON; return mesh_accept_plinks_update(sdata) | BSS_CHANGED_BEACON;
} }
static inline static inline
u32 mesh_plink_dec_estab_count(struct ieee80211_sub_if_data *sdata) u64 mesh_plink_dec_estab_count(struct ieee80211_sub_if_data *sdata)
{ {
atomic_dec(&sdata->u.mesh.estab_plinks); atomic_dec(&sdata->u.mesh.estab_plinks);
return mesh_accept_plinks_update(sdata) | BSS_CHANGED_BEACON; return mesh_accept_plinks_update(sdata) | BSS_CHANGED_BEACON;
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2008, 2009 open80211s Ltd. * Copyright (c) 2008, 2009 open80211s Ltd.
* Copyright (C) 2019, 2021-2022 Intel Corporation * Copyright (C) 2019, 2021-2023 Intel Corporation
* Author: Luis Carlos Cobo <luisca@cozybit.com> * Author: Luis Carlos Cobo <luisca@cozybit.com>
*/ */
#include <linux/gfp.h> #include <linux/gfp.h>
...@@ -90,12 +90,13 @@ static inline void mesh_plink_fsm_restart(struct sta_info *sta) ...@@ -90,12 +90,13 @@ static inline void mesh_plink_fsm_restart(struct sta_info *sta)
* *
* Returns BSS_CHANGED_ERP_SLOT or 0 for no change. * Returns BSS_CHANGED_ERP_SLOT or 0 for no change.
*/ */
static u32 mesh_set_short_slot_time(struct ieee80211_sub_if_data *sdata) static u64 mesh_set_short_slot_time(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
struct sta_info *sta; struct sta_info *sta;
u32 erp_rates = 0, changed = 0; u32 erp_rates = 0;
u64 changed = 0;
int i; int i;
bool short_slot = false; bool short_slot = false;
...@@ -153,7 +154,7 @@ static u32 mesh_set_short_slot_time(struct ieee80211_sub_if_data *sdata) ...@@ -153,7 +154,7 @@ static u32 mesh_set_short_slot_time(struct ieee80211_sub_if_data *sdata)
* is selected if all peers in our 20/40MHz MBSS support HT and at least one * is selected if all peers in our 20/40MHz MBSS support HT and at least one
* HT20 peer is present. Otherwise no-protection mode is selected. * HT20 peer is present. Otherwise no-protection mode is selected.
*/ */
static u32 mesh_set_ht_prot_mode(struct ieee80211_sub_if_data *sdata) static u64 mesh_set_ht_prot_mode(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct sta_info *sta; struct sta_info *sta;
...@@ -365,10 +366,10 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata, ...@@ -365,10 +366,10 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
* *
* Locking: the caller must hold sta->mesh->plink_lock * Locking: the caller must hold sta->mesh->plink_lock
*/ */
static u32 __mesh_plink_deactivate(struct sta_info *sta) static u64 __mesh_plink_deactivate(struct sta_info *sta)
{ {
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
u32 changed = 0; u64 changed = 0;
lockdep_assert_held(&sta->mesh->plink_lock); lockdep_assert_held(&sta->mesh->plink_lock);
...@@ -390,10 +391,10 @@ static u32 __mesh_plink_deactivate(struct sta_info *sta) ...@@ -390,10 +391,10 @@ static u32 __mesh_plink_deactivate(struct sta_info *sta)
* *
* All mesh paths with this peer as next hop will be flushed * All mesh paths with this peer as next hop will be flushed
*/ */
u32 mesh_plink_deactivate(struct sta_info *sta) u64 mesh_plink_deactivate(struct sta_info *sta)
{ {
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
u32 changed; u64 changed;
spin_lock_bh(&sta->mesh->plink_lock); spin_lock_bh(&sta->mesh->plink_lock);
changed = __mesh_plink_deactivate(sta); changed = __mesh_plink_deactivate(sta);
...@@ -622,7 +623,7 @@ void mesh_neighbour_update(struct ieee80211_sub_if_data *sdata, ...@@ -622,7 +623,7 @@ void mesh_neighbour_update(struct ieee80211_sub_if_data *sdata,
struct ieee80211_rx_status *rx_status) struct ieee80211_rx_status *rx_status)
{ {
struct sta_info *sta; struct sta_info *sta;
u32 changed = 0; u64 changed = 0;
sta = mesh_sta_info_get(sdata, hw_addr, elems, rx_status); sta = mesh_sta_info_get(sdata, hw_addr, elems, rx_status);
if (!sta) if (!sta)
...@@ -775,10 +776,10 @@ static u16 mesh_get_new_llid(struct ieee80211_sub_if_data *sdata) ...@@ -775,10 +776,10 @@ static u16 mesh_get_new_llid(struct ieee80211_sub_if_data *sdata)
return llid; return llid;
} }
u32 mesh_plink_open(struct sta_info *sta) u64 mesh_plink_open(struct sta_info *sta)
{ {
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
u32 changed; u64 changed;
if (!test_sta_flag(sta, WLAN_STA_AUTH)) if (!test_sta_flag(sta, WLAN_STA_AUTH))
return 0; return 0;
...@@ -805,9 +806,9 @@ u32 mesh_plink_open(struct sta_info *sta) ...@@ -805,9 +806,9 @@ u32 mesh_plink_open(struct sta_info *sta)
return changed; return changed;
} }
u32 mesh_plink_block(struct sta_info *sta) u64 mesh_plink_block(struct sta_info *sta)
{ {
u32 changed; u64 changed;
spin_lock_bh(&sta->mesh->plink_lock); spin_lock_bh(&sta->mesh->plink_lock);
changed = __mesh_plink_deactivate(sta); changed = __mesh_plink_deactivate(sta);
...@@ -831,11 +832,11 @@ static void mesh_plink_close(struct ieee80211_sub_if_data *sdata, ...@@ -831,11 +832,11 @@ static void mesh_plink_close(struct ieee80211_sub_if_data *sdata,
mod_plink_timer(sta, mshcfg->dot11MeshHoldingTimeout); mod_plink_timer(sta, mshcfg->dot11MeshHoldingTimeout);
} }
static u32 mesh_plink_establish(struct ieee80211_sub_if_data *sdata, static u64 mesh_plink_establish(struct ieee80211_sub_if_data *sdata,
struct sta_info *sta) struct sta_info *sta)
{ {
struct mesh_config *mshcfg = &sdata->u.mesh.mshcfg; struct mesh_config *mshcfg = &sdata->u.mesh.mshcfg;
u32 changed = 0; u64 changed = 0;
del_timer(&sta->mesh->plink_timer); del_timer(&sta->mesh->plink_timer);
sta->mesh->plink_state = NL80211_PLINK_ESTAB; sta->mesh->plink_state = NL80211_PLINK_ESTAB;
...@@ -857,12 +858,12 @@ static u32 mesh_plink_establish(struct ieee80211_sub_if_data *sdata, ...@@ -857,12 +858,12 @@ static u32 mesh_plink_establish(struct ieee80211_sub_if_data *sdata,
* *
* Return: changed MBSS flags * Return: changed MBSS flags
*/ */
static u32 mesh_plink_fsm(struct ieee80211_sub_if_data *sdata, static u64 mesh_plink_fsm(struct ieee80211_sub_if_data *sdata,
struct sta_info *sta, enum plink_event event) struct sta_info *sta, enum plink_event event)
{ {
struct mesh_config *mshcfg = &sdata->u.mesh.mshcfg; struct mesh_config *mshcfg = &sdata->u.mesh.mshcfg;
enum ieee80211_self_protected_actioncode action = 0; enum ieee80211_self_protected_actioncode action = 0;
u32 changed = 0; u64 changed = 0;
bool flush = false; bool flush = false;
mpl_dbg(sdata, "peer %pM in state %s got event %s\n", sta->sta.addr, mpl_dbg(sdata, "peer %pM in state %s got event %s\n", sta->sta.addr,
...@@ -1117,7 +1118,7 @@ mesh_process_plink_frame(struct ieee80211_sub_if_data *sdata, ...@@ -1117,7 +1118,7 @@ mesh_process_plink_frame(struct ieee80211_sub_if_data *sdata,
struct sta_info *sta; struct sta_info *sta;
enum plink_event event; enum plink_event event;
enum ieee80211_self_protected_actioncode ftype; enum ieee80211_self_protected_actioncode ftype;
u32 changed = 0; u64 changed = 0;
u8 ie_len = elems->peering_len; u8 ie_len = elems->peering_len;
u16 plid, llid = 0; u16 plid, llid = 0;
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* Copyright 2012-2013, Marco Porsch <marco.porsch@s2005.tu-chemnitz.de> * Copyright 2012-2013, Marco Porsch <marco.porsch@s2005.tu-chemnitz.de>
* Copyright 2012-2013, cozybit Inc. * Copyright 2012-2013, cozybit Inc.
* Copyright (C) 2021 Intel Corporation * Copyright (C) 2021 Intel Corporation
* Copyright (C) 2023 Intel Corporation
*/ */
#include "mesh.h" #include "mesh.h"
...@@ -77,14 +78,14 @@ static void mps_qos_null_tx(struct sta_info *sta) ...@@ -77,14 +78,14 @@ static void mps_qos_null_tx(struct sta_info *sta)
* sets the non-peer power mode and triggers the driver PS (re-)configuration * sets the non-peer power mode and triggers the driver PS (re-)configuration
* Return BSS_CHANGED_BEACON if a beacon update is necessary. * Return BSS_CHANGED_BEACON if a beacon update is necessary.
*/ */
u32 ieee80211_mps_local_status_update(struct ieee80211_sub_if_data *sdata) u64 ieee80211_mps_local_status_update(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
struct sta_info *sta; struct sta_info *sta;
bool peering = false; bool peering = false;
int light_sleep_cnt = 0; int light_sleep_cnt = 0;
int deep_sleep_cnt = 0; int deep_sleep_cnt = 0;
u32 changed = 0; u64 changed = 0;
enum nl80211_mesh_power_mode nonpeer_pm; enum nl80211_mesh_power_mode nonpeer_pm;
rcu_read_lock(); rcu_read_lock();
...@@ -148,7 +149,7 @@ u32 ieee80211_mps_local_status_update(struct ieee80211_sub_if_data *sdata) ...@@ -148,7 +149,7 @@ u32 ieee80211_mps_local_status_update(struct ieee80211_sub_if_data *sdata)
* @pm: the power mode to set * @pm: the power mode to set
* Return BSS_CHANGED_BEACON if a beacon update is in order. * Return BSS_CHANGED_BEACON if a beacon update is in order.
*/ */
u32 ieee80211_mps_set_sta_local_pm(struct sta_info *sta, u64 ieee80211_mps_set_sta_local_pm(struct sta_info *sta,
enum nl80211_mesh_power_mode pm) enum nl80211_mesh_power_mode pm)
{ {
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
......
...@@ -2109,7 +2109,7 @@ static void ieee80211_find_cisco_dtpc(struct ieee80211_sub_if_data *sdata, ...@@ -2109,7 +2109,7 @@ static void ieee80211_find_cisco_dtpc(struct ieee80211_sub_if_data *sdata,
*pwr_level = (__s8)cisco_dtpc_ie[4]; *pwr_level = (__s8)cisco_dtpc_ie[4];
} }
static u32 ieee80211_handle_pwr_constr(struct ieee80211_link_data *link, static u64 ieee80211_handle_pwr_constr(struct ieee80211_link_data *link,
struct ieee80211_channel *channel, struct ieee80211_channel *channel,
struct ieee80211_mgmt *mgmt, struct ieee80211_mgmt *mgmt,
const u8 *country_ie, u8 country_ie_len, const u8 *country_ie, u8 country_ie_len,
...@@ -2699,12 +2699,12 @@ static void ieee80211_stop_poll(struct ieee80211_sub_if_data *sdata) ...@@ -2699,12 +2699,12 @@ static void ieee80211_stop_poll(struct ieee80211_sub_if_data *sdata)
mutex_unlock(&sdata->local->mtx); mutex_unlock(&sdata->local->mtx);
} }
static u32 ieee80211_handle_bss_capability(struct ieee80211_link_data *link, static u64 ieee80211_handle_bss_capability(struct ieee80211_link_data *link,
u16 capab, bool erp_valid, u8 erp) u16 capab, bool erp_valid, u8 erp)
{ {
struct ieee80211_bss_conf *bss_conf = link->conf; struct ieee80211_bss_conf *bss_conf = link->conf;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
u32 changed = 0; u64 changed = 0;
bool use_protection; bool use_protection;
bool use_short_preamble; bool use_short_preamble;
bool use_short_slot; bool use_short_slot;
...@@ -2750,7 +2750,7 @@ static u64 ieee80211_link_set_associated(struct ieee80211_link_data *link, ...@@ -2750,7 +2750,7 @@ static u64 ieee80211_link_set_associated(struct ieee80211_link_data *link,
struct ieee80211_sub_if_data *sdata = link->sdata; struct ieee80211_sub_if_data *sdata = link->sdata;
struct ieee80211_bss_conf *bss_conf = link->conf; struct ieee80211_bss_conf *bss_conf = link->conf;
struct ieee80211_bss *bss = (void *)cbss->priv; struct ieee80211_bss *bss = (void *)cbss->priv;
u32 changed = BSS_CHANGED_QOS; u64 changed = BSS_CHANGED_QOS;
/* not really used in MLO */ /* not really used in MLO */
sdata->u.mgd.beacon_timeout = sdata->u.mgd.beacon_timeout =
...@@ -2888,7 +2888,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, ...@@ -2888,7 +2888,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
unsigned int link_id; unsigned int link_id;
u32 changed = 0; u64 changed = 0;
struct ieee80211_prep_tx_info info = { struct ieee80211_prep_tx_info info = {
.subtype = stype, .subtype = stype,
}; };
...@@ -3959,7 +3959,7 @@ static bool ieee80211_twt_req_supported(struct ieee80211_sub_if_data *sdata, ...@@ -3959,7 +3959,7 @@ static bool ieee80211_twt_req_supported(struct ieee80211_sub_if_data *sdata,
IEEE80211_HE_MAC_CAP0_TWT_REQ); IEEE80211_HE_MAC_CAP0_TWT_REQ);
} }
static int ieee80211_recalc_twt_req(struct ieee80211_sub_if_data *sdata, static u64 ieee80211_recalc_twt_req(struct ieee80211_sub_if_data *sdata,
struct ieee80211_supported_band *sband, struct ieee80211_supported_band *sband,
struct ieee80211_link_data *link, struct ieee80211_link_data *link,
struct link_sta_info *link_sta, struct link_sta_info *link_sta,
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* *
* Copyright: (c) 2014 Czech Technical University in Prague * Copyright: (c) 2014 Czech Technical University in Prague
* (c) 2014 Volkswagen Group Research * (c) 2014 Volkswagen Group Research
* Copyright (C) 2022 Intel Corporation * Copyright (C) 2022 - 2023 Intel Corporation
* Author: Rostislav Lisovy <rostislav.lisovy@fel.cvut.cz> * Author: Rostislav Lisovy <rostislav.lisovy@fel.cvut.cz>
* Funded by: Volkswagen Group Research * Funded by: Volkswagen Group Research
*/ */
...@@ -175,7 +175,7 @@ int ieee80211_ocb_join(struct ieee80211_sub_if_data *sdata, ...@@ -175,7 +175,7 @@ int ieee80211_ocb_join(struct ieee80211_sub_if_data *sdata,
{ {
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; struct ieee80211_if_ocb *ifocb = &sdata->u.ocb;
u32 changed = BSS_CHANGED_OCB | BSS_CHANGED_BSSID; u64 changed = BSS_CHANGED_OCB | BSS_CHANGED_BSSID;
int err; int err;
if (ifocb->joined == true) if (ifocb->joined == true)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment