public inbox for linux-wireless@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
@ 2025-04-21 11:47 Karthikeyan Kathirvel
  2025-04-21 17:16 ` kernel test robot
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Karthikeyan Kathirvel @ 2025-04-21 11:47 UTC (permalink / raw)
  To: ath12k; +Cc: linux-wireless, Karthikeyan Kathirvel

Install beacon protection keys in hardware for AP modes only if hardware
supports it, as indicated by the WMI service bit
WMI_TLV_SERVICE_BEACON_PROTECTION_SUPPORT. Allow keyidx up to 7, since
beacon protection uses keyidx 6 and 7.

Control this feature by setting bit 0 of feature_enable_bitmap when sending
the WMI_BCN_TMPL_CMDID command to firmware.

Check for the beacon protection enabled bit in both tx and non-tx profiles
for MBSSID cases. If set in either profile, enable the beacon protection
feature in firmware for transmitted vif.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1

Signed-off-by: Karthikeyan Kathirvel <karthikeyan.kathirvel@oss.qualcomm.com>
---
 drivers/net/wireless/ath/ath12k/core.h |  1 +
 drivers/net/wireless/ath/ath12k/mac.c  | 52 +++++++++++++++++++-------
 drivers/net/wireless/ath/ath12k/wmi.c  |  3 ++
 drivers/net/wireless/ath/ath12k/wmi.h  |  5 ++-
 4 files changed, 46 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h
index 4b8f434e3e9a..48bcb6d95479 100644
--- a/drivers/net/wireless/ath/ath12k/core.h
+++ b/drivers/net/wireless/ath/ath12k/core.h
@@ -290,6 +290,7 @@ struct ath12k_link_vif {
 
 	int bank_id;
 	u8 vdev_id_check_en;
+	bool beacon_prot;
 
 	struct wmi_wmm_params_all_arg wmm_params;
 	struct list_head list;
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index d170bca72948..71236c4f36a6 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -1445,11 +1445,13 @@ static int ath12k_mac_remove_vendor_ie(struct sk_buff *skb, unsigned int oui,
 	return 0;
 }
 
-static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif, struct sk_buff *bcn,
+static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif,
+				     struct ath12k_link_vif *tx_arvif,
+					 struct sk_buff *bcn,
 				     u8 bssid_index, bool *nontx_profile_found)
 {
 	struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)bcn->data;
-	const struct element *elem, *nontx, *index, *nie;
+	const struct element *elem, *nontx, *index, *nie, *ext_cap_ie;
 	const u8 *start, *tail;
 	u16 rem_len;
 	u8 i;
@@ -1467,6 +1469,11 @@ static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif, struct sk_bu
 				    start, rem_len))
 		arvif->wpaie_present = true;
 
+	ext_cap_ie = cfg80211_find_elem(WLAN_EID_EXT_CAPABILITY, start, rem_len);
+	if (ext_cap_ie && ext_cap_ie->datalen >= 11 &&
+	    (ext_cap_ie->data[10] & WLAN_EXT_CAPA11_BCN_PROTECT))
+		tx_arvif->beacon_prot = true;
+
 	/* Return from here for the transmitted profile */
 	if (!bssid_index)
 		return;
@@ -1509,6 +1516,19 @@ static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif, struct sk_bu
 
 			if (index->data[0] == bssid_index) {
 				*nontx_profile_found = true;
+
+				/* Check if nontx BSS has beacon protection enabled */
+				if (!tx_arvif->beacon_prot) {
+					ext_cap_ie =
+					    cfg80211_find_elem(WLAN_EID_EXT_CAPABILITY,
+							       nontx->data,
+							       nontx->datalen);
+					if (ext_cap_ie && ext_cap_ie->datalen >= 11 &&
+					    (ext_cap_ie->data[10] &
+					     WLAN_EXT_CAPA11_BCN_PROTECT))
+						tx_arvif->beacon_prot = true;
+				}
+
 				if (cfg80211_find_ie(WLAN_EID_RSN,
 						     nontx->data,
 						     nontx->datalen)) {
@@ -1557,11 +1577,11 @@ static int ath12k_mac_setup_bcn_tmpl_ema(struct ath12k_link_vif *arvif,
 	}
 
 	if (tx_arvif == arvif)
-		ath12k_mac_set_arvif_ies(arvif, beacons->bcn[0].skb, 0, NULL);
+		ath12k_mac_set_arvif_ies(arvif, tx_arvif, beacons->bcn[0].skb, 0, NULL);
 
 	for (i = 0; i < beacons->cnt; i++) {
 		if (tx_arvif != arvif && !nontx_profile_found)
-			ath12k_mac_set_arvif_ies(arvif, beacons->bcn[i].skb,
+			ath12k_mac_set_arvif_ies(arvif, tx_arvif, beacons->bcn[i].skb,
 						 bssid_index,
 						 &nontx_profile_found);
 
@@ -1630,9 +1650,9 @@ static int ath12k_mac_setup_bcn_tmpl(struct ath12k_link_vif *arvif)
 	}
 
 	if (tx_arvif == arvif) {
-		ath12k_mac_set_arvif_ies(arvif, bcn, 0, NULL);
+		ath12k_mac_set_arvif_ies(arvif, tx_arvif, bcn, 0, NULL);
 	} else {
-		ath12k_mac_set_arvif_ies(arvif, bcn,
+		ath12k_mac_set_arvif_ies(arvif, tx_arvif, bcn,
 					 link_conf->bssid_index,
 					 &nontx_profile_found);
 		if (!nontx_profile_found)
@@ -4733,6 +4753,16 @@ static int ath12k_install_key(struct ath12k_link_vif *arvif,
 		arg.key_cipher = WMI_CIPHER_AES_GCM;
 		key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV_MGMT;
 		break;
+	case WLAN_CIPHER_SUITE_AES_CMAC:
+		arg.key_cipher = WMI_CIPHER_AES_CMAC;
+		break;
+	case WLAN_CIPHER_SUITE_BIP_GMAC_128:
+	case WLAN_CIPHER_SUITE_BIP_GMAC_256:
+		arg.key_cipher = WMI_CIPHER_AES_GMAC;
+		break;
+	case WLAN_CIPHER_SUITE_BIP_CMAC_256:
+		arg.key_cipher = WMI_CIPHER_AES_CMAC;
+		break;
 	default:
 		ath12k_warn(ar->ab, "cipher %d is not supported\n", key->cipher);
 		return -EOPNOTSUPP;
@@ -4964,14 +4994,6 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
 
 	lockdep_assert_wiphy(hw->wiphy);
 
-	/* BIP needs to be done in software */
-	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
-	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
-	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
-	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
-		return 1;
-	}
-
 	if (key->keyidx > WMI_MAX_KEY_INDEX)
 		return -ENOSPC;
 
@@ -11588,6 +11610,8 @@ static int ath12k_mac_hw_register(struct ath12k_hw *ah)
 	}
 
 	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_PUNCT);
+	if (test_bit(WMI_TLV_SERVICE_BEACON_PROTECTION_SUPPORT, ab->wmi_ab.svc_map))
+		wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_BEACON_PROTECTION);
 
 	ath12k_reg_init(hw);
 
diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c
index ea303dca38b5..89ed207225e6 100644
--- a/drivers/net/wireless/ath/ath12k/wmi.c
+++ b/drivers/net/wireless/ath/ath12k/wmi.c
@@ -2008,6 +2008,9 @@ int ath12k_wmi_bcn_tmpl(struct ath12k_link_vif *arvif,
 			u32p_replace_bits(&ema_params, 1, WMI_EMA_BEACON_LAST);
 		cmd->ema_params = cpu_to_le32(ema_params);
 	}
+	cmd->feature_enable_bitmap =
+		cpu_to_le32(u32_encode_bits(arvif->beacon_prot,
+					    WMI_BEACON_PROTECTION_EN_BIT));
 
 	ptr = skb->data + sizeof(*cmd);
 
diff --git a/drivers/net/wireless/ath/ath12k/wmi.h b/drivers/net/wireless/ath/ath12k/wmi.h
index 80fdbc566518..7c59fbf5ecff 100644
--- a/drivers/net/wireless/ath/ath12k/wmi.h
+++ b/drivers/net/wireless/ath/ath12k/wmi.h
@@ -2197,6 +2197,7 @@ enum wmi_tlv_service {
 	WMI_TLV_SERVICE_PER_PEER_HTT_STATS_RESET = 213,
 	WMI_TLV_SERVICE_FREQINFO_IN_METADATA = 219,
 	WMI_TLV_SERVICE_EXT2_MSG = 220,
+	WMI_TLV_SERVICE_BEACON_PROTECTION_SUPPORT = 244,
 	WMI_TLV_SERVICE_MBSS_PARAM_IN_VDEV_START_SUPPORT = 253,
 
 	WMI_MAX_EXT_SERVICE = 256,
@@ -3668,6 +3669,8 @@ struct ath12k_wmi_ftm_event {
 #define WMI_EMA_BEACON_FIRST    GENMASK(23, 16)
 #define WMI_EMA_BEACON_LAST     GENMASK(31, 24)
 
+#define WMI_BEACON_PROTECTION_EN_BIT	BIT(0)
+
 struct ath12k_wmi_bcn_tmpl_ema_arg {
 	u8 bcn_cnt;
 	u8 bcn_index;
@@ -4631,7 +4634,7 @@ enum wmi_ap_ps_peer_param {
 
 #define DISABLE_SIFS_RESPONSE_TRIGGER 0
 
-#define WMI_MAX_KEY_INDEX   3
+#define WMI_MAX_KEY_INDEX   7
 #define WMI_MAX_KEY_LEN     32
 
 enum wmi_key_type {

base-commit: d33705bb41ff786b537f8ed50a187a474db111c1
Depends-on: <20250421111505.3633992-1-karthikeyan.kathirvel@oss.qualcomm.com>
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-21 11:47 [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware Karthikeyan Kathirvel
@ 2025-04-21 17:16 ` kernel test robot
  2025-04-21 18:44   ` Jeff Johnson
  2025-04-22  9:48 ` kernel test robot
  2025-04-29 15:47 ` Nicolas Escande
  2 siblings, 1 reply; 12+ messages in thread
From: kernel test robot @ 2025-04-21 17:16 UTC (permalink / raw)
  To: Karthikeyan Kathirvel, ath12k
  Cc: llvm, oe-kbuild-all, linux-wireless, Karthikeyan Kathirvel

Hi Karthikeyan,

kernel test robot noticed the following build errors:

[auto build test ERROR on d33705bb41ff786b537f8ed50a187a474db111c1]

url:    https://github.com/intel-lab-lkp/linux/commits/Karthikeyan-Kathirvel/wifi-ath12k-allow-beacon-protection-keys-to-be-installed-in-hardware/20250421-194813
base:   d33705bb41ff786b537f8ed50a187a474db111c1
patch link:    https://lore.kernel.org/r/20250421114711.3660911-1-karthikeyan.kathirvel%40oss.qualcomm.com
patch subject: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
config: powerpc-randconfig-003-20250421 (https://download.01.org/0day-ci/archive/20250422/202504220128.2KvxCzaG-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project f819f46284f2a79790038e1f6649172789734ae8)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250422/202504220128.2KvxCzaG-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202504220128.2KvxCzaG-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/net/wireless/ath/ath12k/mac.c:1474:30: error: use of undeclared identifier 'WLAN_EXT_CAPA11_BCN_PROTECT'
    1474 |             (ext_cap_ie->data[10] & WLAN_EXT_CAPA11_BCN_PROTECT))
         |                                     ^
   drivers/net/wireless/ath/ath12k/mac.c:1528:11: error: use of undeclared identifier 'WLAN_EXT_CAPA11_BCN_PROTECT'
    1528 |                                              WLAN_EXT_CAPA11_BCN_PROTECT))
         |                                              ^
   2 errors generated.


vim +/WLAN_EXT_CAPA11_BCN_PROTECT +1474 drivers/net/wireless/ath/ath12k/mac.c

  1447	
  1448	static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif,
  1449					     struct ath12k_link_vif *tx_arvif,
  1450						 struct sk_buff *bcn,
  1451					     u8 bssid_index, bool *nontx_profile_found)
  1452	{
  1453		struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)bcn->data;
  1454		const struct element *elem, *nontx, *index, *nie, *ext_cap_ie;
  1455		const u8 *start, *tail;
  1456		u16 rem_len;
  1457		u8 i;
  1458	
  1459		start = bcn->data + ieee80211_get_hdrlen_from_skb(bcn) + sizeof(mgmt->u.beacon);
  1460		tail = skb_tail_pointer(bcn);
  1461		rem_len = tail - start;
  1462	
  1463		arvif->rsnie_present = false;
  1464		arvif->wpaie_present = false;
  1465	
  1466		if (cfg80211_find_ie(WLAN_EID_RSN, start, rem_len))
  1467			arvif->rsnie_present = true;
  1468		if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, WLAN_OUI_TYPE_MICROSOFT_WPA,
  1469					    start, rem_len))
  1470			arvif->wpaie_present = true;
  1471	
  1472		ext_cap_ie = cfg80211_find_elem(WLAN_EID_EXT_CAPABILITY, start, rem_len);
  1473		if (ext_cap_ie && ext_cap_ie->datalen >= 11 &&
> 1474		    (ext_cap_ie->data[10] & WLAN_EXT_CAPA11_BCN_PROTECT))
  1475			tx_arvif->beacon_prot = true;
  1476	
  1477		/* Return from here for the transmitted profile */
  1478		if (!bssid_index)
  1479			return;
  1480	
  1481		/* Initial rsnie_present for the nontransmitted profile is set to be same as that
  1482		 * of the transmitted profile. It will be changed if security configurations are
  1483		 * different.
  1484		 */
  1485		*nontx_profile_found = false;
  1486		for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID, start, rem_len) {
  1487			/* Fixed minimum MBSSID element length with at least one
  1488			 * nontransmitted BSSID profile is 12 bytes as given below;
  1489			 * 1 (max BSSID indicator) +
  1490			 * 2 (Nontransmitted BSSID profile: Subelement ID + length) +
  1491			 * 4 (Nontransmitted BSSID Capabilities: tag + length + info)
  1492			 * 2 (Nontransmitted BSSID SSID: tag + length)
  1493			 * 3 (Nontransmitted BSSID Index: tag + length + BSSID index
  1494			 */
  1495			if (elem->datalen < 12 || elem->data[0] < 1)
  1496				continue; /* Max BSSID indicator must be >=1 */
  1497	
  1498			for_each_element(nontx, elem->data + 1, elem->datalen - 1) {
  1499				start = nontx->data;
  1500	
  1501				if (nontx->id != 0 || nontx->datalen < 4)
  1502					continue; /* Invalid nontransmitted profile */
  1503	
  1504				if (nontx->data[0] != WLAN_EID_NON_TX_BSSID_CAP ||
  1505				    nontx->data[1] != 2) {
  1506					continue; /* Missing nontransmitted BSS capabilities */
  1507				}
  1508	
  1509				if (nontx->data[4] != WLAN_EID_SSID)
  1510					continue; /* Missing SSID for nontransmitted BSS */
  1511	
  1512				index = cfg80211_find_elem(WLAN_EID_MULTI_BSSID_IDX,
  1513							   start, nontx->datalen);
  1514				if (!index || index->datalen < 1 || index->data[0] == 0)
  1515					continue; /* Invalid MBSSID Index element */
  1516	
  1517				if (index->data[0] == bssid_index) {
  1518					*nontx_profile_found = true;
  1519	
  1520					/* Check if nontx BSS has beacon protection enabled */
  1521					if (!tx_arvif->beacon_prot) {
  1522						ext_cap_ie =
  1523						    cfg80211_find_elem(WLAN_EID_EXT_CAPABILITY,
  1524								       nontx->data,
  1525								       nontx->datalen);
  1526						if (ext_cap_ie && ext_cap_ie->datalen >= 11 &&
  1527						    (ext_cap_ie->data[10] &
  1528						     WLAN_EXT_CAPA11_BCN_PROTECT))
  1529							tx_arvif->beacon_prot = true;
  1530					}
  1531	
  1532					if (cfg80211_find_ie(WLAN_EID_RSN,
  1533							     nontx->data,
  1534							     nontx->datalen)) {
  1535						arvif->rsnie_present = true;
  1536						return;
  1537					} else if (!arvif->rsnie_present) {
  1538						return; /* Both tx and nontx BSS are open */
  1539					}
  1540	
  1541					nie = cfg80211_find_ext_elem(WLAN_EID_EXT_NON_INHERITANCE,
  1542								     nontx->data,
  1543								     nontx->datalen);
  1544					if (!nie || nie->datalen < 2)
  1545						return; /* Invalid non-inheritance element */
  1546	
  1547					for (i = 1; i < nie->datalen - 1; i++) {
  1548						if (nie->data[i] == WLAN_EID_RSN) {
  1549							arvif->rsnie_present = false;
  1550							break;
  1551						}
  1552					}
  1553	
  1554					return;
  1555				}
  1556			}
  1557		}
  1558	}
  1559	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-21 17:16 ` kernel test robot
