qcacmn: Add support to parse reconfig ML IE

Add support to parse Reconifg ML IE and fill ml info in the scan
cache entry.

Change-Id: Ieb7ba1731d82474fbead1d6edbe1584fbdb42e0d
CRs-Fixed: 3347362
Este commit está contenido en:
Deeksha Gupta
2022-11-28 16:52:16 +05:30
cometido por Madan Koyyalamudi
padre 299c4870e5
commit de6b627426
Se han modificado 3 ficheros con 34 adiciones y 2 borrados

Ver fichero

@@ -205,8 +205,9 @@ struct channel_info {
* @rsnxe: Pointer to rsnxe IE
* @ehtcap: pointer to ehtcap ie
* @ehtop: pointer to eht op ie
* @t2lm: array of pointers to t2lm op ie
* @multi_link_bv: pointer to multi link basic variant IE
* @multi_link_rv: pointer to multi link reconfig IE
* @t2lm: array of pointers to t2lm op ie
* @bwnss_map: pointer to NSS map IE
* @secchanoff: pointer to secondary chan IE
* @mdie: pointer to md IE
@@ -274,6 +275,7 @@ struct ie_list {
#endif
#ifdef WLAN_FEATURE_11BE_MLO
uint8_t *multi_link_bv;
uint8_t *multi_link_rv;
uint8_t *t2lm[WLAN_MAX_T2LM_IE];
#endif
uint8_t *qcn;

Ver fichero

@@ -742,6 +742,8 @@ util_scan_copy_beacon_data(struct scan_cache_entry *new_entry,
#ifdef WLAN_FEATURE_11BE_MLO
ie_lst->multi_link_bv =
conv_ptr(ie_lst->multi_link_bv, old_ptr, new_ptr);
ie_lst->multi_link_rv =
conv_ptr(ie_lst->multi_link_rv, old_ptr, new_ptr);
for (i = 0; i < WLAN_MAX_T2LM_IE; i++)
ie_lst->t2lm[i] = conv_ptr(ie_lst->t2lm[i], old_ptr, new_ptr);
#endif

Ver fichero

@@ -33,6 +33,7 @@
#ifdef WLAN_FEATURE_11BE_MLO
#include <wlan_utility.h>
#include "wlan_mlo_mgr_public_structs.h"
#include <utils_mlo.h>
#endif
#include "wlan_psoc_mlme_api.h"
#include "reg_services_public_struct.h"
@@ -1173,8 +1174,35 @@ util_scan_parse_t2lm_ie(struct scan_cache_entry *scan_params,
static void util_scan_parse_ml_ie(struct scan_cache_entry *scan_params,
struct extn_ie_header *extn_ie)
{
if (extn_ie->ie_extn_id == WLAN_EXTN_ELEMID_MULTI_LINK)
uint8_t *ml_ie;
uint32_t ml_ie_len;
enum wlan_ml_variant ml_variant;
QDF_STATUS ret;
if (extn_ie->ie_extn_id != WLAN_EXTN_ELEMID_MULTI_LINK)
return;
ml_ie = (uint8_t *)extn_ie;
ml_ie_len = ml_ie[TAG_LEN_POS];
/* Adding the size of IE header to ML IE length */
ml_ie_len += sizeof(struct ie_header);
ret = util_get_mlie_variant(ml_ie, ml_ie_len, (int *)&ml_variant);
if (ret) {
scm_err("Unable to get ml variant");
return;
}
switch (ml_variant) {
case WLAN_ML_VARIANT_BASIC:
scan_params->ie_list.multi_link_bv = (uint8_t *)extn_ie;
break;
case WLAN_ML_VARIANT_RECONFIG:
scan_params->ie_list.multi_link_rv = (uint8_t *)extn_ie;
break;
default:
break;
}
}
#else
static void util_scan_parse_ml_ie(struct scan_cache_entry *scan_params,