qcacmn: Add initial support for word mask compaction
Add initial support for word mask compaction. Change-Id: Ife05e355395fbc6c6804c34f62954a2b04a2cd03 CRs-Fixed: 3398292
This commit is contained in:

committed by
Madan Koyyalamudi

parent
3377c445f8
commit
20db7b641f
@@ -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;
|
||||
|
@@ -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]) {
|
||||
|
@@ -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_ */
|
||||
|
Reference in New Issue
Block a user