[RFC PATCH 3/4] wifi: rtw89: handle P2P_DEVICE in net_type/self_role switch
andres parra <[email protected]>
| Newsgroups | org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
rtw89_vif_type_mapping() has a second switch (vif->type) beyond the wifi_role mapping already fixed -- this one sets net_type/self_role and also ends in a default: WARN_ON(1). Live-tested on real hardware (RTL8922AE): the moment wpa_supplicant/NetworkManager requested a P2P-Device wdev (NL80211_CMD_START_P2P_DEVICE), this WARN_ON fired immediately, confirmed via the exact call chain this project's BUILD_LOG.md had already traced by hand: nl80211_start_p2p_device -> ieee80211_start_p2p_device -> ieee80211_do_open -> drv_add_interface -> rtw89_ops_add_interface -> __rtw89_ops_add_iface_link -> rtw89_vif_type_mapping. This second switch was present in the original research grep (core.c:5702, two switch(vif->type) sites found) but was not actually read/analyzed at the time -- a real gap in that research pass, caught by this live test rather than by review. Add NL80211_IFTYPE_P2P_DEVICE alongside the existing MONITOR case, which also just breaks without setting net_type/self_role: a P2P-Device interface has no BSS/association state, so leaving these at their zero-initialized defaults (RTW89_NET_TYPE_NO_LINK, RTW89_SELF_ROLE_CLIENT) is correct, same reasoning already applied to MONITOR. Verified live: after this fix, wpa_supplicant successfully created a real P2P-Device wdev (confirmed via `iw dev`: phy#1 now lists a non-netdev interface, type P2P-device, alongside wlan0), with zero WARN/BUG in dmesg for the whole boot, and normal STA association/ roaming continuing to work correctly (multiple successful associate/ reassociate cycles observed with this driver loaded). Signed-off-by: andres parra <[email protected]> --- core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/core.c b/core.c index c8f12ef..b4f8d27 100644 --- a/core.c +++ b/core.c @@ -5734,6 +5734,7 @@ void rtw89_vif_type_mapping(struct rtw89_vif_link *rtwvif_link, bool assoc) rtwvif_link->addr_cam.sec_ent_mode = RTW89_ADDR_CAM_SEC_NORMAL; break; case NL80211_IFTYPE_MONITOR: + case NL80211_IFTYPE_P2P_DEVICE: break; default: WARN_ON(1); -- 2.55.0