Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

wifi: cfg80211: use cfg80211_leave() in iftype change

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>

+1 -22
+1 -22
net/wireless/util.c
··· 1203 1203 dev->ieee80211_ptr->use_4addr = false; 1204 1204 rdev_set_qos_map(rdev, dev, NULL); 1205 1205 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); 1228 1207 1229 1208 cfg80211_process_rdev_events(rdev); 1230 1209 cfg80211_mlme_purge_registrations(dev->ieee80211_ptr);