diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h index 15ec00c944a3..57f2db37cbc3 100644 --- a/dp/inc/cdp_txrx_cmn.h +++ b/dp/inc/cdp_txrx_cmn.h @@ -597,7 +597,8 @@ cdp_set_monitor_filter(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, *****************************************************************************/ static inline void cdp_vdev_register(ol_txrx_soc_handle soc, struct cdp_vdev *vdev, - void *osif_vdev, struct ol_txrx_ops *txrx_ops) + void *osif_vdev, struct cdp_ctrl_objmgr_vdev *ctrl_vdev, + struct ol_txrx_ops *txrx_ops) { if (!soc || !soc->ops) { QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, @@ -611,7 +612,7 @@ cdp_vdev_register(ol_txrx_soc_handle soc, struct cdp_vdev *vdev, return; soc->ops->cmn_drv_ops->txrx_vdev_register(vdev, - osif_vdev, txrx_ops); + osif_vdev, ctrl_vdev, txrx_ops); } static inline int diff --git a/dp/inc/cdp_txrx_handle.h b/dp/inc/cdp_txrx_handle.h index 54580eb8e5bc..901990c0d2ab 100644 --- a/dp/inc/cdp_txrx_handle.h +++ b/dp/inc/cdp_txrx_handle.h @@ -37,4 +37,10 @@ struct cdp_soc; * cdp_ctrl_objmgr_pdev - opaque handle for UMAC pdev object */ struct cdp_ctrl_objmgr_pdev; + +/** + * cdp_ctrl_objmgr_vdev - opaque handle for UMAC vdev object + */ +struct cdp_ctrl_objmgr_vdev; + #endif diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index 0832700301d6..974f47fbc723 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -159,7 +159,8 @@ struct cdp_cmn_ops { ********************************************************************/ void (*txrx_vdev_register)(struct cdp_vdev *vdev, - void *osif_vdev, struct ol_txrx_ops *txrx_ops); + void *osif_vdev, struct cdp_ctrl_objmgr_vdev *ctrl_vdev, + struct ol_txrx_ops *txrx_ops); int (*txrx_mgmt_send)(struct cdp_vdev *vdev, qdf_nbuf_t tx_mgmt_frm, uint8_t type); diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 737b3291a25d..ec38e67a4ccf 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -3367,16 +3367,18 @@ fail0: * dp_vdev_register_wifi3() - Register VDEV operations from osif layer * @vdev: Datapath VDEV handle * @osif_vdev: OSIF vdev handle + * @ctrl_vdev: UMAC vdev handle * @txrx_ops: Tx and Rx operations * * Return: DP VDEV handle on success, NULL on failure */ static void dp_vdev_register_wifi3(struct cdp_vdev *vdev_handle, - void *osif_vdev, + void *osif_vdev, struct cdp_ctrl_objmgr_vdev *ctrl_vdev, struct ol_txrx_ops *txrx_ops) { struct dp_vdev *vdev = (struct dp_vdev *)vdev_handle; vdev->osif_vdev = osif_vdev; + vdev->ctrl_vdev = ctrl_vdev; vdev->osif_rx = txrx_ops->rx.rx; vdev->osif_rsim_rx_decap = txrx_ops->rx.rsim_rx_decap; vdev->osif_get_key = txrx_ops->get_key; diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index c4f9133f39ba..0daba1de6c15 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1191,6 +1191,8 @@ struct dp_vdev { /* Handle to the OS shim SW's virtual device */ ol_osif_vdev_handle osif_vdev; + /* Handle to the UMAC handle */ + struct cdp_ctrl_objmgr_vdev *ctrl_vdev; /* vdev_id - ID used to specify a particular vdev to the target */ uint8_t vdev_id;