@ 2025-04-21 18:44   ` Jeff Johnson
  2025-04-23  1:37     ` Philip Li
  0 siblings, 1 reply; 12+ messages in thread
From: Jeff Johnson @ 2025-04-21 18:44 UTC (permalink / raw)
  To: kernel test robot, Karthikeyan Kathirvel, ath12k
  Cc: llvm, oe-kbuild-all, linux-wireless

On 4/21/2025 10:16 AM, kernel test robot wrote:
> Hi Karthikeyan,
> 
> kernel test robot noticed the following build errors:
> 
> [auto build test ERROR on d33705bb41ff786b537f8ed50a187a474db111c1]

lkp@intel.com folks:
This patch contains the following footer:

base-commit: d33705bb41ff786b537f8ed50a187a474db111c1
Depends-on: <20250421111505.3633992-1-karthikeyan.kathirvel@oss.qualcomm.com>

Is there a different mechanism needed to tell the robot about the dependency?


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-21 11:47 [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware Karthikeyan Kathirvel
  2025-04-21 17:16 ` kernel test robot
@ 2025-04-22  9:48 ` kernel test robot
  2025-04-29 15:47 ` Nicolas Escande
  2 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2025-04-22  9:48 UTC (permalink / raw)
  To: Karthikeyan Kathirvel, ath12k
  Cc: oe-kbuild-all, linux-wireless, Karthikeyan Kathirvel

Hi Karthikeyan,

kernel test robot noticed the following build errors:

[auto build test ERROR on d33705bb41ff786b537f8ed50a187a474db111c1]

url:    https://github.com/intel-lab-lkp/linux/commits/Karthikeyan-Kathirvel/wifi-ath12k-allow-beacon-protection-keys-to-be-installed-in-hardware/20250421-194813
base:   d33705bb41ff786b537f8ed50a187a474db111c1
patch link:    https://lore.kernel.org/r/20250421114711.3660911-1-karthikeyan.kathirvel%40oss.qualcomm.com
patch subject: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
config: sparc-allmodconfig (https://download.01.org/0day-ci/archive/20250422/202504221714.6bYFTiB1-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250422/202504221714.6bYFTiB1-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202504221714.6bYFTiB1-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/net/wireless/ath/ath12k/mac.c: In function 'ath12k_mac_set_arvif_ies':
>> drivers/net/wireless/ath/ath12k/mac.c:1474:37: error: 'WLAN_EXT_CAPA11_BCN_PROTECT' undeclared (first use in this function); did you mean 'WLAN_EXT_CAPA11_EMA_SUPPORT'?
    1474 |             (ext_cap_ie->data[10] & WLAN_EXT_CAPA11_BCN_PROTECT))
         |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                                     WLAN_EXT_CAPA11_EMA_SUPPORT
   drivers/net/wireless/ath/ath12k/mac.c:1474:37: note: each undeclared identifier is reported only once for each function it appears in


vim +1474 drivers/net/wireless/ath/ath12k/mac.c

  1447	
  1448	static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif,
  1449					     struct ath12k_link_vif *tx_arvif,
  1450						 struct sk_buff *bcn,
  1451					     u8 bssid_index, bool *nontx_profile_found)
  1452	{
  1453		struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)bcn->data;
  1454		const struct element *elem, *nontx, *index, *nie, *ext_cap_ie;
  1455		const u8 *start, *tail;
  1456		u16 rem_len;
  1457		u8 i;
  1458	
  1459		start = bcn->data + ieee80211_get_hdrlen_from_skb(bcn) + sizeof(mgmt->u.beacon);
  1460		tail = skb_tail_pointer(bcn);
  1461		rem_len = tail - start;
  1462	
  1463		arvif->rsnie_present = false;
  1464		arvif->wpaie_present = false;
  1465	
  1466		if (cfg80211_find_ie(WLAN_EID_RSN, start, rem_len))
  1467			arvif->rsnie_present = true;
  1468		if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, WLAN_OUI_TYPE_MICROSOFT_WPA,
  1469					    start, rem_len))
  1470			arvif->wpaie_present = true;
  1471	
  1472		ext_cap_ie = cfg80211_find_elem(WLAN_EID_EXT_CAPABILITY, start, rem_len);
  1473		if (ext_cap_ie && ext_cap_ie->datalen >= 11 &&
> 1474		    (ext_cap_ie->data[10] & WLAN_EXT_CAPA11_BCN_PROTECT))
  1475			tx_arvif->beacon_prot = true;
  1476	
  1477		/* Return from here for the transmitted profile */
  1478		if (!bssid_index)
  1479			return;
  1480	
  1481		/* Initial rsnie_present for the nontransmitted profile is set to be same as that
  1482		 * of the transmitted profile. It will be changed if security configurations are
  1483		 * different.
  1484		 */
  1485		*nontx_profile_found = false;
  1486		for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID, start, rem_len) {
  1487			/* Fixed minimum MBSSID element length with at least one
  1488			 * nontransmitted BSSID profile is 12 bytes as given below;
  1489			 * 1 (max BSSID indicator) +
  1490			 * 2 (Nontransmitted BSSID profile: Subelement ID + length) +
  1491			 * 4 (Nontransmitted BSSID Capabilities: tag + length + info)
  1492			 * 2 (Nontransmitted BSSID SSID: tag + length)
  1493			 * 3 (Nontransmitted BSSID Index: tag + length + BSSID index
  1494			 */
  1495			if (elem->datalen < 12 || elem->data[0] < 1)
  1496				continue; /* Max BSSID indicator must be >=1 */
  1497	
  1498			for_each_element(nontx, elem->data + 1, elem->datalen - 1) {
  1499				start = nontx->data;
  1500	
  1501				if (nontx->id != 0 || nontx->datalen < 4)
  1502					continue; /* Invalid nontransmitted profile */
  1503	
  1504				if (nontx->data[0] != WLAN_EID_NON_TX_BSSID_CAP ||
  1505				    nontx->data[1] != 2) {
  1506					continue; /* Missing nontransmitted BSS capabilities */
  1507				}
  1508	
  1509				if (nontx->data[4] != WLAN_EID_SSID)
  1510					continue; /* Missing SSID for nontransmitted BSS */
  1511	
  1512				index = cfg80211_find_elem(WLAN_EID_MULTI_BSSID_IDX,
  1513							   start, nontx->datalen);
  1514				if (!index || index->datalen < 1 || index->data[0] == 0)
  1515					continue; /* Invalid MBSSID Index element */
  1516	
  1517				if (index->data[0] == bssid_index) {
  1518					*nontx_profile_found = true;
  1519	
  1520					/* Check if nontx BSS has beacon protection enabled */
  1521					if (!tx_arvif->beacon_prot) {
  1522						ext_cap_ie =
  1523						    cfg80211_find_elem(WLAN_EID_EXT_CAPABILITY,
  1524								       nontx->data,
  1525								       nontx->datalen);
  1526						if (ext_cap_ie && ext_cap_ie->datalen >= 11 &&
  1527						    (ext_cap_ie->data[10] &
  1528						     WLAN_EXT_CAPA11_BCN_PROTECT))
  1529							tx_arvif->beacon_prot = true;
  1530					}
  1531	
  1532					if (cfg80211_find_ie(WLAN_EID_RSN,
  1533							     nontx->data,
  1534							     nontx->datalen)) {
  1535						arvif->rsnie_present = true;
  1536						return;
  1537					} else if (!arvif->rsnie_present) {
  1538						return; /* Both tx and nontx BSS are open */
  1539					}
  1540	
  1541					nie = cfg80211_find_ext_elem(WLAN_EID_EXT_NON_INHERITANCE,
  1542								     nontx->data,
  1543								     nontx->datalen);
  1544					if (!nie || nie->datalen < 2)
  1545						return; /* Invalid non-inheritance element */
  1546	
  1547					for (i = 1; i < nie->datalen - 1; i++) {
  1548						if (nie->data[i] == WLAN_EID_RSN) {
  1549							arvif->rsnie_present = false;
  1550							break;
  1551						}
  1552					}
  1553	
  1554					return;
  1555				}
  1556			}
  1557		}
  1558	}
  1559	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-21 18:44   ` Jeff Johnson
@ 2025-04-23  1:37     ` Philip Li
  2025-04-23 18:05       ` Jeff Johnson
  0 siblings, 1 reply; 12+ messages in thread
From: Philip Li @ 2025-04-23  1:37 UTC (permalink / raw)
  To: Jeff Johnson
  Cc: kernel test robot, Karthikeyan Kathirvel, ath12k, llvm,
	oe-kbuild-all, linux-wireless

On Mon, Apr 21, 2025 at 11:44:46AM -0700, Jeff Johnson wrote:
> On 4/21/2025 10:16 AM, kernel test robot wrote:
> > Hi Karthikeyan,
> > 
> > kernel test robot noticed the following build errors:
> > 
> > [auto build test ERROR on d33705bb41ff786b537f8ed50a187a474db111c1]
> 
> lkp@intel.com folks:
> This patch contains the following footer:
> 
> base-commit: d33705bb41ff786b537f8ed50a187a474db111c1
> Depends-on: <20250421111505.3633992-1-karthikeyan.kathirvel@oss.qualcomm.com>
> 
> Is there a different mechanism needed to tell the robot about the dependency?

Sorry for confusion, for now if there's base-commit specified, the bot would
only consider it as the base and apply the patch. And actually, if there's
a dependency specified by link, the bot so far can't recognize it well.

BTW: for this case, does it mean the patch need be applied on this "Depends-on"
patch, and this "Depends-on" patch is on top of the base-commit?

> 
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-23  1:37     ` Philip Li
@ 2025-04-23 18:05       ` Jeff Johnson
  0 siblings, 0 replies; 12+ messages in thread
From: Jeff Johnson @ 2025-04-23 18:05 UTC (permalink / raw)
  To: Philip Li
  Cc: kernel test robot, Karthikeyan Kathirvel, ath12k, llvm,
	oe-kbuild-all, linux-wireless

On 4/22/2025 6:37 PM, Philip Li wrote:
> On Mon, Apr 21, 2025 at 11:44:46AM -0700, Jeff Johnson wrote:
>> On 4/21/2025 10:16 AM, kernel test robot wrote:
>>> Hi Karthikeyan,
>>>
>>> kernel test robot noticed the following build errors:
>>>
>>> [auto build test ERROR on d33705bb41ff786b537f8ed50a187a474db111c1]
>>
>> lkp@intel.com folks:
>> This patch contains the following footer:
>>
>> base-commit: d33705bb41ff786b537f8ed50a187a474db111c1
>> Depends-on: <20250421111505.3633992-1-karthikeyan.kathirvel@oss.qualcomm.com>
>>
>> Is there a different mechanism needed to tell the robot about the dependency?
> 
> Sorry for confusion, for now if there's base-commit specified, the bot would
> only consider it as the base and apply the patch. And actually, if there's
> a dependency specified by link, the bot so far can't recognize it well.
> 
> BTW: for this case, does it mean the patch need be applied on this "Depends-on"
> patch, and this "Depends-on" patch is on top of the base-commit?

In this case the Depends-on patch is applied on top of the base patch, and
then the actual patch is applied on top of that.

/jeff

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-21 11:47 [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware Karthikeyan Kathirvel
  2025-04-21 17:16 ` kernel test robot
  2025-04-22  9:48 ` kernel test robot
@ 2025-04-29 15:47 ` Nicolas Escande
  2025-04-30  6:05   ` Karthikeyan Kathirvel
  2 siblings, 1 reply; 12+ messages in thread
From: Nicolas Escande @ 2025-04-29 15:47 UTC (permalink / raw)
  To: Karthikeyan Kathirvel, ath12k; +Cc: linux-wireless

On Mon Apr 21, 2025 at 1:47 PM CEST, Karthikeyan Kathirvel wrote:
> Install beacon protection keys in hardware for AP modes only if hardware
> supports it, as indicated by the WMI service bit
> WMI_TLV_SERVICE_BEACON_PROTECTION_SUPPORT. Allow keyidx up to 7, since
> beacon protection uses keyidx 6 and 7.
>
> Control this feature by setting bit 0 of feature_enable_bitmap when sending
> the WMI_BCN_TMPL_CMDID command to firmware.
>
> Check for the beacon protection enabled bit in both tx and non-tx profiles
> for MBSSID cases. If set in either profile, enable the beacon protection
> feature in firmware for transmitted vif.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
>
> Signed-off-by: Karthikeyan Kathirvel <karthikeyan.kathirvel@oss.qualcomm.com>
[...]
> @@ -4964,14 +4994,6 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>  
>  	lockdep_assert_wiphy(hw->wiphy);
>  
> -	/* BIP needs to be done in software */
> -	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
> -		return 1;
> -	}
> -
>  	if (key->keyidx > WMI_MAX_KEY_INDEX)
>  		return -ENOSPC;
>  

This hunk seems to break station mode on QCN9274. Maybe on WCN7850 too ? I see
that it was not tested against that HW.

With that hunk I cannot receive broadcast trafic sent by the ap anymore.
Generated by a simple "arping -b X.X.X.X -I br0" in my case.

Replacing that hunk with something similar as what is done in CLO [0] seems to
fix the issue:

@@ -5575,13 +5605,9 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
 
 	lockdep_assert_wiphy(hw->wiphy);
 
-	/* BIP needs to be done in software */
-	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
-	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
-	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
-	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
+	/* IGTK needs to be done in host software */
+	if (key->keyidx == 4 || key->keyidx == 5)
 		return 1;
-	}
 
 	if (key->keyidx > WMI_MAX_KEY_INDEX)
 		return -ENOSPC;


