qcacmn: Set search idx and cache mapping for ppeds

Set search idx and cache mapping for ppeds in
sta mode

Change-Id: I1f892d329878e093d19324a178566b87715e1736
CRs-Fixed: 3367824
Esse commit está contido em:
Pavankumar Nandeshwar
2022-12-23 07:59:03 -08:00
commit de Madan Koyyalamudi
commit 4e0ae9b556
8 arquivos alterados com 83 adições e 1 exclusões

Ver arquivo

@@ -2493,6 +2493,8 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
arch_ops->dp_register_ppeds_interrupts = dp_register_ppeds_interrupts;
arch_ops->dp_free_ppeds_interrupts = dp_free_ppeds_interrupts;
arch_ops->dp_tx_ppeds_inuse_desc = dp_ppeds_inuse_desc;
arch_ops->dp_tx_ppeds_cfg_astidx_cache_mapping =
dp_tx_ppeds_cfg_astidx_cache_mapping;
#endif
dp_init_near_full_arch_ops_be(arch_ops);
arch_ops->get_reo_qdesc_addr = dp_rx_get_reo_qdesc_addr_be;

Ver arquivo

@@ -98,6 +98,7 @@ enum CMEM_MEM_CLIENTS {
#endif
#ifdef WLAN_SUPPORT_PPEDS
#define DP_PPEDS_STAMODE_ASTIDX_MAP_REG_IDX 1
/* The MAX PPE PRI2TID */
#define DP_TX_INT_PRI2TID_MAX 15

Ver arquivo

@@ -3053,6 +3053,23 @@ void dp_rx_reset_roaming_peer(struct dp_soc *soc, uint8_t vdev_id,
}
#endif
#ifdef WLAN_SUPPORT_PPEDS
static void
dp_tx_ppeds_cfg_astidx_cache_mapping(struct dp_soc *soc, struct dp_vdev *vdev,
bool peer_map)
{
if (soc->arch_ops.dp_tx_ppeds_cfg_astidx_cache_mapping)
soc->arch_ops.dp_tx_ppeds_cfg_astidx_cache_mapping(soc, vdev,
peer_map);
}
#else
static void
dp_tx_ppeds_cfg_astidx_cache_mapping(struct dp_soc *soc, struct dp_vdev *vdev,
bool peer_map)
{
}
#endif
/**
* dp_rx_peer_map_handler() - handle peer map event from firmware
* @soc_handle - generic soc handle
@@ -3117,6 +3134,8 @@ dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id,
CDP_LINK_PEER_TYPE);
if (peer) {
bool peer_map = true;
/* Updating ast_hash and ast_idx in peer level */
peer->ast_hash = ast_hash;
peer->ast_idx = hw_peer_id;
@@ -3137,6 +3156,9 @@ dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id,
ast_hash, hw_peer_id);
vdev->bss_ast_hash = ast_hash;
vdev->bss_ast_idx = hw_peer_id;
dp_tx_ppeds_cfg_astidx_cache_mapping(soc, vdev,
peer_map);
}
/* Add ast entry incase self ast entry is
@@ -3270,6 +3292,15 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
*/
dp_peer_rx_reo_shared_qaddr_delete(soc, peer);
vdev = peer->vdev;
/* only if peer is in STA mode and not tdls peer */
if (wlan_op_mode_sta == vdev->opmode && !peer->is_tdls_peer) {
bool peer_map = false;
dp_tx_ppeds_cfg_astidx_cache_mapping(soc, vdev, peer_map);
}
dp_peer_find_id_to_obj_remove(soc, peer_id);
if (soc->arch_ops.dp_partner_chips_unmap)
@@ -3288,7 +3319,6 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
peer_id, vdev_id, mac_addr);
}
vdev = peer->vdev;
dp_update_vdev_stats_on_peer_unmap(vdev, peer);
dp_peer_update_state(soc, peer, DP_PEER_STATE_INACTIVE);

Ver arquivo

@@ -2038,6 +2038,9 @@ struct dp_arch_ops {
#ifdef WLAN_SUPPORT_PPEDS
void (*dp_txrx_ppeds_rings_status)(struct dp_soc *soc);
void (*dp_tx_ppeds_inuse_desc)(struct dp_soc *soc);
void (*dp_tx_ppeds_cfg_astidx_cache_mapping)(struct dp_soc *soc,
struct dp_vdev *vdev,
bool peer_map);
#endif
QDF_STATUS (*txrx_soc_ppeds_start)(struct dp_soc *soc);
void (*txrx_soc_ppeds_stop)(struct dp_soc *soc);