qcacmn: Map and umap MLO DP peer to partner soc

Maping and unmaping of the MLO DP peer to the partner soc
will be initialized based on architecture.
dp_mlo_partner_chips_map
dp_mlo_partner_chips_unmap

Change-Id: I918f6d552acd9d64086abf4c38f913348e13c381
CRs-Fixed: 3267904
This commit is contained in:
Sai Rupesh Chevuru
2022-08-15 22:14:39 +05:30
committed by Madan Koyyalamudi
parent af8acc5430
commit 383edf35d0
5 changed files with 49 additions and 36 deletions

View File

@@ -1832,10 +1832,25 @@ dp_initialize_arch_ops_be_mcast_mlo(struct dp_arch_ops *arch_ops)
}
#endif /* WLAN_MCAST_MLO */
#ifdef WLAN_MLO_MULTI_CHIP
static inline void
dp_initialize_arch_ops_be_mlo_ptnr_chip(struct dp_arch_ops *arch_ops)
{
arch_ops->dp_partner_chips_map = dp_mlo_partner_chips_map;
arch_ops->dp_partner_chips_unmap = dp_mlo_partner_chips_unmap;
}
#else
static inline void
dp_initialize_arch_ops_be_mlo_ptnr_chip(struct dp_arch_ops *arch_ops)
{
}
#endif
static inline void
dp_initialize_arch_ops_be_mlo(struct dp_arch_ops *arch_ops)
{
dp_initialize_arch_ops_be_mcast_mlo(arch_ops);
dp_initialize_arch_ops_be_mlo_ptnr_chip(arch_ops);
arch_ops->mlo_peer_find_hash_detach =
dp_mlo_peer_find_hash_detach_wrapper;
arch_ops->mlo_peer_find_hash_attach =

View File

@@ -406,7 +406,28 @@ dp_mlo_get_peer_hash_obj(struct dp_soc *soc)
void dp_clr_mlo_ptnr_list(struct dp_soc *soc, struct dp_vdev *vdev);
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MCAST_MLO)
#if defined(WLAN_FEATURE_11BE_MLO)
/**
* dp_mlo_partner_chips_map() - Map MLO peers to partner SOCs
* @soc: Soc handle
* @peer: DP peer handle for ML peer
* @peer_id: peer_id
* Return: None
*/
void dp_mlo_partner_chips_map(struct dp_soc *soc,
struct dp_peer *peer,
uint16_t peer_id);
/**
* dp_mlo_partner_chips_unmap() - Unmap MLO peers to partner SOCs
* @soc: Soc handle
* @peer_id: peer_id
* Return: None
*/
void dp_mlo_partner_chips_unmap(struct dp_soc *soc,
uint16_t peer_id);
#ifdef WLAN_MCAST_MLO
typedef void dp_ptnr_vdev_iter_func(struct dp_vdev_be *be_vdev,
struct dp_vdev *ptnr_vdev,
void *arg);
@@ -450,6 +471,7 @@ struct dp_vdev *dp_mlo_get_mcast_primary_vdev(struct dp_soc_be *be_soc,
struct dp_vdev_be *be_vdev,
enum dp_mod_id mod_id);
#endif
#endif
#else
typedef struct dp_soc_be *dp_mld_peer_hash_obj_t;

View File

@@ -2874,7 +2874,8 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc,
return NULL;
}
dp_peer_find_id_to_obj_add(soc, peer, peer_id);
dp_mlo_partner_chips_map(soc, peer, peer_id);
if (soc->arch_ops.dp_partner_chips_map)
soc->arch_ops.dp_partner_chips_map(soc, peer, peer_id);
dp_peer_update_state(soc, peer, DP_PEER_STATE_ACTIVE);
return peer;
@@ -3239,7 +3240,10 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
dp_peer_rx_reo_shared_qaddr_delete(soc, peer);
dp_peer_find_id_to_obj_remove(soc, peer_id);
dp_mlo_partner_chips_unmap(soc, peer_id);
if (soc->arch_ops.dp_partner_chips_unmap)
soc->arch_ops.dp_partner_chips_unmap(soc, peer_id);
peer->peer_id = HTT_INVALID_PEER;
/*

View File

@@ -1907,39 +1907,6 @@ static inline void dp_print_mlo_ast_stats_be(struct dp_soc *soc)
}
#endif /* WLAN_FEATURE_11BE_MLO */
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
/**
* dp_mlo_partner_chips_map() - Map MLO peers to partner SOCs
* @soc: Soc handle
* @peer: DP peer handle for ML peer
* @peer_id: peer_id
* Return: None
*/
void dp_mlo_partner_chips_map(struct dp_soc *soc,
struct dp_peer *peer,
uint16_t peer_id);
/**
* dp_mlo_partner_chips_unmap() - Unmap MLO peers to partner SOCs
* @soc: Soc handle
* @peer_id: peer_id
* Return: None
*/
void dp_mlo_partner_chips_unmap(struct dp_soc *soc,
uint16_t peer_id);
#else
static inline void dp_mlo_partner_chips_map(struct dp_soc *soc,
struct dp_peer *peer,
uint16_t peer_id)
{
}
static inline void dp_mlo_partner_chips_unmap(struct dp_soc *soc,
uint16_t peer_id)
{
}
#endif
static inline
QDF_STATUS dp_peer_rx_tids_create(struct dp_peer *peer)
{

View File

@@ -1947,6 +1947,11 @@ struct dp_arch_ops {
struct hal_tx_completion_status *ts,
uint32_t *delay_us);
void (*print_mlo_ast_stats)(struct dp_soc *soc);
void (*dp_partner_chips_map)(struct dp_soc *soc,
struct dp_peer *peer,
uint16_t peer_id);
void (*dp_partner_chips_unmap)(struct dp_soc *soc,
uint16_t peer_id);
};
/**