• Bryan O'Donoghue's avatar
    wcn36xx: Implement beacon filtering · bebd87ee
    Bryan O'Donoghue authored
    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: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20211214134630.2214840-4-bryan.odonoghue@linaro.org
    bebd87ee
smd.c 95.8 KB