diff --git a/dp/wifi3.0/dp_htt.h b/dp/wifi3.0/dp_htt.h index 6bba1e8a4b..8a2a1223ce 100644 --- a/dp/wifi3.0/dp_htt.h +++ b/dp/wifi3.0/dp_htt.h @@ -512,22 +512,28 @@ struct dp_tx_mon_upstream_tlv_config { /** * struct dp_tx_mon_wordmask_config - Tx monitor word mask - * @tx_fes_setup: TX_FES_SETUP TLV word mask + * @pcu_ppdu_setup_init: PCU_PPDU_SETUP TLV word mask * @tx_peer_entry: TX_PEER_ENTRY TLV word mask * @tx_queue_ext: TX_QUEUE_EXTENSION TLV word mask + * @tx_fes_status_end: TX_FES_STATUS_END TLV word mask + * @response_end_status: RESPONSE_END_STATUS TLV word mask + * @tx_fes_status_prot: TX_FES_STATUS_PROT TLV word mask + * @tx_fes_setup: TX_FES_SETUP TLV word mask * @tx_msdu_start: TX_MSDU_START TLV word mask * @tx_mpdu_start: TX_MPDU_START TLV word mask - * @pcu_ppdu_setup_init: PCU_PPDU_SETUP TLV word mask * @rxpcu_user_setup: RXPCU_USER_SETUP TLV word mask */ struct dp_tx_mon_wordmask_config { - uint16_t tx_fes_setup; + uint32_t pcu_ppdu_setup_init; uint16_t tx_peer_entry; uint16_t tx_queue_ext; - uint16_t tx_msdu_start; - uint16_t tx_mpdu_start; - uint32_t pcu_ppdu_setup_init; - uint16_t rxpcu_user_setup; + uint16_t tx_fes_status_end; + uint16_t response_end_status; + uint16_t tx_fes_status_prot; + uint8_t tx_fes_setup; + uint8_t tx_msdu_start; + uint8_t tx_mpdu_start; + uint8_t rxpcu_user_setup; }; /** @@ -536,6 +542,7 @@ struct dp_tx_mon_wordmask_config { * @dtlvs: enable/disable downstream TLVs * @utlvs: enable/disable upstream TLVs * @wmask: enable/disable word mask subscription + * @compaction_enable: word mask compaction enable * @mgmt_filter: enable/disable mgmt packets * @data_filter: enable/disable data packets * @ctrl_filter: enable/disable ctrl packets @@ -565,6 +572,7 @@ struct htt_tx_ring_tlv_filter { struct dp_tx_mon_downstream_tlv_config dtlvs; struct dp_tx_mon_upstream_tlv_config utlvs; struct dp_tx_mon_wordmask_config wmask; + uint8_t compaction_enable; uint16_t mgmt_filter; uint16_t data_filter; uint16_t ctrl_filter; diff --git a/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c b/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c index 64dd576f6f..c11bbdb6cc 100644 --- a/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c +++ b/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c @@ -1398,17 +1398,6 @@ void dp_tx_mon_filter_set_upstream_tlvs(struct htt_tx_ring_tlv_filter *filter) filter->utlvs.eht_sig_usr_ofdma = 1; } -void dp_tx_mon_filter_set_word_mask(struct htt_tx_ring_tlv_filter *filter) -{ - filter->wmask.tx_fes_setup = 1; - filter->wmask.tx_peer_entry = 1; - filter->wmask.tx_queue_ext = 1; - filter->wmask.tx_msdu_start = 1; - filter->wmask.tx_mpdu_start = 1; - filter->wmask.pcu_ppdu_setup_init = 1; - filter->wmask.rxpcu_user_setup = 1; -} - void dp_tx_mon_filter_set_all(struct dp_mon_pdev_be *mon_pdev_be, struct htt_tx_ring_tlv_filter *filter) { @@ -1421,7 +1410,6 @@ void dp_tx_mon_filter_set_all(struct dp_mon_pdev_be *mon_pdev_be, dp_tx_mon_filter_set_downstream_tlvs(filter); dp_tx_mon_filter_set_upstream_tlvs(filter); - dp_tx_mon_filter_set_word_mask(filter); filter->mgmt_filter = 0x1; filter->data_filter = 0x1; @@ -1448,6 +1436,26 @@ void dp_tx_mon_filter_set_all(struct dp_mon_pdev_be *mon_pdev_be, filter->data_dma_length = mon_pdev_be->tx_mon_filter_length; } +void dp_tx_mon_filter_set_word_mask(struct dp_pdev *pdev, + struct htt_tx_ring_tlv_filter *filter) +{ + /* invoke hal api to get the word mask */ + + filter->wmask.pcu_ppdu_setup_init = 0xFFFFFFFF; + filter->wmask.tx_peer_entry = 0xFFFF; + filter->wmask.tx_queue_ext = 0xFFFF; + filter->wmask.tx_fes_status_end = 0xFFFF; + filter->wmask.response_end_status = 0xFFFF; + filter->wmask.tx_fes_status_prot = 0xFFFF; + filter->wmask.tx_fes_setup = 0xFF; + filter->wmask.tx_msdu_start = 0xFF; + filter->wmask.tx_mpdu_start = 0xFF; + filter->wmask.rxpcu_user_setup = 0xFF; + + /* compaction is disable */ + filter->compaction_enable = 0; +} + void dp_mon_filter_setup_tx_mon_mode_2_0(struct dp_pdev *pdev) { struct dp_mon_filter_be filter = {0}; @@ -1479,6 +1487,7 @@ void dp_mon_filter_setup_tx_mon_mode_2_0(struct dp_pdev *pdev) filter.tx_valid = !!mon_pdev_be->tx_mon_mode; dp_tx_mon_filter_set_all(mon_pdev_be, &filter.tx_tlv_filter); + dp_tx_mon_filter_set_word_mask(pdev, &filter.tx_tlv_filter); dp_mon_filter_show_tx_filter_be(mode, &filter); mon_pdev_be->filter_be[mode][srng_type] = filter; } @@ -3156,8 +3165,10 @@ dp_mon_filter_reset_tx_lite_mon(struct dp_mon_pdev_be *be_mon_pdev) } void -dp_mon_filter_setup_tx_lite_mon(struct dp_mon_pdev_be *be_mon_pdev) +dp_mon_filter_setup_tx_lite_mon(struct dp_pdev *pdev) { + struct dp_mon_pdev *mon_pdev = NULL; + struct dp_mon_pdev_be *be_mon_pdev = NULL; struct dp_mon_filter_be filter = {0}; enum dp_mon_filter_mode mode = DP_MON_FILTER_LITE_MON_MODE; enum dp_mon_filter_srng_type srng_type = @@ -3165,6 +3176,19 @@ dp_mon_filter_setup_tx_lite_mon(struct dp_mon_pdev_be *be_mon_pdev) struct htt_tx_ring_tlv_filter *tx_tlv_filter = &filter.tx_tlv_filter; struct dp_lite_mon_tx_config *config = NULL; + if (!pdev) { + dp_mon_filter_err("Pdev context is null"); + return; + } + + mon_pdev = pdev->monitor_pdev; + if (!mon_pdev) { + dp_mon_filter_err("Monitor pdev context is null"); + return; + } + + be_mon_pdev = dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev); + config = be_mon_pdev->lite_mon_tx_config; if (!config) return; @@ -3182,7 +3206,7 @@ dp_mon_filter_setup_tx_lite_mon(struct dp_mon_pdev_be *be_mon_pdev) dp_tx_mon_filter_set_downstream_tlvs(tx_tlv_filter); dp_tx_mon_filter_set_upstream_tlvs(tx_tlv_filter); - dp_tx_mon_filter_set_word_mask(tx_tlv_filter); + dp_tx_mon_filter_set_word_mask(pdev, tx_tlv_filter); /* configure mgmt filters */ if (config->tx_config.mgmt_filter[DP_MON_FRM_FILTER_MODE_FP]) { diff --git a/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.h b/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.h index 2d13dbc6d1..f1aff5b70b 100644 --- a/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.h +++ b/dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.h @@ -318,10 +318,10 @@ void dp_mon_filter_reset_tx_lite_mon(struct dp_mon_pdev_be *be_mon_pdev); /** * dp_mon_filter_setup_tx_lite_mon() - Setup tx lite monitor filter - * @be_mon_pdev: physical mon device handle + * @pdev: physical device handle * * Return: Null */ -void dp_mon_filter_setup_tx_lite_mon(struct dp_mon_pdev_be *be_mon_pdev); +void dp_mon_filter_setup_tx_lite_mon(struct dp_pdev *pdev); #endif #endif /* _DP_MON_FILTER_2_0_H_ */