qcacmn: invoke hal api to populate word mask

Added hal api to populate word mask

Change-Id: Ic13fdb1fa4104618d67f3f7aae25681951d78581
CRs-Fixed: 3422903
This commit is contained in:
Nobel Sharanyan Jeganathan
2023-03-01 07:08:28 -08:00
committed by Madan Koyyalamudi
parent 6d70bfb469
commit 799d46a277
6 changed files with 62 additions and 30 deletions

View File

@@ -1170,6 +1170,10 @@ int htt_h2t_tx_ring_cfg(struct htt_soc *htt_soc, int pdev_id,
if (htt_tlv_filter->data_msdu_end) if (htt_tlv_filter->data_msdu_end)
HTT_TX_MONITOR_CFG_FILTER_IN_TX_MSDU_END_DATA_SET(*msg_word, 1); HTT_TX_MONITOR_CFG_FILTER_IN_TX_MSDU_END_DATA_SET(*msg_word, 1);
if (htt_tlv_filter->compaction_enable)
HTT_TX_MONITOR_CFG_WORD_MASK_COMPACTION_ENABLE_SET(*msg_word,
1);
/* word 3 */ /* word 3 */
msg_word++; msg_word++;
*msg_word = 0; *msg_word = 0;
@@ -1439,21 +1443,41 @@ void dp_tx_mon_filter_set_all(struct dp_mon_pdev_be *mon_pdev_be,
void dp_tx_mon_filter_set_word_mask(struct dp_pdev *pdev, void dp_tx_mon_filter_set_word_mask(struct dp_pdev *pdev,
struct htt_tx_ring_tlv_filter *filter) struct htt_tx_ring_tlv_filter *filter)
{ {
/* invoke hal api to get the word mask */ hal_txmon_word_mask_config_t word_mask = {0};
bool status = false;
filter->wmask.pcu_ppdu_setup_init = 0xFFFFFFFF; status = hal_txmon_get_word_mask(pdev->soc->hal_soc, &word_mask);
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 */ if (status) {
filter->compaction_enable = 0; filter->wmask.pcu_ppdu_setup_init =
word_mask.pcu_ppdu_setup_init;
filter->wmask.tx_peer_entry = word_mask.tx_peer_entry;
filter->wmask.tx_queue_ext = word_mask.tx_queue_ext;
filter->wmask.tx_fes_status_end = word_mask.tx_fes_status_end;
filter->wmask.response_end_status =
word_mask.response_end_status;
filter->wmask.tx_fes_status_prot = word_mask.tx_fes_status_prot;
filter->wmask.tx_fes_setup = word_mask.tx_fes_setup;
filter->wmask.tx_msdu_start = word_mask.tx_msdu_start;
filter->wmask.tx_mpdu_start = word_mask.tx_mpdu_start;
filter->wmask.rxpcu_user_setup = word_mask.rxpcu_user_setup;
filter->compaction_enable = word_mask.compaction_enable;
} else {
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) void dp_mon_filter_setup_tx_mon_mode_2_0(struct dp_pdev *pdev)
@@ -2790,20 +2814,28 @@ static
void dp_tx_mon_wordmask_config_set(struct htt_tx_ring_tlv_filter *dst_filter, void dp_tx_mon_wordmask_config_set(struct htt_tx_ring_tlv_filter *dst_filter,
struct htt_tx_ring_tlv_filter *src_filter) struct htt_tx_ring_tlv_filter *src_filter)
{ {
dst_filter->wmask.tx_fes_setup |= dst_filter->wmask.pcu_ppdu_setup_init |=
src_filter->wmask.tx_fes_setup; src_filter->wmask.pcu_ppdu_setup_init;
dst_filter->wmask.tx_peer_entry |= dst_filter->wmask.tx_peer_entry |=
src_filter->wmask.tx_peer_entry; src_filter->wmask.tx_peer_entry;
dst_filter->wmask.tx_queue_ext |= dst_filter->wmask.tx_queue_ext |=
src_filter->wmask.tx_queue_ext; src_filter->wmask.tx_queue_ext;
dst_filter->wmask.tx_fes_status_end |=
src_filter->wmask.tx_fes_status_end;
dst_filter->wmask.response_end_status |=
src_filter->wmask.response_end_status;
dst_filter->wmask.tx_fes_status_prot |=
src_filter->wmask.tx_fes_status_prot;
dst_filter->wmask.tx_fes_setup |=
src_filter->wmask.tx_fes_setup;
dst_filter->wmask.tx_msdu_start |= dst_filter->wmask.tx_msdu_start |=
src_filter->wmask.tx_msdu_start; src_filter->wmask.tx_msdu_start;
dst_filter->wmask.tx_mpdu_start |= dst_filter->wmask.tx_mpdu_start |=
src_filter->wmask.tx_mpdu_start; src_filter->wmask.tx_mpdu_start;
dst_filter->wmask.pcu_ppdu_setup_init |=
src_filter->wmask.pcu_ppdu_setup_init;
dst_filter->wmask.rxpcu_user_setup |= dst_filter->wmask.rxpcu_user_setup |=
src_filter->wmask.rxpcu_user_setup; src_filter->wmask.rxpcu_user_setup;
dst_filter->compaction_enable |=
src_filter->compaction_enable;
} }
/** /**

View File

@@ -1434,20 +1434,20 @@ hal_tx_status_get_tlv_tag(void *tx_tlv_hdr)
} }
/** /**
* hal_txmon_set_word_mask() - api to set word mask for tx monitor * hal_txmon_get_word_mask() - api to get word mask for tx monitor
* @hal_soc_hdl: HAL soc handle * @hal_soc_hdl: HAL soc handle
* @wmask: pointer to hal_txmon_word_mask_config_t * @wmask: pointer to hal_txmon_word_mask_config_t
* *
* Return: bool * Return: bool
*/ */
static inline bool static inline bool
hal_txmon_set_word_mask(hal_soc_handle_t hal_soc_hdl, hal_txmon_get_word_mask(hal_soc_handle_t hal_soc_hdl,
hal_txmon_word_mask_config_t *wmask) hal_txmon_word_mask_config_t *wmask)
{ {
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl; struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
if (hal_soc->ops->hal_txmon_set_word_mask) { if (hal_soc->ops->hal_txmon_get_word_mask) {
hal_soc->ops->hal_txmon_set_word_mask(wmask); hal_soc->ops->hal_txmon_get_word_mask(wmask);
return true; return true;
} }

View File

@@ -1381,13 +1381,13 @@ hal_txmon_status_get_num_users_generic_be(void *tx_tlv_hdr, uint8_t *num_users)
} }
/** /**
* hal_txmon_set_word_mask_generic_be() - api to set word mask for tx monitor * hal_txmon_get_word_mask_generic_be() - api to get word mask for tx monitor
* @wmask: pointer to hal_txmon_word_mask_config_t * @wmask: pointer to hal_txmon_word_mask_config_t
* *
* Return: void * Return: void
*/ */
static inline static inline
void hal_txmon_set_word_mask_generic_be(void *wmask) void hal_txmon_get_word_mask_generic_be(void *wmask)
{ {
hal_txmon_word_mask_config_t *word_mask = NULL; hal_txmon_word_mask_config_t *word_mask = NULL;

View File

@@ -1329,7 +1329,7 @@ struct hal_hw_txrx_ops {
qdf_frag_t status_frag); qdf_frag_t status_frag);
uint32_t (*hal_txmon_status_get_num_users)(void *tx_tlv_hdr, uint32_t (*hal_txmon_status_get_num_users)(void *tx_tlv_hdr,
uint8_t *num_users); uint8_t *num_users);
void (*hal_txmon_set_word_mask)(void *wmask); void (*hal_txmon_get_word_mask)(void *wmask);
#endif /* QCA_MONITOR_2_0_SUPPORT */ #endif /* QCA_MONITOR_2_0_SUPPORT */
QDF_STATUS (*hal_reo_shared_qaddr_setup)(hal_soc_handle_t hal_soc_hdl, QDF_STATUS (*hal_reo_shared_qaddr_setup)(hal_soc_handle_t hal_soc_hdl,
struct reo_queue_ref_table struct reo_queue_ref_table

View File

@@ -1780,11 +1780,11 @@ static void hal_hw_txrx_ops_attach_qcn9224(struct hal_soc *hal_soc)
hal_soc->ops->hal_txmon_status_get_num_users = hal_soc->ops->hal_txmon_status_get_num_users =
hal_txmon_status_get_num_users_generic_be; hal_txmon_status_get_num_users_generic_be;
#if defined(TX_MONITOR_WORD_MASK) #if defined(TX_MONITOR_WORD_MASK)
hal_soc->ops->hal_txmon_set_word_mask = hal_soc->ops->hal_txmon_get_word_mask =
hal_txmon_set_word_mask_qcn9224; hal_txmon_get_word_mask_qcn9224;
#else #else
hal_soc->ops->hal_txmon_set_word_mask = hal_soc->ops->hal_txmon_get_word_mask =
hal_txmon_set_word_mask_generic_be; hal_txmon_get_word_mask_generic_be;
#endif /* TX_MONITOR_WORD_MASK */ #endif /* TX_MONITOR_WORD_MASK */
#endif /* QCA_MONITOR_2_0_SUPPORT */ #endif /* QCA_MONITOR_2_0_SUPPORT */
hal_soc->ops->hal_compute_reo_remap_ix0 = NULL; hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;

View File

@@ -531,13 +531,13 @@ struct pcu_ppdu_setup_init_compact_9224 {
}; };
/** /**
* hal_txmon_set_word_mask_qcn9224() - api to set word mask for tx monitor * hal_txmon_get_word_mask_qcn9224() - api to get word mask for tx monitor
* @wmask: pointer to hal_txmon_word_mask_config_t * @wmask: pointer to hal_txmon_word_mask_config_t
* *
* Return: void * Return: void
*/ */
static inline static inline
void hal_txmon_set_word_mask_qcn9224(void *wmask) void hal_txmon_get_word_mask_qcn9224(void *wmask)
{ {
hal_txmon_word_mask_config_t *word_mask = NULL; hal_txmon_word_mask_config_t *word_mask = NULL;