wifi: mac80211: ibss: move disconnect to wiphy work
authorJohannes Berg <johannes.berg@intel.com>
Tue, 6 Jun 2023 12:49:30 +0000 (14:49 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 7 Jun 2023 17:53:27 +0000 (19:53 +0200)
Move the IBSS disconnect work to be a wiphy work.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ibss.c
net/mac80211/ieee80211_i.h

index 19017810024b06415681abcb5a524d797f65faf5..e1900077bc4b94fbb52d112d837319cc1e3eceee 100644 (file)
@@ -561,7 +561,8 @@ void ieee80211_ibss_stop(struct ieee80211_sub_if_data *sdata)
 {
        struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
 
-       cancel_work_sync(&ifibss->csa_connection_drop_work);
+       wiphy_work_cancel(sdata->local->hw.wiphy,
+                         &ifibss->csa_connection_drop_work);
 }
 
 static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta)
@@ -730,7 +731,8 @@ static void ieee80211_ibss_disconnect(struct ieee80211_sub_if_data *sdata)
        mutex_unlock(&local->mtx);
 }
 
-static void ieee80211_csa_connection_drop_work(struct work_struct *work)
+static void ieee80211_csa_connection_drop_work(struct wiphy *wiphy,
+                                              struct wiphy_work *work)
 {
        struct ieee80211_sub_if_data *sdata =
                container_of(work, struct ieee80211_sub_if_data,
@@ -896,8 +898,8 @@ ieee80211_ibss_process_chanswitch(struct ieee80211_sub_if_data *sdata,
        return true;
 disconnect:
        ibss_dbg(sdata, "Can't handle channel switch, disconnect\n");
-       ieee80211_queue_work(&sdata->local->hw,
-                            &ifibss->csa_connection_drop_work);
+       wiphy_work_queue(sdata->local->hw.wiphy,
+                        &ifibss->csa_connection_drop_work);
 
        ieee80211_ibss_csa_mark_radar(sdata);
 
@@ -1733,8 +1735,8 @@ void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata)
        timer_setup(&ifibss->timer, ieee80211_ibss_timer, 0);
        INIT_LIST_HEAD(&ifibss->incomplete_stations);
        spin_lock_init(&ifibss->incomplete_lock);
-       INIT_WORK(&ifibss->csa_connection_drop_work,
-                 ieee80211_csa_connection_drop_work);
+       wiphy_work_init(&ifibss->csa_connection_drop_work,
+                       ieee80211_csa_connection_drop_work);
 }
 
 /* scan finished notification */
index b39a923cdd0efa4f4b3cfce7b027e64a3d4f01bb..78ac71b66fced7845ccd0f334476754c02402476 100644 (file)
@@ -553,7 +553,7 @@ struct ieee80211_if_managed {
 
 struct ieee80211_if_ibss {
        struct timer_list timer;
-       struct work_struct csa_connection_drop_work;
+       struct wiphy_work csa_connection_drop_work;
 
        unsigned long last_scan_completed;