Skip to content

Commit 3a16101

Browse files
jmberg-intelopsiff
authored andcommitted
wifi: cfg80211: use cfg80211_leave() in iftype change
[ Upstream commit 7a27b73 ] When changing the interface type, all activity on the interface has to be stopped first. This was done independent of existing code in cfg80211_leave(), so didn't handle e.g. background radar detection. Use cfg80211_leave() to handle it the same way. Note that cfg80211_leave() behaves slightly differently for IBSS in wireless extensions, it won't send an event in that case. We could handle that, but since nl80211 was used to change the type, IBSS is rare, and wext is already a corner case, it doesn't seem worth it. Link: https://patch.msgid.link/20251121174021.922ef48ce007.I970c8514252ef8a864a7fbdab9591b71031dee03@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit 0283fac52b42712196e23509283f634ffa6c3b65) Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
1 parent 7b7d733 commit 3a16101

1 file changed

Lines changed: 1 addition & 22 deletions

File tree

net/wireless/util.c

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,28 +1203,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
12031203
dev->ieee80211_ptr->use_4addr = false;
12041204
rdev_set_qos_map(rdev, dev, NULL);
12051205

1206-
switch (otype) {
1207-
case NL80211_IFTYPE_AP:
1208-
case NL80211_IFTYPE_P2P_GO:
1209-
cfg80211_stop_ap(rdev, dev, -1, true);
1210-
break;
1211-
case NL80211_IFTYPE_ADHOC:
1212-
cfg80211_leave_ibss(rdev, dev, false);
1213-
break;
1214-
case NL80211_IFTYPE_STATION:
1215-
case NL80211_IFTYPE_P2P_CLIENT:
1216-
cfg80211_disconnect(rdev, dev,
1217-
WLAN_REASON_DEAUTH_LEAVING, true);
1218-
break;
1219-
case NL80211_IFTYPE_MESH_POINT:
1220-
/* mesh should be handled? */
1221-
break;
1222-
case NL80211_IFTYPE_OCB:
1223-
cfg80211_leave_ocb(rdev, dev);
1224-
break;
1225-
default:
1226-
break;
1227-
}
1206+
cfg80211_leave(rdev, dev->ieee80211_ptr);
12281207

12291208
cfg80211_process_rdev_events(rdev);
12301209
cfg80211_mlme_purge_registrations(dev->ieee80211_ptr);

0 commit comments

Comments
 (0)