Skip to content

Commit

Permalink
wifi: mac80211: add ___ieee80211_disconnect variant not locking sdata
Browse files Browse the repository at this point in the history
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 <benjamin.berg@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Benjamin Berg authored and Johannes Berg committed Jun 19, 2023
1 parent 065563b commit ff32b45
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions net/mac80211/mlme.c
Original file line number Diff line number Diff line change
Expand Up @@ -3353,18 +3353,15 @@ static void ieee80211_report_disconnect(struct ieee80211_sub_if_data *sdata,
drv_event_callback(sdata->local, sdata, &event);
}

static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
static void ___ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
{
struct ieee80211_local *local = sdata->local;
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN];
bool tx;

sdata_lock(sdata);
if (!ifmgd->associated) {
sdata_unlock(sdata);
if (!ifmgd->associated)
return;
}

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

static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
{
sdata_lock(sdata);
___ieee80211_disconnect(sdata);
sdata_unlock(sdata);
}

Expand Down

0 comments on commit ff32b45

Please sign in to comment.