PS: I tested that with firmware PCI WLAN.WBE.1.3.1-00218-QCAHKSWPL_SILICONZ-1

[0] https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/blob/win.wlan_host_opensource.3.0/patches/ath12k/726-ath12k-add-beacon-protection-support-for-ath12k.patch?ref_type=heads

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-29 15:47 ` Nicolas Escande
@ 2025-04-30  6:05   ` Karthikeyan Kathirvel
  2025-05-09 16:07     ` Jeff Johnson
  0 siblings, 1 reply; 12+ messages in thread
From: Karthikeyan Kathirvel @ 2025-04-30  6:05 UTC (permalink / raw)
  To: Nicolas Escande, ath12k; +Cc: linux-wireless


On 4/29/2025 9:17 PM, Nicolas Escande wrote:
> On Mon Apr 21, 2025 at 1:47 PM CEST, Karthikeyan Kathirvel wrote:
>> Install beacon protection keys in hardware for AP modes only if hardware
>> supports it, as indicated by the WMI service bit
>> WMI_TLV_SERVICE_BEACON_PROTECTION_SUPPORT. Allow keyidx up to 7, since
>> beacon protection uses keyidx 6 and 7.
>>
>> Control this feature by setting bit 0 of feature_enable_bitmap when sending
>> the WMI_BCN_TMPL_CMDID command to firmware.
>>
>> Check for the beacon protection enabled bit in both tx and non-tx profiles
>> for MBSSID cases. If set in either profile, enable the beacon protection
>> feature in firmware for transmitted vif.
>>
>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
>>
>> Signed-off-by: Karthikeyan Kathirvel <karthikeyan.kathirvel@oss.qualcomm.com>
> [...]
>> @@ -4964,14 +4994,6 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>>   
>>   	lockdep_assert_wiphy(hw->wiphy);
>>   
>> -	/* BIP needs to be done in software */
>> -	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
>> -		return 1;
>> -	}
>> -
>>   	if (key->keyidx > WMI_MAX_KEY_INDEX)
>>   		return -ENOSPC;
>>   
> This hunk seems to break station mode on QCN9274. Maybe on WCN7850 too ? I see
> that it was not tested against that HW.
>
> With that hunk I cannot receive broadcast trafic sent by the ap anymore.
> Generated by a simple "arping -b X.X.X.X -I br0" in my case.
>
> Replacing that hunk with something similar as what is done in CLO [0] seems to
> fix the issue:
>
> @@ -5575,13 +5605,9 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>   
>   	lockdep_assert_wiphy(hw->wiphy);
>   
> -	/* BIP needs to be done in software */
> -	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
> +	/* IGTK needs to be done in host software */
> +	if (key->keyidx == 4 || key->keyidx == 5)
>   		return 1;
> -	}
>   
>   	if (key->keyidx > WMI_MAX_KEY_INDEX)
>   		return -ENOSPC;
>
>
> PS: I tested that with firmware PCI WLAN.WBE.1.3.1-00218-QCAHKSWPL_SILICONZ-1
>
> [0] https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/blob/win.wlan_host_opensource.3.0/patches/ath12k/726-ath12k-add-beacon-protection-support-for-ath12k.patch?ref_type=heads

Thanks for catching this Nicolas, will check and get back on this


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-04-30  6:05   ` Karthikeyan Kathirvel
@ 2025-05-09 16:07     ` Jeff Johnson
  2025-06-04  8:59       ` Karthikeyan Kathirvel
  0 siblings, 1 reply; 12+ messages in thread
