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
This commit is contained in:

committed by
Madan Koyyalamudi

parent
0572ed0dcc
commit
b5080fb430
@@ -187,6 +187,8 @@ static const int beacon_filter_table[] = {
|
|||||||
WLAN_ELEMID_HTINFO_ANA,
|
WLAN_ELEMID_HTINFO_ANA,
|
||||||
WLAN_ELEMID_OP_MODE_NOTIFY,
|
WLAN_ELEMID_OP_MODE_NOTIFY,
|
||||||
WLAN_ELEMID_VHTOP,
|
WLAN_ELEMID_VHTOP,
|
||||||
|
WLAN_ELEMID_QUIET_CHANNEL,
|
||||||
|
WLAN_ELEMID_TWT,
|
||||||
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
||||||
/*
|
/*
|
||||||
* EID: 221 vendor IE is being used temporarily by 11AX
|
* EID: 221 vendor IE is being used temporarily by 11AX
|
||||||
@@ -198,6 +200,18 @@ static const int beacon_filter_table[] = {
|
|||||||
#endif
|
#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 */
|
/* HE operation BIT positins */
|
||||||
#if defined(WLAN_FEATURE_11AX)
|
#if defined(WLAN_FEATURE_11AX)
|
||||||
#define HE_OPERATION_DFLT_PE_DURATION_POS 0
|
#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);
|
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(beacon_filter_table); i++)
|
for (i = 0; i < ARRAY_SIZE(beacon_filter_table); i++)
|
||||||
qdf_set_bit((beacon_filter_table[i]),
|
qdf_set_bit(beacon_filter_table[i],
|
||||||
(unsigned long int *)ie_map);
|
(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,
|
status = sme_add_beacon_filter(hdd_ctx->mac_handle,
|
||||||
adapter->vdev_id, ie_map);
|
adapter->vdev_id, ie_map);
|
||||||
|
@@ -3916,7 +3916,8 @@ struct stsf {
|
|||||||
uint32_t tsf_id_valid;
|
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
|
* struct beacon_filter_param - parameters for beacon filtering
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
|
@@ -12275,7 +12275,7 @@ QDF_STATUS sme_add_beacon_filter(mac_handle_t mac_handle,
|
|||||||
filter_param->vdev_id = session_id;
|
filter_param->vdev_id = session_id;
|
||||||
|
|
||||||
qdf_mem_copy(filter_param->ie_map, ie_map,
|
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.type = WMA_ADD_BCN_FILTER_CMDID;
|
||||||
message.bodyptr = filter_param;
|
message.bodyptr = filter_param;
|
||||||
|
@@ -1062,6 +1062,10 @@ QDF_STATUS wma_add_beacon_filter(WMA_HANDLE handle,
|
|||||||
len += WMI_TLV_HDR_SIZE;
|
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))
|
if (wma_validate_handle(wma))
|
||||||
return QDF_STATUS_E_INVAL;
|
return QDF_STATUS_E_INVAL;
|
||||||
|
|
||||||
@@ -1102,6 +1106,21 @@ QDF_STATUS wma_add_beacon_filter(WMA_HANDLE handle,
|
|||||||
(uint8_t *)ie_map,
|
(uint8_t *)ie_map,
|
||||||
BCN_FLT_MAX_ELEMS_IE_LIST * sizeof(u_int32_t));
|
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,
|
ret = wmi_unified_cmd_send(wmi_handle, wmi_buf, len,
|
||||||
WMI_ADD_BCN_FILTER_CMDID);
|
WMI_ADD_BCN_FILTER_CMDID);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
Reference in New Issue
Block a user