qcacmn: Add arch ops for get chip id API

Add arch ops for dp_mlo_chip_id to avoid access
of dp_soc_be struct for LI platforms

Change-Id: Idc7612ef3c517aa62668fe15e51b5e5ec74bb253
CRs-Fixed: 3582795
This commit is contained in:
Chaithanya Garrepalli
2023-08-17 16:52:42 +05:30
committed by Rahul Choudhary
parent 0979038391
commit a0e560c475
8 changed files with 88 additions and 27 deletions

View File

@@ -3167,6 +3167,12 @@ dp_initialize_arch_ops_be_mlo_multi_chip(struct dp_arch_ops *arch_ops)
arch_ops->dp_partner_chips_map = dp_mlo_partner_chips_map; arch_ops->dp_partner_chips_map = dp_mlo_partner_chips_map;
arch_ops->dp_partner_chips_unmap = dp_mlo_partner_chips_unmap; arch_ops->dp_partner_chips_unmap = dp_mlo_partner_chips_unmap;
arch_ops->dp_soc_get_by_idle_bm_id = dp_soc_get_by_idle_bm_id; arch_ops->dp_soc_get_by_idle_bm_id = dp_soc_get_by_idle_bm_id;
arch_ops->dp_get_soc_by_chip_id = dp_get_soc_by_chip_id_be;
arch_ops->dp_mlo_print_ptnr_info = dp_mlo_debug_print_ptnr_info;
arch_ops->dp_get_interface_stats = dp_get_interface_stats_be;
arch_ops->mlo_get_chip_id = dp_mlo_get_chip_id;
arch_ops->mlo_link_peer_find_hash_find_by_chip_id =
dp_mlo_link_peer_hash_find_by_chip_id;
} }
#else #else
static inline void static inline void
@@ -3392,10 +3398,6 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_be; arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_be;
arch_ops->txrx_set_vdev_param = dp_txrx_set_vdev_param_be; arch_ops->txrx_set_vdev_param = dp_txrx_set_vdev_param_be;
dp_initialize_arch_ops_be_mlo(arch_ops); dp_initialize_arch_ops_be_mlo(arch_ops);
#ifdef WLAN_MLO_MULTI_CHIP
arch_ops->dp_get_soc_by_chip_id = dp_get_soc_by_chip_id_be;
arch_ops->dp_mlo_print_ptnr_info = dp_mlo_debug_print_ptnr_info;
#endif
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;
@@ -3445,9 +3447,6 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
arch_ops->txrx_srng_init = dp_srng_init_be; arch_ops->txrx_srng_init = dp_srng_init_be;
arch_ops->dp_get_vdev_stats_for_unmap_peer = arch_ops->dp_get_vdev_stats_for_unmap_peer =
dp_get_vdev_stats_for_unmap_peer_be; dp_get_vdev_stats_for_unmap_peer_be;
#ifdef WLAN_MLO_MULTI_CHIP
arch_ops->dp_get_interface_stats = dp_get_interface_stats_be;
#endif
#if defined(DP_POWER_SAVE) || defined(FEATURE_RUNTIME_PM) #if defined(DP_POWER_SAVE) || defined(FEATURE_RUNTIME_PM)
arch_ops->dp_update_ring_hptp = dp_update_ring_hptp; arch_ops->dp_update_ring_hptp = dp_update_ring_hptp;
#endif #endif

View File

@@ -984,6 +984,11 @@ static inline
void dp_mlo_update_link_to_pdev_unmap(struct dp_soc *soc, struct dp_pdev *pdev) void dp_mlo_update_link_to_pdev_unmap(struct dp_soc *soc, struct dp_pdev *pdev)
{ {
} }
static inline uint8_t dp_mlo_get_chip_id(struct dp_soc *soc)
{
return 0;
}
#endif #endif
/** /**

View File

@@ -1138,7 +1138,7 @@ uint8_t dp_mlo_get_chip_id(struct dp_soc *soc)
qdf_export_symbol(dp_mlo_get_chip_id); qdf_export_symbol(dp_mlo_get_chip_id);
struct dp_peer * struct dp_peer *
dp_link_peer_hash_find_by_chip_id(struct dp_soc *soc, dp_mlo_link_peer_hash_find_by_chip_id(struct dp_soc *soc,
uint8_t *peer_mac_addr, uint8_t *peer_mac_addr,
int mac_addr_is_aligned, int mac_addr_is_aligned,
uint8_t vdev_id, uint8_t vdev_id,
@@ -1165,7 +1165,7 @@ dp_link_peer_hash_find_by_chip_id(struct dp_soc *soc,
return peer; return peer;
} }
qdf_export_symbol(dp_link_peer_hash_find_by_chip_id); qdf_export_symbol(dp_mlo_link_peer_hash_find_by_chip_id);
void dp_mlo_get_rx_hash_key(struct dp_soc *soc, void dp_mlo_get_rx_hash_key(struct dp_soc *soc,
struct cdp_lro_hash_config *lro_hash) struct cdp_lro_hash_config *lro_hash)

View File

@@ -230,4 +230,33 @@ dp_get_interface_stats_be(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
* Return: none * Return: none
*/ */
void dp_mlo_debug_print_ptnr_info(struct dp_vdev *vdev); void dp_mlo_debug_print_ptnr_info(struct dp_vdev *vdev);
/*
* dp_mlo_get_chip_id() - return MLO chip id
* @soc: DP soc
*
* Return: chip_id
*/
uint8_t dp_mlo_get_chip_id(struct dp_soc *soc);
/*
* dp_mlo_link_peer_hash_find_by_chip_id() - returns mlo link peer on chip_id
* peer_hash_table matching vdev_id and mac_address
* @soc: partner soc handle in MLO
* @peer_mac_addr: peer mac address
* @mac_addr_is_aligned: is mac addr aligned
* @vdev_id: vdev_id
* @chip_id: mlo_chip_id
* @mod_id: id of module requesting reference
*
* return: peer in success
* NULL in failure
*/
struct dp_peer *
dp_mlo_link_peer_hash_find_by_chip_id(struct dp_soc *soc,
uint8_t *peer_mac_addr,
int mac_addr_is_aligned,
uint8_t vdev_id,
uint8_t chip_id,
enum dp_mod_id mod_id);
#endif /* __DP_MLO_H */ #endif /* __DP_MLO_H */