From: Jeff Johnson @ 2025-05-09 16:07 UTC (permalink / raw)
  To: Karthikeyan Kathirvel, Nicolas Escande, ath12k; +Cc: linux-wireless

On 4/29/2025 11:05 PM, Karthikeyan Kathirvel wrote:
> 
> On 4/29/2025 9:17 PM, Nicolas Escande wrote:
>> On Mon Apr 21, 2025 at 1:47 PM CEST, Karthikeyan Kathirvel wrote:
>>> Install beacon protection keys in hardware for AP modes only if hardware
>>> supports it, as indicated by the WMI service bit
>>> WMI_TLV_SERVICE_BEACON_PROTECTION_SUPPORT. Allow keyidx up to 7, since
>>> beacon protection uses keyidx 6 and 7.
>>>
>>> Control this feature by setting bit 0 of feature_enable_bitmap when sending
>>> the WMI_BCN_TMPL_CMDID command to firmware.
>>>
>>> Check for the beacon protection enabled bit in both tx and non-tx profiles
>>> for MBSSID cases. If set in either profile, enable the beacon protection
>>> feature in firmware for transmitted vif.
>>>
>>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
>>>
>>> Signed-off-by: Karthikeyan Kathirvel <karthikeyan.kathirvel@oss.qualcomm.com>
>> [...]
>>> @@ -4964,14 +4994,6 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>>>   
>>>   	lockdep_assert_wiphy(hw->wiphy);
>>>   
>>> -	/* BIP needs to be done in software */
>>> -	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
>>> -		return 1;
>>> -	}
>>> -
>>>   	if (key->keyidx > WMI_MAX_KEY_INDEX)
>>>   		return -ENOSPC;
>>>   
>> This hunk seems to break station mode on QCN9274. Maybe on WCN7850 too ? I see
>> that it was not tested against that HW.
>>
>> With that hunk I cannot receive broadcast trafic sent by the ap anymore.
>> Generated by a simple "arping -b X.X.X.X -I br0" in my case.
>>
>> Replacing that hunk with something similar as what is done in CLO [0] seems to
>> fix the issue:
>>
>> @@ -5575,13 +5605,9 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>>   
>>   	lockdep_assert_wiphy(hw->wiphy);
>>   
>> -	/* BIP needs to be done in software */
>> -	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
>> +	/* IGTK needs to be done in host software */
>> +	if (key->keyidx == 4 || key->keyidx == 5)
>>   		return 1;
>> -	}
>>   
>>   	if (key->keyidx > WMI_MAX_KEY_INDEX)
>>   		return -ENOSPC;
>>
>>
>> PS: I tested that with firmware PCI WLAN.WBE.1.3.1-00218-QCAHKSWPL_SILICONZ-1
>>
>> [0] https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/blob/win.wlan_host_opensource.3.0/patches/ath12k/726-ath12k-add-beacon-protection-support-for-ath12k.patch?ref_type=heads
> 
> Thanks for catching this Nicolas, will check and get back on this

