qcacmn: Add changes to get link ID in Tx/Rx Path

Add changes to get link ID in Tx/Rx Path

Change-Id: I6b52093697b138e5a5d3878af2dd8db0d65cc488
CRs-Fixed: 3450541
This commit is contained in:
Amit Mehta
2023-04-13 13:07:27 +05:30
committed by Rahul Choudhary
parent 07dfe8e18b
commit 34497ea2d1
7 changed files with 74 additions and 5 deletions

View File

@@ -2880,6 +2880,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
arch_ops->dp_soc_get_num_soc = dp_soc_get_num_soc_be; arch_ops->dp_soc_get_num_soc = dp_soc_get_num_soc_be;
arch_ops->dp_peer_rx_reorder_queue_setup = arch_ops->dp_peer_rx_reorder_queue_setup =
dp_peer_rx_reorder_queue_setup_be; dp_peer_rx_reorder_queue_setup_be;
arch_ops->dp_rx_peer_set_link_id = dp_rx_set_link_id_be;
arch_ops->txrx_print_peer_stats = dp_print_peer_txrx_stats_be; arch_ops->txrx_print_peer_stats = dp_print_peer_txrx_stats_be;
arch_ops->dp_find_peer_by_destmac = dp_find_peer_by_destmac_be; arch_ops->dp_find_peer_by_destmac = dp_find_peer_by_destmac_be;
#if defined(DP_UMAC_HW_HARD_RESET) && defined(DP_UMAC_HW_RESET_SUPPORT) #if defined(DP_UMAC_HW_HARD_RESET) && defined(DP_UMAC_HW_RESET_SUPPORT)

View File

