diff options
author | Johannes Berg <johannes.berg@intel.com> | 2022-06-24 10:57:41 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2022-07-15 11:43:15 +0200 |
commit | b2e8434f1829bb500f79b1adb80ffed2316811cf (patch) | |
tree | 841792c5012652e81cd60f5d6e158f59564365d9 /net/mac80211/ieee80211_i.h | |
parent | 94ddc3b5aa21c261be277eab8bc80f7520038a34 (diff) | |
download | linux-b2e8434f1829bb500f79b1adb80ffed2316811cf.tar.gz linux-b2e8434f1829bb500f79b1adb80ffed2316811cf.tar.bz2 linux-b2e8434f1829bb500f79b1adb80ffed2316811cf.zip |
wifi: mac80211: set up/tear down client vif links properly
In station/client mode, the link data needs a bit more
initialization and destruction than just zero-init and
kfree() respectively, implement that.
This required some shuffling of the link data handling
in general, as we should set it up in setup and do the
teardown in teardown, otherwise we're asymmetric in
case of interface type changes.
Also stop using kfree_rcu(), we cannot guarantee that
nothing is scheduling things that live within the link
(e.g. the u.mgd.request_smps_work) until we're sure it
cannot be referenced anymore, therefore synchronize
instead. This isn't very efficient, but we can always
optimize it later.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 8c14274c9aaf..05996df627ea 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -1772,6 +1772,8 @@ void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata); void ieee80211_sta_handle_tspec_ac_params(struct ieee80211_sub_if_data *sdata); void ieee80211_sta_connection_lost(struct ieee80211_sub_if_data *sdata, u8 reason, bool tx); +void ieee80211_mgd_setup_link(struct ieee80211_link_data *link); +void ieee80211_mgd_stop_link(struct ieee80211_link_data *link); /* IBSS code */ void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); |