Skip to content

Commit ff32b45

Browse files
benzeajmberg-intel
authored andcommitted
wifi: mac80211: add ___ieee80211_disconnect variant not locking sdata
There are cases where keeping sdata locked for an operation. Add a variant that does not take sdata lock to permit these usecases. Signed-off-by: Benjamin Berg <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
1 parent 065563b commit ff32b45

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

net/mac80211/mlme.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3353,18 +3353,15 @@ static void ieee80211_report_disconnect(struct ieee80211_sub_if_data *sdata,
33533353
drv_event_callback(sdata->local, sdata, &event);
33543354
}
33553355

3356-
static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
3356+
static void ___ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
33573357
{
33583358
struct ieee80211_local *local = sdata->local;
33593359
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
33603360
u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN];
33613361
bool tx;
33623362

3363-
sdata_lock(sdata);
3364-
if (!ifmgd->associated) {
3365-
sdata_unlock(sdata);
3363+
if (!ifmgd->associated)
33663364
return;
3367-
}
33683365

33693366
/* in MLO assume we have a link where we can TX the frame */
33703367
tx = ieee80211_vif_is_mld(&sdata->vif) ||
@@ -3413,7 +3410,12 @@ static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
34133410
WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY,
34143411
ifmgd->reconnect);
34153412
ifmgd->reconnect = false;
3413+
}
34163414

3415+
static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
3416+
{
3417+
sdata_lock(sdata);
3418+
___ieee80211_disconnect(sdata);
34173419
sdata_unlock(sdata);
34183420
}
34193421

0 commit comments

Comments
 (0)