diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h index fda03d624f..ef07fedae3 100644 --- a/dp/inc/cdp_txrx_cmn.h +++ b/dp/inc/cdp_txrx_cmn.h @@ -242,6 +242,24 @@ cdp_vdev_detach(ol_txrx_soc_handle soc, uint8_t vdev_id, callback, cb_context); } +#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) +static inline void +cdp_vdev_recovery_flush_peers(ol_txrx_soc_handle soc, uint8_t vdev_id) +{ + if (!soc || !soc->ops) { + dp_cdp_debug("Invalid Instance:"); + QDF_BUG(0); + return; + } + + if (!soc->ops->cmn_drv_ops || + !soc->ops->cmn_drv_ops->txrx_recovery_vdev_flush_peers) + return; + + soc->ops->cmn_drv_ops->txrx_recovery_vdev_flush_peers(soc, vdev_id); +} +#endif + static inline int cdp_pdev_attach_target(ol_txrx_soc_handle soc, uint8_t pdev_id) { diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index f3399a7c21..c36548dfaf 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -613,6 +613,11 @@ struct cdp_cmn_ops { #ifdef FEATURE_RUNTIME_PM void (*set_rtpm_tput_policy)(struct cdp_soc_t *soc, bool val); #endif + +#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) + void (*txrx_recovery_vdev_flush_peers)(struct cdp_soc_t *soc, + uint8_t vdev_id); +#endif }; struct cdp_ctrl_ops { diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index c94fad1040..acb79e1a9f 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -12376,6 +12376,23 @@ dp_check_vdev_tx_delay_stats_enabled(struct cdp_soc_t *soc_hdl, } #endif +#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) +static void +dp_recovery_vdev_flush_peers(struct cdp_soc_t *cdp_soc, uint8_t vdev_id) +{ + struct dp_soc *soc = (struct dp_soc *)cdp_soc; + struct dp_vdev *vdev; + + vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP); + + if (!vdev) + return; + + dp_vdev_flush_peers((struct cdp_vdev *)vdev, false); + dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP); +} +#endif + static struct cdp_cmn_ops dp_ops_cmn = { .txrx_soc_attach_target = dp_soc_attach_target_wifi3, .txrx_vdev_attach = dp_vdev_attach_wifi3, @@ -12488,6 +12505,9 @@ static struct cdp_cmn_ops dp_ops_cmn = { #ifdef WLAN_FEATURE_PKT_CAPTURE_V2 .set_pkt_capture_mode = dp_set_pkt_capture_mode, #endif +#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) + .txrx_recovery_vdev_flush_peers = dp_recovery_vdev_flush_peers, +#endif }; static struct cdp_ctrl_ops dp_ops_ctrl = {