diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h index 89f61f3ffe..74320cd246 100644 --- a/dp/inc/cdp_txrx_cmn.h +++ b/dp/inc/cdp_txrx_cmn.h @@ -3476,5 +3476,55 @@ int cdp_cfgmgr_get_peer_info(struct cdp_soc_t *soc, uint8_t soc_id, return soc->ops->cmn_drv_ops->cfgmgr_get_peer_info(soc, soc_id, ev_buf); } + +/* + * cdp_cfgmgr_get_vdev_create_evt_info - get vdev create info of a soc for dpdk + * @soc: soc handle + * @vdev_id: vdev id + * @ev_buf: pointer to fill vdev info + * + * Return: 0 if info filled successful, error otherwise + */ +static inline +int cdp_cfgmgr_get_vdev_create_evt_info(struct cdp_soc_t *soc, uint8_t vdev_id, + struct dpdk_wlan_vdev_create_info *ev_buf) +{ + if (!soc) { + dp_cdp_debug("Invalid Instance"); + return -EINVAL; + } + + if (!soc->ops->cmn_drv_ops || + !soc->ops->cmn_drv_ops->cfgmgr_get_vdev_create_evt_info) + return -EINVAL; + + return soc->ops->cmn_drv_ops->cfgmgr_get_vdev_create_evt_info( + soc, vdev_id, ev_buf); +} + +/* + * cdp_cfgmgr_get_peer_create_evt_info - get peer create info of a soc for dpdk + * @soc: soc handle + * @peer_id: peer id + * @ev_buf: pointer to fill peer info + * + * Return: 0 if info filled successful, error otherwise + */ +static inline +int cdp_cfgmgr_get_peer_create_evt_info(struct cdp_soc_t *soc, uint16_t peer_id, + struct dpdk_wlan_peer_create_info *ev_buf) +{ + if (!soc) { + dp_cdp_debug("Invalid Instance"); + return -EINVAL; + } + + if (!soc->ops->cmn_drv_ops || + !soc->ops->cmn_drv_ops->cfgmgr_get_peer_create_evt_info) + return -EINVAL; + + return soc->ops->cmn_drv_ops->cfgmgr_get_peer_create_evt_info( + soc, peer_id, ev_buf); +} #endif #endif /* _CDP_TXRX_CMN_H_ */ diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index 3f7a1eca5f..a9a1489889 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -758,6 +758,12 @@ struct cdp_cmn_ops { struct dpdk_wlan_vdev_info_event *ev_buf); int (*cfgmgr_get_peer_info)(struct cdp_soc_t *soc_hdl, uint8_t soc_id, struct dpdk_wlan_peer_info *ev_buf); + int (*cfgmgr_get_vdev_create_evt_info)( + struct cdp_soc_t *soc_hdl, uint8_t vdev_id, + struct dpdk_wlan_vdev_create_info *ev_buf); + int (*cfgmgr_get_peer_create_evt_info)( + struct cdp_soc_t *soc_hdl, uint16_t peer_id, + struct dpdk_wlan_peer_create_info *ev_buf); #endif }; diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index c2527945ae..e047276f53 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -12347,6 +12347,8 @@ static struct cdp_cmn_ops dp_ops_cmn = { .cfgmgr_get_soc_info = dp_cfgmgr_get_soc_info, .cfgmgr_get_vdev_info = dp_cfgmgr_get_vdev_info, .cfgmgr_get_peer_info = dp_cfgmgr_get_peer_info, + .cfgmgr_get_vdev_create_evt_info = dp_cfgmgr_get_vdev_create_evt_info, + .cfgmgr_get_peer_create_evt_info = dp_cfgmgr_get_peer_create_evt_info, #endif }; diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index 5334e39dc4..33a8f1756d 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -1531,7 +1531,7 @@ static inline QDF_STATUS dp_peer_map_ast(struct dp_soc *soc, txrx_ast_free_cb cb = NULL; QDF_STATUS err = QDF_STATUS_SUCCESS; - if (soc->ast_offload_support) + if (soc->ast_offload_support && !wlan_cfg_get_dp_soc_dpdk_cfg(soc->ctrl_psoc)) return QDF_STATUS_SUCCESS; if (!peer) { @@ -1611,7 +1611,8 @@ static inline QDF_STATUS dp_peer_map_ast(struct dp_soc *soc, ase_list_elem); } - if (ast_entry || (peer->vdev && peer->vdev->proxysta_vdev)) { + if (ast_entry || (peer->vdev && peer->vdev->proxysta_vdev) || + wlan_cfg_get_dp_soc_dpdk_cfg(soc->ctrl_psoc)) { if (soc->cdp_soc.ol_ops->peer_map_event) { soc->cdp_soc.ol_ops->peer_map_event( soc->ctrl_psoc, peer->peer_id,