wifi: mac80211: move TDLS work to wiphy work
PATCH 1/1 wifi: mac80211: move TDLS work to wiphy work
From: Johannes Berg <[email protected]>
[ Upstream commit 777b26002b73127e81643d9286fadf3d41e0e477 ]
Again, to have the wiphy locked for it.
Reviewed-by Emmanuel Grumbach <[email protected]>
Signed-off-by Johannes Berg <[email protected]>
(cherry picked from commit 777b26002b73127e81643d9286fadf3d41e0e477)
Signed-off-by Hanne-Lotta Mäenpää <[email protected]>
--- net/mac80211/ieee80211_i.h | 4 ++-- net/mac80211/mlme.c | 7 ++++--- net/mac80211/tdls.c | 11 ++++++----- 3 files changed, 12 insertions(+), 10 deletions(-)
net/mac80211/ieee80211_i.h +2 -2
@@ -530,7 +530,7 @@ struct ieee80211_if_managed {/* TDLS support */ u8 tdls_peer[ETH_ALEN ]__aligned(2) ; -struct delayed_work tdls_peer_del_work; +struct wiphy_delayed_work tdls_peer_del_work;struct sk_buff *orig_teardown_skb;/* The original teardown skb */ struct sk_buff *teardown_skb;/* A copy to send through the AP */ spinlock_t teardown_lock;/* To lock changing teardown_skb */
@@ -2599,7 +2599,7 @@ int ieee80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev, const u8 *extra_ies, size_t extra_ies_len);int ieee80211_tdls_oper (struct wiphy *wiphy,struct net_device *dev,const u8 *peer,enum nl80211_tdls_operation oper); -void ieee80211_tdls_peer_del_work (struct work_struct *wk); +void ieee80211_tdls_peer_del_work (struct wiphy *wiphy,struct wiphy_work *wk);int ieee80211_tdls_channel_switch (struct wiphy *wiphy,struct net_device *dev,const u8 *addr,u8 oper_class,struct cfg80211_chan_def *chandef);
net/mac80211/mlme.c +4 -3
@@ -6866,8 +6866,8 @@ void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata) ieee80211_beacon_connection_loss_work);wiphy_work_init (&ifmgd->csa_connection_drop_work, ieee80211_csa_connection_drop_work); -INIT_DELAYED_WORK (&ifmgd->tdls_peer_del_work, - ieee80211_tdls_peer_del_work); +wiphy_delayed_work_init (&ifmgd->tdls_peer_del_work, + ieee80211_tdls_peer_del_work);wiphy_delayed_work_init (&ifmgd->ml_reconf_work, ieee80211_ml_reconf_work);timer_setup (&ifmgd->timer, ieee80211_sta_timer,0 );
@@ -7881,7 +7881,8 @@ void ieee80211_mgd_stop(struct ieee80211_sub_if_data *sdata) &ifmgd->beacon_connection_loss_work);wiphy_work_cancel (sdata->local->hw.wiphy, &ifmgd->csa_connection_drop_work); -cancel_delayed_work_sync (&ifmgd->tdls_peer_del_work); +wiphy_delayed_work_cancel (sdata->local->hw.wiphy, + &ifmgd->tdls_peer_del_work);wiphy_delayed_work_cancel (sdata->local->hw.wiphy, &ifmgd->ml_reconf_work);
net/mac80211/tdls.c +6 -5
@@ -21,7 +21,7 @@/* give usermode some time for retries in setting up the TDLS session */ #define TDLS_PEER_SETUP_TIMEOUT (15 * HZ) -void ieee80211_tdls_peer_del_work (struct work_struct *wk) +void ieee80211_tdls_peer_del_work (struct wiphy *wiphy,struct wiphy_work *wk) {struct ieee80211_sub_if_data *sdata;struct ieee80211_local *local;
@@ -1224,9 +1224,9 @@ ieee80211_tdls_mgmt_setup(struct wiphy *wiphy, struct net_device *dev,return ret; } -ieee80211_queue_delayed_work (&sdata->local->hw, - &sdata->u.mgd.tdls_peer_del_work, -TDLS_PEER_SETUP_TIMEOUT ); +wiphy_delayed_work_queue (sdata->local->hw.wiphy, + &sdata->u.mgd.tdls_peer_del_work, +TDLS_PEER_SETUP_TIMEOUT );return 0 ; out_unlock:
@@ -1526,7 +1526,8 @@ int ieee80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev, }if (ret ==0 &ðer_addr_equal (sdata->u.mgd.tdls_peer, peer)) { -cancel_delayed_work (&sdata->u.mgd.tdls_peer_del_work); +wiphy_delayed_work_cancel (sdata->local->hw.wiphy, + &sdata->u.mgd.tdls_peer_del_work);eth_zero_addr (sdata->u.mgd.tdls_peer); }
Signature · 1 line
2.53.0.rc2.2.g2258446484