Forráskód Böngészése

qcacmn: Add support for per candidate roam frame capability

Firmware advertises per candidate roam frame capability to
indicate:
1. Firmware sends auth/assoc frames for each candidate to
which roaming was attempted.
2. Fill the frame info TLV with authentication algo = 3
for authentication frames.

Add support for the roam per candidate frame info capability

Change-Id: I95c23031ab0fbc21fb9d8db3bd54004e4d1ac234
CRs-Fixed: 3172311
Pragaspathi Thilagaraj 3 éve
szülő
commit
4abe857789

+ 19 - 0
target_if/init_deinit/src/init_event_handler.c

@@ -114,6 +114,23 @@ init_deinit_update_wifi_pos_caps(struct wmi_unified *wmi_handle,
 {}
 #endif
 
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+static void
+init_deinit_update_roam_stats_cap(struct wmi_unified *wmi_handle,
+				  struct wlan_objmgr_psoc *psoc)
+{
+	if (wmi_service_enabled(wmi_handle,
+				wmi_service_roam_stats_per_candidate_frame_info))
+		wlan_psoc_nif_fw_ext2_cap_set(
+			psoc, WLAN_ROAM_STATS_FRAME_INFO_PER_CANDIDATE);
+}
+#else
+static inline void
+init_deinit_update_roam_stats_cap(struct wmi_unified *wmi_handle,
+				  struct wlan_objmgr_psoc *psoc)
+{}
+#endif
+
 static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
 							uint8_t *event,
 							uint32_t data_len)
@@ -264,6 +281,8 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
 		wlan_psoc_nif_fw_ext_cap_set(psoc,
 					     WLAN_SOC_CEXT_CSA_TX_OFFLOAD);
 
+	init_deinit_update_roam_stats_cap(wmi_handle, psoc);
+
 	init_deinit_update_wifi_pos_caps(wmi_handle, psoc);
 
 	/* override derived value, if it exceeds max peer count */

+ 3 - 0
umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h

@@ -240,6 +240,9 @@
 /* 11AZ Secure ranging PHY Security support */
 #define WLAN_RTT_11AZ_MAC_PHY_SEC_SUPPORT 0x00000004
 
+/* Roam Frame info stats - per candidate frames support */
+#define WLAN_ROAM_STATS_FRAME_INFO_PER_CANDIDATE  0x00000008
+
 /* PSOC op flags */
 
 	/* Invalid VHT cap */

+ 4 - 1
wmi/inc/wmi_unified_param.h

@@ -5594,6 +5594,9 @@ typedef enum {
 	wmi_service_rtt_11az_tb_support,
 #endif
 	wmi_service_pktlog_decode_info_support,
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+	wmi_service_roam_stats_per_candidate_frame_info,
+#endif
 	wmi_services_max,
 } wmi_conv_service_ids;
 #define WMI_SERVICE_UNAVAILABLE 0xFFFF
@@ -7875,7 +7878,7 @@ struct wmi_roam_scan_stats_res {
 #define MAX_ROAM_SCAN_CHAN       38
 #define MAX_ROAM_SCAN_STATS_TLV  5
 #define WLAN_MAX_BTM_CANDIDATE   8
-#define WLAN_ROAM_MAX_FRAME_INFO 6
+#define WLAN_ROAM_MAX_FRAME_INFO (MAX_ROAM_CANDIDATE_AP * 6)
 /**
  * struct btm_req_candidate_info  - BTM request candidate
  * info

+ 4 - 0
wmi/src/wmi_unified_tlv.c

@@ -18806,6 +18806,10 @@ static void populate_tlv_service(uint32_t *wmi_service)
 #endif
 	wmi_service[wmi_service_pktlog_decode_info_support] =
 		WMI_SERVICE_PKTLOG_DECODE_INFO_SUPPORT;
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+	wmi_service[wmi_service_roam_stats_per_candidate_frame_info] =
+		WMI_SERVICE_ROAM_STAT_PER_CANDIDATE_FRAME_INFO_SUPPORT;
+#endif
 }
 
 /**