|
@@ -928,26 +928,48 @@ int htt_h2t_rx_ring_cfg(void *htt_soc, int pdev_id, void *hal_srng,
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_md) {
|
|
|
+ /* TYPE: MGMT */
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 0000,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_ASSOC_REQ) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 0001,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_ASSOC_RES) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 0010,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_REASSOC_REQ) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 0011,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_REASSOC_RES) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 0100,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_PROBE_REQ) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 0101,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_PROBE_RES) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 0110,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_TIM_ADVT) ? 1 : 0);
|
|
|
+ /* reserved */
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0000, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0001, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0010, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0011, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0100, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0101, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0110, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 0111, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 1000, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0, MD,
|
|
|
- MGMT, 1001, 1);
|
|
|
+ MGMT, 0111,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_RESERVED_7) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 1000,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_BEACON) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG0,
|
|
|
+ MD, MGMT, 1001,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_ATIM) ? 1 : 0);
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_mo) {
|
|
@@ -1029,16 +1051,27 @@ int htt_h2t_rx_ring_cfg(void *htt_soc, int pdev_id, void *hal_srng,
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_md) {
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1, MD,
|
|
|
- MGMT, 1010, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1, MD,
|
|
|
- MGMT, 1011, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1, MD,
|
|
|
- MGMT, 1100, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1, MD,
|
|
|
- MGMT, 1101, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1, MD,
|
|
|
- MGMT, 1110, 1);
|
|
|
+ /* TYPE: MGMT */
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1,
|
|
|
+ MD, MGMT, 1010,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_DISASSOC) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1,
|
|
|
+ MD, MGMT, 1011,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_AUTH) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1,
|
|
|
+ MD, MGMT, 1100,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_DEAUTH) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1,
|
|
|
+ MD, MGMT, 1101,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_ACTION) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG1,
|
|
|
+ MD, MGMT, 1110,
|
|
|
+ (htt_tlv_filter->md_mgmt_filter &
|
|
|
+ FILTER_MGMT_ACT_NO_ACK) ? 1 : 0);
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_mo) {
|
|
@@ -1122,26 +1155,50 @@ int htt_h2t_rx_ring_cfg(void *htt_soc, int pdev_id, void *hal_srng,
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_md) {
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MO,
|
|
|
- CTRL, 0000, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MO,
|
|
|
- CTRL, 0001, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MO,
|
|
|
- CTRL, 0010, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MO,
|
|
|
- CTRL, 0011, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MO,
|
|
|
- CTRL, 0100, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MO,
|
|
|
- CTRL, 0101, 1);
|
|
|
- htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MO,
|
|
|
- CTRL, 0110, 1);
|
|
|
+ /* TYPE: CTRL */
|
|
|
+ /* reserved */
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
- CTRL, 0111, 1);
|
|
|
+ CTRL, 0000,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_RESERVED_1) ? 1 : 0);
|
|
|
+ /* reserved */
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
- CTRL, 1000, 1);
|
|
|
+ CTRL, 0001,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_RESERVED_2) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
- CTRL, 1001, 1);
|
|
|
+ CTRL, 0010,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_TRIGGER) ? 1 : 0);
|
|
|
+ /* reserved */
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
+ CTRL, 0011,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_RESERVED_4) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
+ CTRL, 0100,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_BF_REP_POLL) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
+ CTRL, 0101,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_VHT_NDP) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
+ CTRL, 0110,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_FRAME_EXT) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
+ CTRL, 0111,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_CTRLWRAP) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
+ CTRL, 1000,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_BA_REQ) ? 1 : 0);
|
|
|
+ htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG2, MD,
|
|
|
+ CTRL, 1001,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_BA) ? 1 : 0);
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_mo) {
|
|
@@ -1236,24 +1293,44 @@ int htt_h2t_rx_ring_cfg(void *htt_soc, int pdev_id, void *hal_srng,
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_md) {
|
|
|
+ /* TYPE: CTRL */
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- CTRL, 1010, 1);
|
|
|
+ CTRL, 1010,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_PSPOLL) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- CTRL, 1011, 1);
|
|
|
+ CTRL, 1011,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_RTS) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- CTRL, 1100, 1);
|
|
|
+ CTRL, 1100,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_CTS) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- CTRL, 1101, 1);
|
|
|
+ CTRL, 1101,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_ACK) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- CTRL, 1110, 1);
|
|
|
+ CTRL, 1110,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_CFEND) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- CTRL, 1111, 1);
|
|
|
+ CTRL, 1111,
|
|
|
+ (htt_tlv_filter->md_ctrl_filter &
|
|
|
+ FILTER_CTRL_CFEND_CFACK) ? 1 : 0);
|
|
|
+ /* TYPE: DATA */
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- DATA, MCAST, 1);
|
|
|
+ DATA, MCAST,
|
|
|
+ (htt_tlv_filter->md_data_filter &
|
|
|
+ FILTER_DATA_MCAST) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- DATA, UCAST, 1);
|
|
|
+ DATA, UCAST,
|
|
|
+ (htt_tlv_filter->md_data_filter &
|
|
|
+ FILTER_DATA_UCAST) ? 1 : 0);
|
|
|
htt_rx_ring_pkt_enable_subtype_set(*msg_word, FLAG3, MD,
|
|
|
- DATA, NULL, 1);
|
|
|
+ DATA, NULL,
|
|
|
+ (htt_tlv_filter->md_data_filter &
|
|
|
+ FILTER_DATA_NULL) ? 1 : 0);
|
|
|
}
|
|
|
|
|
|
if (htt_tlv_filter->enable_mo) {
|