View File

@@ -3749,7 +3749,7 @@ dp_vdev_update_bridge_vdev_param(struct dp_vdev *vdev,
dp_info("is_bridge_link = %d vdev id = %d chip id = %d", dp_info("is_bridge_link = %d vdev id = %d chip id = %d",
vdev->is_bridge_vdev, vdev->vdev_id, vdev->is_bridge_vdev, vdev->vdev_id,
dp_mlo_get_chip_id(vdev->pdev->soc)); dp_get_chip_id(vdev->pdev->soc));
} }
#else #else
static inline void static inline void
@@ -4692,7 +4692,7 @@ static QDF_STATUS dp_txrx_peer_attach(struct dp_soc *soc, struct dp_peer *peer)
params.peer_mac = peer->mac_addr.raw; params.peer_mac = peer->mac_addr.raw;
params.vdev_id = peer->vdev->vdev_id; params.vdev_id = peer->vdev->vdev_id;
params.chip_id = dp_mlo_get_chip_id(soc); params.chip_id = dp_get_chip_id(soc);
params.pdev_id = peer->vdev->pdev->pdev_id; params.pdev_id = peer->vdev->pdev->pdev_id;
dp_wdi_event_handler(WDI_EVENT_TXRX_PEER_CREATE, soc, dp_wdi_event_handler(WDI_EVENT_TXRX_PEER_CREATE, soc,
@@ -5018,7 +5018,7 @@ QDF_STATUS dp_peer_mlo_setup(
if (peer->vdev->opmode == wlan_op_mode_sta) { if (peer->vdev->opmode == wlan_op_mode_sta) {
struct cdp_txrx_peer_params_update params = {0}; struct cdp_txrx_peer_params_update params = {0};
params.chip_id = dp_mlo_get_chip_id(soc); params.chip_id = dp_get_chip_id(soc);
params.pdev_id = peer->vdev->pdev->pdev_id; params.pdev_id = peer->vdev->pdev->pdev_id;
params.vdev_id = peer->vdev->vdev_id; params.vdev_id = peer->vdev->vdev_id;
@@ -5052,7 +5052,7 @@ QDF_STATUS dp_peer_mlo_setup(
setup_info->is_primary_link) { setup_info->is_primary_link) {
struct cdp_txrx_peer_params_update params = {0}; struct cdp_txrx_peer_params_update params = {0};
params.chip_id = dp_mlo_get_chip_id(soc); params.chip_id = dp_get_chip_id(soc);
params.pdev_id = peer->vdev->pdev->pdev_id; params.pdev_id = peer->vdev->pdev->pdev_id;
params.vdev_id = peer->vdev->vdev_id; params.vdev_id = peer->vdev->vdev_id;
@@ -5100,7 +5100,7 @@ QDF_STATUS dp_peer_mlo_setup(
params.vdev_id = peer->vdev->vdev_id; params.vdev_id = peer->vdev->vdev_id;
params.peer_mac = mld_peer->mac_addr.raw; params.peer_mac = mld_peer->mac_addr.raw;
params.chip_id = dp_mlo_get_chip_id(soc); params.chip_id = dp_get_chip_id(soc);
params.pdev_id = peer->vdev->pdev->pdev_id; params.pdev_id = peer->vdev->pdev->pdev_id;
dp_wdi_event_handler( dp_wdi_event_handler(

View File

@@ -2671,7 +2671,7 @@ dp_rx_mlo_peer_map_handler(struct dp_soc *soc, uint16_t peer_id,
* on chip ID obtained from mlo peer_map event * on chip ID obtained from mlo peer_map event
*/ */
for (i = 0; i < DP_MAX_MLO_LINKS; i++) { for (i = 0; i < DP_MAX_MLO_LINKS; i++) {
if (mlo_link_info[i].peer_chip_id == dp_mlo_get_chip_id(soc)) { if (mlo_link_info[i].peer_chip_id == dp_get_chip_id(soc)) {
vdev_id = mlo_link_info[i].vdev_id; vdev_id = mlo_link_info[i].vdev_id;
break; break;
} }
@@ -2965,7 +2965,7 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
params.vdev_id = vdev->vdev_id; params.vdev_id = vdev->vdev_id;
params.peer_mac = peer->mac_addr.raw; params.peer_mac = peer->mac_addr.raw;
params.chip_id = dp_mlo_get_chip_id(soc); params.chip_id = dp_get_chip_id(soc);
params.pdev_id = vdev->pdev->pdev_id; params.pdev_id = vdev->pdev->pdev_id;
dp_wdi_event_handler(WDI_EVENT_PEER_UNMAP, soc, dp_wdi_event_handler(WDI_EVENT_PEER_UNMAP, soc,

View File

@@ -1528,17 +1528,33 @@ void dp_mlo_peer_delete(struct dp_soc *soc, struct dp_peer *peer, void *arg);
((link_peer)->mld_peer) ((link_peer)->mld_peer)
#ifdef WLAN_MLO_MULTI_CHIP #ifdef WLAN_MLO_MULTI_CHIP
uint8_t dp_mlo_get_chip_id(struct dp_soc *soc); static inline uint8_t dp_get_chip_id(struct dp_soc *soc)
{
if (soc->arch_ops.mlo_get_chip_id)
return soc->arch_ops.mlo_get_chip_id(soc);
struct dp_peer * return 0;
}
static inline struct dp_peer *
dp_link_peer_hash_find_by_chip_id(struct dp_soc *soc, dp_link_peer_hash_find_by_chip_id(struct dp_soc *soc,
uint8_t *peer_mac_addr, uint8_t *peer_mac_addr,
int mac_addr_is_aligned, int mac_addr_is_aligned,
uint8_t vdev_id, uint8_t vdev_id,
uint8_t chip_id, uint8_t chip_id,
enum dp_mod_id mod_id); enum dp_mod_id mod_id)
{
if (soc->arch_ops.mlo_link_peer_find_hash_find_by_chip_id)
return soc->arch_ops.mlo_link_peer_find_hash_find_by_chip_id
(soc, peer_mac_addr,
mac_addr_is_aligned,
vdev_id, chip_id,
mod_id);
return NULL;
}
#else #else
static inline uint8_t dp_mlo_get_chip_id(struct dp_soc *soc) static inline uint8_t dp_get_chip_id(struct dp_soc *soc)
{ {
return 0; return 0;
} }
@@ -1704,7 +1720,7 @@ void dp_mld_peer_add_link_peer(struct dp_peer *mld_peer,
link_peer_info->is_valid = true; link_peer_info->is_valid = true;
link_peer_info->vdev_id = link_peer->vdev->vdev_id; link_peer_info->vdev_id = link_peer->vdev->vdev_id;
link_peer_info->chip_id = link_peer_info->chip_id =
dp_mlo_get_chip_id(link_peer->vdev->pdev->soc); dp_get_chip_id(link_peer->vdev->pdev->soc);
mld_peer->num_links++; mld_peer->num_links++;
break; break;
} }
@@ -2234,7 +2250,7 @@ void dp_mlo_peer_authorize(struct dp_soc *soc,
{ {
} }
static inline uint8_t dp_mlo_get_chip_id(struct dp_soc *soc) static inline uint8_t dp_get_chip_id(struct dp_soc *soc)
{ {
return 0; return 0;
} }

View File

@@ -2211,6 +2211,8 @@ enum dp_context_type {
* @mlo_peer_find_hash_add: * @mlo_peer_find_hash_add:
* @mlo_peer_find_hash_remove: * @mlo_peer_find_hash_remove:
* @mlo_peer_find_hash_find: * @mlo_peer_find_hash_find:
* @mlo_get_chip_id: get the MLO chip id
* @mlo_link_peer_find_hash_find_by_chip_id: return the link peer on the chip
* @get_hw_link_id: * @get_hw_link_id:
* @dp_rx_peer_set_link_id: set link id in nbuf cb * @dp_rx_peer_set_link_id: set link id in nbuf cb
* @get_reo_qdesc_addr: * @get_reo_qdesc_addr:
@@ -2412,6 +2414,16 @@ struct dp_arch_ops {
int mac_addr_is_aligned, int mac_addr_is_aligned,
enum dp_mod_id mod_id, enum dp_mod_id mod_id,
uint8_t vdev_id); uint8_t vdev_id);
#ifdef WLAN_MLO_MULTI_CHIP
uint8_t (*mlo_get_chip_id)(struct dp_soc *soc);
struct dp_peer *(*mlo_link_peer_find_hash_find_by_chip_id)
(struct dp_soc *soc,
uint8_t *peer_mac_addr,
int mac_addr_is_aligned,
uint8_t vdev_id,
uint8_t chip_id,
enum dp_mod_id mod_id);
#endif
#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); void (*dp_rx_peer_set_link_id)(qdf_nbuf_t nbuf, uint32_t peer_mdata);