1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/wireless/ath/wcn36xx
Bryan O'Donoghue bebd87eea2 wcn36xx: Implement beacon filtering
The prima driver facilitates the direct programming of beacon filter tables via
SMD commands.

The purpose of beacon filters is quote:

/* When beacon filtering is enabled, firmware will
 * analyze the selected beacons received during BMPS,
 * and monitor any changes in the IEs as listed below.
 * The format of the table is:
 *    - EID
 *    - Check for IE presence
 *    - Byte offset
 *    - Byte value
 *    - Bit Mask
 *    - Byte reference
 */

The default filter table looks something like this:

tBeaconFilterIe gaBcnFilterTable[12] =
{
  { WLAN_EID_DS_PARAMS, 0u, { 0u, 0u, 0u, 0u } },
  { WLAN_EID_ERP_INFO, 0u, { 0u, 0u, 248u, 0u } },
  { WLAN_EID_EDCA_PARAM_SET, 0u, { 0u, 0u, 240u, 0u } },
  { WLAN_EID_QOS_CAPA, 0u, { 0u, 0u, 240u, 0u } },
  { WLAN_EID_CHANNEL_SWITCH, 1u, { 0u, 0u, 0u, 0u } },
  { WLAN_EID_QUIET, 1u, { 0u, 0u, 0u, 0u } },
  { WLAN_EID_HT_OPERATION, 0u, { 0u, 0u, 0u, 0u } },
  { WLAN_EID_HT_OPERATION, 0u, { 1u, 0u, 248u, 0u } },
  { WLAN_EID_HT_OPERATION, 0u, { 2u, 0u, 235u, 0u } },
  { WLAN_EID_HT_OPERATION, 0u, { 5u, 0u, 253u, 0u } },
  { WLAN_EID_PWR_CONSTRAINT, 0u, { 0u, 0u, 0u, 0u } },
  { WLAN_EID_OPMODE_NOTIF, 0u, { 0u, 0u, 0u, 0u } }
};

Add in an equivalent filter set as present in the prima Linux driver.
For now omit the beacon filter "rem" command as the driver does not have an
explicit call to that SMD command. The filter mask should only count when
we are inside BMPS anyway.

Replicating the ability to program the filter table gives us scope to add and
remove elements in future. For now though this patch makes the rote-copy of the
downstream Linux beacon filter table, which we can tweak as desired from now
on.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20211214134630.2214840-4-bryan.odonoghue@linaro.org
2021-12-16 17:37:36 +02:00
..
debug.c wcn36xx: Add ability for wcn36xx_smd_dump_cmd_req to pass two's complement 2021-09-21 16:33:25 +03:00
debug.h
dxe.c wcn36xx: Put DXE block into reset before freeing memory 2021-11-08 15:21:17 +02:00
dxe.h wcn36xx: implement flush op to speed up connected scan 2021-11-01 16:18:37 +02:00
hal.h wcn36xx: Implement beacon filtering 2021-12-16 17:37:36 +02:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
main.c wcn36xx: Implement beacon filtering 2021-12-16 17:37:36 +02:00
Makefile ath: fix SPDX tags 2019-06-26 18:11:06 +03:00
pmc.c Revert "wcn36xx: Disable bmps when encryption is disabled" 2021-10-27 10:43:31 +03:00
pmc.h
smd.c wcn36xx: Implement beacon filtering 2021-12-16 17:37:36 +02:00
smd.h wcn36xx: Implement beacon filtering 2021-12-16 17:37:36 +02:00
testmode.c netlink: make validation more configurable for future strictness 2019-04-27 17:07:21 -04:00
testmode.h wcn36xx: Replace zero-length array with flexible-array 2020-05-13 19:03:06 +03:00
testmode_i.h wcn36xx: Add support for Factory Test Mode (FTM) 2018-05-25 13:17:28 +03:00
txrx.c wcn36xx: fix RX BD rate mapping for 5GHz legacy rates 2021-11-08 15:22:52 +02:00
txrx.h wcn36xx: Correct band/freq reporting on RX 2021-10-27 10:41:44 +03:00
wcn36xx.h wcn36xx: ensure pairing of init_scan/finish_scan and start_scan/end_scan 2021-11-01 16:18:37 +02:00