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
此提交包含在:
@@ -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)
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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",
|
||||||
|
@@ -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
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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,
|
||||||
|
@@ -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,
|
||||||
|
新增問題並參考
封鎖使用者