Bläddra i källkod

qcacmn: Set LTF keyseed required for existing peer also

LTF keyseed required flag is set only for newly created PASN
peer. This value is filled from the security mode value received
the PASN peer create request event from the firmware.
If PASN peer already exists, then the peer is just added to the
peer list and secure LTF keyseed required flag is not updated.
This leads to wrong sequence of commands going to firmware.

Expected sequence: Install TK -> Set LTF keyseed -> PASN Auth
STATUS.

Observed Sequence: Install TK -> PASN Auth status -> Set LTF
keyseed -> PASN Auth status.

So set the is_ltf_keyseed required flag for already existing
PASN peer also

Change-Id: If9994ad01a96bdb26ad55538a67feaed7e22892f
CRs-Fixed: 3742573
Pragaspathi Thilagaraj 1 år sedan
förälder
incheckning
ba7f3371ee
2 ändrade filer med 18 tillägg och 3 borttagningar
  1. 12 3
      umac/wifi_pos/src/wifi_pos_pasn_api.c
  2. 6 0
      wmi/src/wmi_unified_tlv.c

+ 12 - 3
umac/wifi_pos/src/wifi_pos_pasn_api.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -369,8 +369,8 @@ QDF_STATUS wifi_pos_handle_ranging_peer_create(struct wlan_objmgr_psoc *psoc,
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	wifi_pos_debug("PASN peer create request received. Num peers:%d",
-		       total_entries);
+	wifi_pos_debug("vdev:%d PASN peer create request received. Num peers:%d",
+		       vdev_id, total_entries);
 	for (i = 0; i < total_entries; i++) {
 		peer = wlan_objmgr_get_peer_by_mac(psoc, req[i].peer_mac.bytes,
 						   WLAN_WIFI_POS_CORE_ID);
@@ -384,6 +384,13 @@ QDF_STATUS wifi_pos_handle_ranging_peer_create(struct wlan_objmgr_psoc *psoc,
 			wifi_pos_debug("PASN Peer: " QDF_MAC_ADDR_FMT "already exists",
 				       QDF_MAC_ADDR_REF(req[i].peer_mac.bytes));
 			wifi_pos_add_peer_to_list(vdev, &req[i], false);
+
+			if (req[i].is_ltf_keyseed_required)
+				wifi_pos_set_peer_ltf_keyseed_required(peer,
+								       true);
+			else
+				wifi_pos_set_peer_ltf_keyseed_required(peer,
+								       false);
 			wlan_objmgr_peer_release_ref(peer,
 						     WLAN_WIFI_POS_CORE_ID);
 			continue;
@@ -690,6 +697,8 @@ wifi_pos_set_peer_ltf_keyseed_required(struct wlan_objmgr_peer *peer,
 	}
 
 	peer_priv->is_ltf_keyseed_required = value;
+	wifi_pos_debug("peer_mac:" QDF_MAC_ADDR_FMT " value:%d",
+		       QDF_MAC_ADDR_REF(wlan_peer_get_macaddr(peer)), value);
 
 	return QDF_STATUS_SUCCESS;
 }

+ 6 - 0
wmi/src/wmi_unified_tlv.c

@@ -19032,6 +19032,12 @@ extract_pasn_peer_create_req_event_tlv(wmi_unified_t wmi_handle, void *evt_buf,
 		dst->peer_info[i].force_self_mac_usage =
 			WMI_RTT_PASN_PEER_CREATE_FORCE_SELF_MAC_USE_GET(
 							buf->control_flag);
+		wmi_debug("Peer[%d]: self_mac:" QDF_MAC_ADDR_FMT " peer_mac:" QDF_MAC_ADDR_FMT "security_mode:0x%x force_self_mac:%d",
+			  i, QDF_MAC_ADDR_REF(dst->peer_info[i].self_mac.bytes),
+			  QDF_MAC_ADDR_REF(dst->peer_info[i].peer_mac.bytes),
+			  security_mode,
+			  dst->peer_info[i].force_self_mac_usage);
+
 		dst->num_peers++;
 		buf++;
 	}