|
@@ -3053,6 +3053,23 @@ void dp_rx_reset_roaming_peer(struct dp_soc *soc, uint8_t vdev_id,
|
|
}
|
|
}
|
|
#endif
|
|
#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
|
|
* dp_rx_peer_map_handler() - handle peer map event from firmware
|
|
* @soc_handle - generic soc handle
|
|
* @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);
|
|
CDP_LINK_PEER_TYPE);
|
|
|
|
|
|
if (peer) {
|
|
if (peer) {
|
|
|
|
+ bool peer_map = true;
|
|
|
|
+
|
|
/* Updating ast_hash and ast_idx in peer level */
|
|
/* Updating ast_hash and ast_idx in peer level */
|
|
peer->ast_hash = ast_hash;
|
|
peer->ast_hash = ast_hash;
|
|
peer->ast_idx = hw_peer_id;
|
|
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);
|
|
ast_hash, hw_peer_id);
|
|
vdev->bss_ast_hash = ast_hash;
|
|
vdev->bss_ast_hash = ast_hash;
|
|
vdev->bss_ast_idx = hw_peer_id;
|
|
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
|
|
/* 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);
|
|
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);
|
|
dp_peer_find_id_to_obj_remove(soc, peer_id);
|
|
|
|
|
|
if (soc->arch_ops.dp_partner_chips_unmap)
|
|
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);
|
|
peer_id, vdev_id, mac_addr);
|
|
}
|
|
}
|
|
|
|
|
|
- vdev = peer->vdev;
|
|
|
|
dp_update_vdev_stats_on_peer_unmap(vdev, peer);
|
|
dp_update_vdev_stats_on_peer_unmap(vdev, peer);
|
|
|
|
|
|
dp_peer_update_state(soc, peer, DP_PEER_STATE_INACTIVE);
|
|
dp_peer_update_state(soc, peer, DP_PEER_STATE_INACTIVE);
|