@@ -644,14 +644,28 @@ dp_rx_set_msdu_lmac_id(qdf_nbuf_t nbuf, uint32_t peer_mdata)
#endif #endif
#ifndef CONFIG_NBUF_AP_PLATFORM #ifndef CONFIG_NBUF_AP_PLATFORM
#if defined(WLAN_FEATURE_11BE_MLO) && defined(DP_MLO_LINK_STATS_SUPPORT)
static inline uint8_t
dp_rx_peer_mdata_link_id_get_be(uint32_t peer_mdata)
{
uint8_t link_id;
link_id = HTT_RX_PEER_META_DATA_V1A_LOGICAL_LINK_ID_GET(peer_mdata) + 1;
if (link_id > DP_MAX_MLO_LINKS)
link_id = 0;
return link_id;
}
#else
static inline uint8_t static inline uint8_t
dp_rx_peer_mdata_link_id_get_be(uint32_t peer_metadata) dp_rx_peer_mdata_link_id_get_be(uint32_t peer_metadata)
{ {
return 0; return 0;
} }
#endif /* DP_MLO_LINK_STATS_SUPPORT */
static inline void static inline void
dp_rx_set_msdu_hw_link_id(qdf_nbuf_t nbuf, uint32_t peer_mdata) dp_rx_set_link_id_be(qdf_nbuf_t nbuf, uint32_t peer_mdata)
{ {
uint8_t logical_link_id; uint8_t logical_link_id;
@@ -708,7 +722,7 @@ static inline uint8_t dp_rx_copy_desc_info_in_nbuf_cb(struct dp_soc *soc,
QDF_NBUF_CB_RX_VDEV_ID(nbuf) = QDF_NBUF_CB_RX_VDEV_ID(nbuf) =
dp_rx_peer_metadata_vdev_id_get_be(soc, peer_mdata); dp_rx_peer_metadata_vdev_id_get_be(soc, peer_mdata);
dp_rx_set_msdu_lmac_id(nbuf, peer_mdata); dp_rx_set_msdu_lmac_id(nbuf, peer_mdata);
dp_rx_set_msdu_hw_link_id(nbuf, peer_mdata); dp_rx_set_link_id_be(nbuf, peer_mdata);
/* to indicate whether this msdu is rx offload */ /* to indicate whether this msdu is rx offload */
pkt_capture_offload = pkt_capture_offload =
@@ -772,7 +786,7 @@ dp_rx_wbm_err_msdu_continuation_get(struct dp_soc *soc,
} }
#else #else
static inline void static inline void
dp_rx_set_msdu_hw_link_id(qdf_nbuf_t nbuf, uint32_t peer_mdata) dp_rx_set_link_id_be(qdf_nbuf_t nbuf, uint32_t peer_mdata)
{ {
} }

View File

@@ -12738,6 +12738,26 @@ fail1:
return QDF_STATUS_E_NOMEM; return QDF_STATUS_E_NOMEM;
} }
#if defined(WLAN_FEATURE_11BE_MLO) && defined(DP_MLO_LINK_STATS_SUPPORT)
/**
* dp_init_link_peer_stats_enabled() - Init link_peer_stats as per config
* @pdev: DP pdev
*
* Return: None
*/
static inline void
dp_init_link_peer_stats_enabled(struct dp_pdev *pdev)
{
pdev->link_peer_stats = wlan_cfg_is_peer_link_stats_enabled(
pdev->soc->wlan_cfg_ctx);
}
#else
static inline void
dp_init_link_peer_stats_enabled(struct dp_pdev *pdev)
{
}
#endif
static QDF_STATUS dp_pdev_init(struct cdp_soc_t *txrx_soc, static QDF_STATUS dp_pdev_init(struct cdp_soc_t *txrx_soc,
HTC_HANDLE htc_handle, HTC_HANDLE htc_handle,
qdf_device_t qdf_osdev, qdf_device_t qdf_osdev,
@@ -12884,6 +12904,7 @@ static QDF_STATUS dp_pdev_init(struct cdp_soc_t *txrx_soc,
dp_rx_pdev_buffers_alloc(pdev); dp_rx_pdev_buffers_alloc(pdev);
dp_init_tso_stats(pdev); dp_init_tso_stats(pdev);
dp_init_link_peer_stats_enabled(pdev);
pdev->rx_fast_flag = false; pdev->rx_fast_flag = false;
dp_info("Mem stats: DMA = %u HEAP = %u SKB = %u", dp_info("Mem stats: DMA = %u HEAP = %u SKB = %u",

View File

@@ -2419,6 +2419,33 @@ dp_rx_peer_metadata_peer_id_get(struct dp_soc *soc, uint32_t peer_metadata)
peer_metadata); peer_metadata);
} }
#if defined(WLAN_FEATURE_11BE_MLO) && defined(DP_MLO_LINK_STATS_SUPPORT)
/**
* dp_rx_nbuf_set_link_id_from_tlv() - Set link id in nbuf cb
* @soc: SOC handle
* @tlv_hdr: rx tlv header
* @nbuf: nbuf pointer
*
* Return: None
*/
static inline void
dp_rx_nbuf_set_link_id_from_tlv(struct dp_soc *soc, uint8_t *tlv_hdr,
qdf_nbuf_t nbuf)
{
uint32_t peer_metadata = hal_rx_tlv_peer_meta_data_get(soc->hal_soc,
tlv_hdr);
if (soc->arch_ops.dp_rx_peer_set_link_id)
soc->arch_ops.dp_rx_peer_set_link_id(nbuf, peer_metadata);
}
#else
static inline void
dp_rx_nbuf_set_link_id_from_tlv(struct dp_soc *soc, uint8_t *tlv_hdr,
qdf_nbuf_t nbuf)
{
}
#endif
/** /**
* dp_rx_desc_pool_init_generic() - Generic Rx descriptors initialization * dp_rx_desc_pool_init_generic() - Generic Rx descriptors initialization
* @soc: SOC handle * @soc: SOC handle
@@ -3500,7 +3527,7 @@ static inline uint8_t
dp_rx_get_stats_arr_idx_from_link_id(qdf_nbuf_t nbuf, dp_rx_get_stats_arr_idx_from_link_id(qdf_nbuf_t nbuf,
struct dp_txrx_peer *txrx_peer) struct dp_txrx_peer *txrx_peer)
{ {
return 0; return QDF_NBUF_CB_RX_LOGICAL_LINK_ID(nbuf);
} }
#else #else
static inline uint8_t static inline uint8_t

View File

@@ -2514,6 +2514,8 @@ dp_rx_wbm_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
continue; continue;
} }
dp_rx_nbuf_set_link_id_from_tlv(soc, rx_tlv_hdr, nbuf);
pool_id = wbm_err.info_bit.pool_id; pool_id = wbm_err.info_bit.pool_id;
dp_pdev = dp_get_pdev_for_lmac_id(soc, pool_id); dp_pdev = dp_get_pdev_for_lmac_id(soc, pool_id);

View File

@@ -4605,7 +4605,9 @@ dp_tx_update_peer_extd_stats(struct hal_tx_completion_status *ts,
} }
#endif #endif
#if defined(WLAN_FEATURE_11BE_MLO) && defined(QCA_ENHANCED_STATS_SUPPORT) #if defined(WLAN_FEATURE_11BE_MLO) && \
(defined(QCA_ENHANCED_STATS_SUPPORT) || \
defined(DP_MLO_LINK_STATS_SUPPORT))
static inline uint8_t static inline uint8_t
dp_tx_get_link_id_from_ppdu_id(struct dp_soc *soc, dp_tx_get_link_id_from_ppdu_id(struct dp_soc *soc,
struct hal_tx_completion_status *ts, struct hal_tx_completion_status *ts,

View File

@@ -2194,6 +2194,7 @@ enum dp_context_type {
* @mlo_peer_find_hash_remove: * @mlo_peer_find_hash_remove:
* @mlo_peer_find_hash_find: * @mlo_peer_find_hash_find:
* @get_hw_link_id: * @get_hw_link_id:
* @dp_rx_peer_set_link_id: set link id in nbuf cb
* @get_reo_qdesc_addr: * @get_reo_qdesc_addr:
* @get_rx_hash_key: * @get_rx_hash_key:
* @dp_set_rx_fst: * @dp_set_rx_fst:
@@ -2390,6 +2391,7 @@ struct dp_arch_ops {
uint8_t vdev_id); uint8_t vdev_id);
#endif #endif
uint8_t (*get_hw_link_id)(struct dp_pdev *pdev); uint8_t (*get_hw_link_id)(struct dp_pdev *pdev);
void (*dp_rx_peer_set_link_id)(qdf_nbuf_t nbuf, uint32_t peer_mdata);
uint64_t (*get_reo_qdesc_addr)(hal_soc_handle_t hal_soc_hdl, uint64_t (*get_reo_qdesc_addr)(hal_soc_handle_t hal_soc_hdl,
uint8_t *dst_ring_desc, uint8_t *dst_ring_desc,
uint8_t *buf, uint8_t *buf,