1
0

qcacld-3.0: enhancement the beacon filter table

Enhancement the beacon filter table to add more
elements and extension elements.

Change-Id: Iee3bc9d768227102a971bafdb41db445c0f03d31
CRs-Fixed: 3296203
Este cometimento está contido em:
Paul Zhang
2022-10-12 11:27:05 +08:00
cometido por Madan Koyyalamudi
ascendente 0572ed0dcc
cometimento b5080fb430
4 ficheiros modificados com 43 adições e 5 eliminações

Ver ficheiro

@@ -187,6 +187,8 @@ static const int beacon_filter_table[] = {
WLAN_ELEMID_HTINFO_ANA,
WLAN_ELEMID_OP_MODE_NOTIFY,
WLAN_ELEMID_VHTOP,
WLAN_ELEMID_QUIET_CHANNEL,
WLAN_ELEMID_TWT,
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
/*
* EID: 221 vendor IE is being used temporarily by 11AX
@@ -198,6 +200,18 @@ static const int beacon_filter_table[] = {
#endif
};
/**
* beacon_filter_extn_table - table of extn IEs used for beacon filtering
*/
static const int beacon_filter_extn_table[] = {
WLAN_EXTN_ELEMID_HEOP,
WLAN_EXTN_ELEMID_UORA,
WLAN_EXTN_ELEMID_MUEDCA,
#ifdef WLAN_FEATURE_11BE
WLAN_EXTN_ELEMID_EHTOP,
#endif
};
/* HE operation BIT positins */
#if defined(WLAN_FEATURE_11AX)
#define HE_OPERATION_DFLT_PE_DURATION_POS 0
@@ -525,8 +539,12 @@ int hdd_add_beacon_filter(struct hdd_adapter *adapter)
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
for (i = 0; i < ARRAY_SIZE(beacon_filter_table); i++)
qdf_set_bit((beacon_filter_table[i]),
(unsigned long int *)ie_map);
qdf_set_bit(beacon_filter_table[i],
(unsigned long *)ie_map);
for (i = 0; i < ARRAY_SIZE(beacon_filter_extn_table); i++)
qdf_set_bit(beacon_filter_extn_table[i] + WLAN_ELEMID_EXTN_ELEM,
(unsigned long *)ie_map);
status = sme_add_beacon_filter(hdd_ctx->mac_handle,
adapter->vdev_id, ie_map);

Ver ficheiro

@@ -3916,7 +3916,8 @@ struct stsf {
uint32_t tsf_id_valid;
};
#define SIR_BCN_FLT_MAX_ELEMS_IE_LIST 8
/* ie + extn ie */
#define SIR_BCN_FLT_MAX_ELEMS_IE_LIST (8 + 8)
/**
* struct beacon_filter_param - parameters for beacon filtering
* @vdev_id: vdev id

Ver ficheiro

@@ -12275,7 +12275,7 @@ QDF_STATUS sme_add_beacon_filter(mac_handle_t mac_handle,
filter_param->vdev_id = session_id;
qdf_mem_copy(filter_param->ie_map, ie_map,
BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(uint32_t));
SIR_BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(uint32_t));
message.type = WMA_ADD_BCN_FILTER_CMDID;
message.bodyptr = filter_param;

Ver ficheiro

@@ -1060,7 +1060,11 @@ QDF_STATUS wma_add_beacon_filter(WMA_HANDLE handle,
int len = sizeof(wmi_add_bcn_filter_cmd_fixed_param);
len += WMI_TLV_HDR_SIZE;
len += BCN_FLT_MAX_ELEMS_IE_LIST*sizeof(A_UINT32);
len += BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(A_UINT32);
/* for ext ie map */
len += WMI_TLV_HDR_SIZE;
len += BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(A_UINT32);
if (wma_validate_handle(wma))
return QDF_STATUS_E_INVAL;
@@ -1102,6 +1106,21 @@ QDF_STATUS wma_add_beacon_filter(WMA_HANDLE handle,
(uint8_t *)ie_map,
BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(u_int32_t));
buf += WMI_TLV_HDR_SIZE;
buf += BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(A_UINT32);
WMITLV_SET_HDR(buf, WMITLV_TAG_ARRAY_UINT32,
(BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(u_int32_t)));
ie_map = (A_UINT32 *)(buf + WMI_TLV_HDR_SIZE);
for (i = 0; i < BCN_FLT_MAX_ELEMS_IE_LIST; i++)
ie_map[i] = filter_params->ie_map[i + 8];
wma_debug("Beacon filter ext ie map Hex dump:");
QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_DEBUG,
(uint8_t *)ie_map,
BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(u_int32_t));
ret = wmi_unified_cmd_send(wmi_handle, wmi_buf, len,
WMI_ADD_BCN_FILTER_CMDID);
if (ret) {