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
This commit is contained in:
Pragaspathi Thilagaraj
2022-04-12 13:00:17 +05:30
committed by Madan Koyyalamudi
parent e79a7628e6
commit 4abe857789
4 changed files with 30 additions and 1 deletions

View File

@@ -114,6 +114,23 @@ init_deinit_update_wifi_pos_caps(struct wmi_unified *wmi_handle,
{} {}
#endif #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, static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
uint8_t *event, uint8_t *event,
uint32_t data_len) 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_psoc_nif_fw_ext_cap_set(psoc,
WLAN_SOC_CEXT_CSA_TX_OFFLOAD); WLAN_SOC_CEXT_CSA_TX_OFFLOAD);
init_deinit_update_roam_stats_cap(wmi_handle, psoc);
init_deinit_update_wifi_pos_caps(wmi_handle, psoc); init_deinit_update_wifi_pos_caps(wmi_handle, psoc);
/* override derived value, if it exceeds max peer count */ /* override derived value, if it exceeds max peer count */

View File

@@ -240,6 +240,9 @@
/* 11AZ Secure ranging PHY Security support */ /* 11AZ Secure ranging PHY Security support */
#define WLAN_RTT_11AZ_MAC_PHY_SEC_SUPPORT 0x00000004 #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 */ /* PSOC op flags */
/* Invalid VHT cap */ /* Invalid VHT cap */

View File

@@ -5594,6 +5594,9 @@ typedef enum {
wmi_service_rtt_11az_tb_support, wmi_service_rtt_11az_tb_support,
#endif #endif
wmi_service_pktlog_decode_info_support, wmi_service_pktlog_decode_info_support,
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
wmi_service_roam_stats_per_candidate_frame_info,
#endif
wmi_services_max, wmi_services_max,
} wmi_conv_service_ids; } wmi_conv_service_ids;
#define WMI_SERVICE_UNAVAILABLE 0xFFFF #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_CHAN 38
#define MAX_ROAM_SCAN_STATS_TLV 5 #define MAX_ROAM_SCAN_STATS_TLV 5
#define WLAN_MAX_BTM_CANDIDATE 8 #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 * struct btm_req_candidate_info - BTM request candidate
* info * info

View File

@@ -18806,6 +18806,10 @@ static void populate_tlv_service(uint32_t *wmi_service)
#endif #endif
wmi_service[wmi_service_pktlog_decode_info_support] = wmi_service[wmi_service_pktlog_decode_info_support] =
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
} }
/** /**