Will you be spinning a v2? Note the dependent mac80211 change has merged.

Also there is an indentation issue in the blob:
> -static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif, struct sk_buff *bcn,
> +static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif,
> +				     struct ath12k_link_vif *tx_arvif,
> +					 struct sk_buff *bcn,
>  				     u8 bssid_index, bool *nontx_profile_found)

struct sk_buff *bcn is not aligned on the (

/jeff

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-05-09 16:07     ` Jeff Johnson
@ 2025-06-04  8:59       ` Karthikeyan Kathirvel
  2025-06-04 20:38         ` Jeff Johnson
  0 siblings, 1 reply; 12+ messages in thread
From: Karthikeyan Kathirvel @ 2025-06-04  8:59 UTC (permalink / raw)
  To: Jeff Johnson, Nicolas Escande, ath12k; +Cc: linux-wireless



On 5/9/2025 9:37 PM, Jeff Johnson wrote:
> On 4/29/2025 11:05 PM, Karthikeyan Kathirvel wrote:
>>
>> On 4/29/2025 9:17 PM, Nicolas Escande wrote:
>>> On Mon Apr 21, 2025 at 1:47 PM CEST, Karthikeyan Kathirvel wrote:
>>>> Install beacon protection keys in hardware for AP modes only if hardware
>>>> supports it, as indicated by the WMI service bit
>>>> WMI_TLV_SERVICE_BEACON_PROTECTION_SUPPORT. Allow keyidx up to 7, since
>>>> beacon protection uses keyidx 6 and 7.
>>>>
>>>> Control this feature by setting bit 0 of feature_enable_bitmap when sending
>>>> the WMI_BCN_TMPL_CMDID command to firmware.
>>>>
>>>> Check for the beacon protection enabled bit in both tx and non-tx profiles
>>>> for MBSSID cases. If set in either profile, enable the beacon protection
>>>> feature in firmware for transmitted vif.
>>>>
>>>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
>>>>
>>>> Signed-off-by: Karthikeyan Kathirvel <karthikeyan.kathirvel@oss.qualcomm.com>
>>> [...]
>>>> @@ -4964,14 +4994,6 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>>>>    
>>>>    	lockdep_assert_wiphy(hw->wiphy);
>>>>    
>>>> -	/* BIP needs to be done in software */
>>>> -	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
>>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
>>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
>>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
>>>> -		return 1;
>>>> -	}
>>>> -
>>>>    	if (key->keyidx > WMI_MAX_KEY_INDEX)
>>>>    		return -ENOSPC;
>>>>    
>>> This hunk seems to break station mode on QCN9274. Maybe on WCN7850 too ? I see
>>> that it was not tested against that HW.
>>>
>>> With that hunk I cannot receive broadcast trafic sent by the ap anymore.
>>> Generated by a simple "arping -b X.X.X.X -I br0" in my case.
>>>
>>> Replacing that hunk with something similar as what is done in CLO [0] seems to
>>> fix the issue:
>>>
>>> @@ -5575,13 +5605,9 @@ static int ath12k_mac_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>>>    
>>>    	lockdep_assert_wiphy(hw->wiphy);
>>>    
>>> -	/* BIP needs to be done in software */
>>> -	if (key->cipher == WLAN_CIPHER_SUITE_AES_CMAC ||
>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_128 ||
>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_GMAC_256 ||
>>> -	    key->cipher == WLAN_CIPHER_SUITE_BIP_CMAC_256) {
>>> +	/* IGTK needs to be done in host software */
>>> +	if (key->keyidx == 4 || key->keyidx == 5)
>>>    		return 1;
>>> -	}
>>>    
>>>    	if (key->keyidx > WMI_MAX_KEY_INDEX)
>>>    		return -ENOSPC;
>>>
>>>
>>> PS: I tested that with firmware PCI WLAN.WBE.1.3.1-00218-QCAHKSWPL_SILICONZ-1
>>>
>>> [0] https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/blob/win.wlan_host_opensource.3.0/patches/ath12k/726-ath12k-add-beacon-protection-support-for-ath12k.patch?ref_type=heads
>>
>> Thanks for catching this Nicolas, will check and get back on this
> 
> Will you be spinning a v2? Note the dependent mac80211 change has merged.
Yes Jeff, we've identified and confirmed a firmware bug that gets 
triggered during IGTK key installation, which leads to corruption of the 
GTK keys in firmware. To work around this, I’ll send a new version where 
IGTK uses software crypto. Once the firmware bug is resolved upstream, 
we can re-enable hardware offload for IGTK.
> 
> Also there is an indentation issue in the blob:
Will address this in next version
>> -static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif, struct sk_buff *bcn,
>> +static void ath12k_mac_set_arvif_ies(struct ath12k_link_vif *arvif,
>> +				     struct ath12k_link_vif *tx_arvif,
>> +					 struct sk_buff *bcn,
>>   				     u8 bssid_index, bool *nontx_profile_found)
> 
> struct sk_buff *bcn is not aligned on the (
> 
> /jeff

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-06-04  8:59       ` Karthikeyan Kathirvel
@ 2025-06-04 20:38         ` Jeff Johnson
  2025-06-06 13:22           ` Karthikeyan Kathirvel
  0 siblings, 1 reply; 12+ messages in thread
From: Jeff Johnson @ 2025-06-04 20:38 UTC (permalink / raw)
  To: Karthikeyan Kathirvel, Nicolas Escande, ath12k; +Cc: linux-wireless

On 6/4/2025 1:59 AM, Karthikeyan Kathirvel wrote:
> On 5/9/2025 9:37 PM, Jeff Johnson wrote:
>> Will you be spinning a v2? Note the dependent mac80211 change has merged.
> Yes Jeff, we've identified and confirmed a firmware bug that gets 
> triggered during IGTK key installation, which leads to corruption of the 
> GTK keys in firmware. To work around this, I’ll send a new version where 
> IGTK uses software crypto. Once the firmware bug is resolved upstream, 
> we can re-enable hardware offload for IGTK.

Note that then means firmware must advertise that the correct support is
present so that the host knows whether or not it can enable the offload.

/jeff

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware
  2025-06-04 20:38         ` Jeff Johnson
@ 2025-06-06 13:22           ` Karthikeyan Kathirvel
  0 siblings, 0 replies; 12+ messages in thread
From: Karthikeyan Kathirvel @ 2025-06-06 13:22 UTC (permalink / raw)
  To: Jeff Johnson, Nicolas Escande, ath12k; +Cc: linux-wireless



On 6/5/2025 2:08 AM, Jeff Johnson wrote:
> On 6/4/2025 1:59 AM, Karthikeyan Kathirvel wrote:
>> On 5/9/2025 9:37 PM, Jeff Johnson wrote:
>>> Will you be spinning a v2? Note the dependent mac80211 change has merged.
>> Yes Jeff, we've identified and confirmed a firmware bug that gets
>> triggered during IGTK key installation, which leads to corruption of the
>> GTK keys in firmware. To work around this, I’ll send a new version where
>> IGTK uses software crypto. Once the firmware bug is resolved upstream,
>> we can re-enable hardware offload for IGTK.
> 
> Note that then means firmware must advertise that the correct support is
> present so that the host knows whether or not it can enable the offload.
> 
> /jeff

Noted.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-06-06 13:22 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-21 11:47 [PATCH ath-next] wifi: ath12k: allow beacon protection keys to be installed in hardware Karthikeyan Kathirvel
2025-04-21 17:16 ` kernel test robot
2025-04-21 18:44   ` Jeff Johnson
2025-04-23  1:37     ` Philip Li
2025-04-23 18:05       ` Jeff Johnson
2025-04-22  9:48 ` kernel test robot
2025-04-29 15:47 ` Nicolas Escande
2025-04-30  6:05   ` Karthikeyan Kathirvel
2025-05-09 16:07     ` Jeff Johnson
2025-06-04  8:59       ` Karthikeyan Kathirvel
2025-06-04 20:38         ` Jeff Johnson
2025-06-06 13:22           ` Karthikeyan Kathirvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox