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:

cometido por
Madan Koyyalamudi

ascendente
0572ed0dcc
cometimento
b5080fb430
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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) {
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador