qcacmn: Add support to RNR and multi link IE parsing for ML scoring
Add support to parse RNS and ML IE and fill ml info in the scan cache entry. Change-Id: Ia5fdd0310e20d4435343f0535c071ea3d8510ef8 CRs-Fixed: 2961893
此提交包含在:
@@ -184,6 +184,7 @@ struct channel_info {
|
||||
* @rsnxe: Pointer to rsnxe IE
|
||||
* @ehtcap: pointer to ehtcap ie
|
||||
* @ehtop: pointer to eht op ie
|
||||
* @multi_link: pointer to multi lik IE
|
||||
*/
|
||||
struct ie_list {
|
||||
uint8_t *tim;
|
||||
@@ -242,6 +243,9 @@ struct ie_list {
|
||||
uint8_t *ehtcap;
|
||||
uint8_t *ehtop;
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
uint8_t *multi_link;
|
||||
#endif
|
||||
};
|
||||
|
||||
enum scan_entry_connection_state {
|
||||
@@ -373,6 +377,20 @@ struct non_inheritance_ie {
|
||||
bool non_inh_ie_found;
|
||||
};
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
/**
|
||||
* struct rnr_mld_info - Reduced Neighbor Report MLD information
|
||||
* @mld_id: MLD ID
|
||||
* @link_id: Link ID
|
||||
* @bss_param_change_cnt: BSS parameters change count
|
||||
*/
|
||||
struct rnr_mld_info {
|
||||
uint8_t mld_id;
|
||||
uint16_t link_id: 4,
|
||||
bss_param_change_cnt: 8,
|
||||
reserved: 4;
|
||||
};
|
||||
#endif
|
||||
/**
|
||||
* struct rnr_bss_info - Reduced Neighbor Report BSS information
|
||||
* @neighbor_ap_tbtt_offset: Neighbor AP TBTT offset
|
||||
@@ -382,6 +400,7 @@ struct non_inheritance_ie {
|
||||
* @short_ssid: short ssid
|
||||
* @bss_params: BSS parameters
|
||||
* @psd_20mhz: 20MHz power spectral density
|
||||
* @mld_info: MLD information
|
||||
*/
|
||||
struct rnr_bss_info {
|
||||
uint8_t neighbor_ap_tbtt_offset;
|
||||
@@ -391,6 +410,9 @@ struct rnr_bss_info {
|
||||
uint32_t short_ssid;
|
||||
uint8_t bss_params;
|
||||
uint8_t psd_20mhz;
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
struct rnr_mld_info mld_info;
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -424,29 +446,36 @@ struct neighbor_ap_info_field {
|
||||
* enum tbtt_information_field - TBTT information field
|
||||
* @TBTT_NEIGHBOR_AP_OFFSET_ONLY: TBTT information field type
|
||||
* @TBTT_NEIGHBOR_AP_BSS_PARAM: neighbor AP and bss param
|
||||
* @TBTT_NEIGHBOR_AP_MLD_PARAM: neighbor AP and MLD param
|
||||
* @TBTT_NEIGHBOR_AP_SHORTSSID: neighbor AP and Short ssid
|
||||
* @TBTT_NEIGHBOR_AP_S_SSID_BSS_PARAM: neighbor AP, short ssid and bss param
|
||||
* @TBTT_NEIGHBOR_AP_BSSID: neighbor AP and bssid
|
||||
* @TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM: neighbor AP, bssid and bss param
|
||||
* @TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM_20MHZ_PSD: neighbor AP, bssid and bss
|
||||
* param and 20MHz PSD
|
||||
* @TBTT_NEIGHBOR_AP_BSSID_MLD_PARAM: neighbor AP, bssid and MLD param
|
||||
* @TBTT_NEIGHBOR_AP_BSSSID_S_SSID: neighbor AP, bssid and short ssid
|
||||
* @TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM: neighbor AP, bssid, short ssid
|
||||
* and bss params
|
||||
* @TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD: neighbor AP, bssid,
|
||||
* short ssid, bss params and 20MHz PSD
|
||||
* @TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM: neighbor AP,
|
||||
* bssid, short ssid, bss params, 20MHz PSD and MLD param
|
||||
*/
|
||||
enum tbtt_information_field {
|
||||
TBTT_NEIGHBOR_AP_OFFSET_ONLY = 1,
|
||||
TBTT_NEIGHBOR_AP_BSS_PARAM = 2,
|
||||
TBTT_NEIGHBOR_AP_MLD_PARAM = 4,
|
||||
TBTT_NEIGHBOR_AP_SHORTSSID = 5,
|
||||
TBTT_NEIGHBOR_AP_S_SSID_BSS_PARAM = 6,
|
||||
TBTT_NEIGHBOR_AP_BSSID = 7,
|
||||
TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM = 8,
|
||||
TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM_20MHZ_PSD = 9,
|
||||
TBTT_NEIGHBOR_AP_BSSID_MLD_PARAM = 10,
|
||||
TBTT_NEIGHBOR_AP_BSSSID_S_SSID = 11,
|
||||
TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM = 12,
|
||||
TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD = 13
|
||||
TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD = 13,
|
||||
TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM = 16
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -615,6 +615,18 @@ util_scan_entry_copy_ie_data(struct scan_cache_entry *scan_entry,
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
static inline void util_scan_free_ml_info(struct scan_cache_entry *scan_entry)
|
||||
{
|
||||
if (scan_entry->ml_info)
|
||||
qdf_mem_free(scan_entry->ml_info);
|
||||
}
|
||||
#else
|
||||
static inline void util_scan_free_ml_info(struct scan_cache_entry *scan_entry)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* util_scan_free_cache_entry() - function to free scan
|
||||
* cache entry
|
||||
@@ -633,6 +645,8 @@ util_scan_free_cache_entry(struct scan_cache_entry *scan_entry)
|
||||
qdf_mem_free(scan_entry->alt_wcn_ie.ptr);
|
||||
if (scan_entry->raw_frame.ptr)
|
||||
qdf_mem_free(scan_entry->raw_frame.ptr);
|
||||
|
||||
util_scan_free_ml_info(scan_entry);
|
||||
qdf_mem_free(scan_entry);
|
||||
}
|
||||
|
||||
|
新增問題並參考
封鎖使用者