From 96040137f2b74a113c15791adc56f6788b2492a3 Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Mon, 21 Sep 2026 14:40:56 +0200 Subject: [PATCH] wifi: mac80211_hwsim: claim support for Control Integrity Protocol The mac80211_hwsim driver never actually generates control frames. As such, it can simply claim the Control Integrity protocol (CIP). Signed-off-by: Benjamin Berg Link: https://patch.msgid.link/20260921144048.6a4047ca21a1.If483ea588361a90b58a52493936cc0bbbc74c075@changeid Signed-off-by: Johannes Berg --- .../wireless/virtual/mac80211_hwsim_main.c | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/net/wireless/virtual/mac80211_hwsim_main.c b/drivers/net/wireless/virtual/mac80211_hwsim_main.c index d567ed8d45a4..762f99eb15e4 100644 --- a/drivers/net/wireless/virtual/mac80211_hwsim_main.c +++ b/drivers/net/wireless/virtual/mac80211_hwsim_main.c @@ -5650,6 +5650,14 @@ static void mac80211_hwsim_sband_capab(struct ieee80211_supported_band *sband) BIT(NL80211_IFTYPE_MESH_POINT) | \ BIT(NL80211_IFTYPE_OCB)) +static const u8 iftypes_ext_capa[] = { + [0] = WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING, + [2] = WLAN_EXT_CAPA3_MULTI_BSSID_SUPPORT, + [7] = WLAN_EXT_CAPA8_OPMODE_NOTIF | + WLAN_EXT_CAPA8_MAX_MSDU_IN_AMSDU_LSB, + [8] = WLAN_EXT_CAPA9_MAX_MSDU_IN_AMSDU_MSB, +}; + static const u8 iftypes_ext_capa_ap[] = { [0] = WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING, [2] = WLAN_EXT_CAPA3_MULTI_BSSID_SUPPORT, @@ -5674,6 +5682,33 @@ static const struct wiphy_iftype_ext_capab mac80211_hwsim_iftypes_ext_capa[] = { .eml_capabilities = IEEE80211_EML_CAP_EMLSR_SUPP | IEEE80211_EML_CAP_EMLMR_SUPPORT, .mld_capa_and_ops = MAC80211_HWSIM_MLD_CAPA_OPS, + /* CIP works as hwsim does not have control frames */ + .cip_supported = true, + .cip_capabilities = 0, + }, + { + .iftype = NL80211_IFTYPE_STATION, + .extended_capabilities = iftypes_ext_capa, + .extended_capabilities_mask = iftypes_ext_capa, + .extended_capabilities_len = sizeof(iftypes_ext_capa), + .cip_supported = true, + .cip_capabilities = 0, + }, + { + .iftype = NL80211_IFTYPE_P2P_CLIENT, + .extended_capabilities = iftypes_ext_capa, + .extended_capabilities_mask = iftypes_ext_capa, + .extended_capabilities_len = sizeof(iftypes_ext_capa), + .cip_supported = true, + .cip_capabilities = 0, + }, + { + .iftype = NL80211_IFTYPE_P2P_GO, + .extended_capabilities = iftypes_ext_capa, + .extended_capabilities_mask = iftypes_ext_capa, + .extended_capabilities_len = sizeof(iftypes_ext_capa), + .cip_supported = true, + .cip_capabilities = 0, }, };