diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index 04e17c0ba81b..a78a84d8c4ec 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -2447,6 +2447,7 @@ ol_txrx_vdev_attach(struct cdp_pdev *ppdev, * * @txrx_vdev: the virtual device's data object * @osif_vdev: the virtual device's OS shim object + * @ctrl_vdev: UMAC vdev objmgr handle * @txrx_ops: (pointers to)functions used for tx and rx data xfer * * The data object for a virtual device is created by the @@ -2460,9 +2461,9 @@ ol_txrx_vdev_attach(struct cdp_pdev *ppdev, * vdev objects, so the data SW can use the OS shim vdev handle * when passing rx data received by a vdev up to the OS shim. */ -static void ol_txrx_vdev_register(struct cdp_vdev *pvdev, - void *osif_vdev, - struct ol_txrx_ops *txrx_ops) +static void ol_txrx_vdev_register(struct cdp_vdev *pvdev, void *osif_vdev, + struct cdp_ctrl_objmgr_vdev *ctrl_vdev, + struct ol_txrx_ops *txrx_ops) { struct ol_txrx_vdev_t *vdev = (struct ol_txrx_vdev_t *)pvdev; @@ -2473,6 +2474,7 @@ static void ol_txrx_vdev_register(struct cdp_vdev *pvdev, } vdev->osif_dev = osif_vdev; + vdev->ctrl_vdev = ctrl_vdev; vdev->rx = txrx_ops->rx.rx; vdev->stats_rx = txrx_ops->rx.stats_rx; vdev->tx_comp = txrx_ops->tx.tx_comp; diff --git a/core/dp/txrx/ol_txrx_types.h b/core/dp/txrx/ol_txrx_types.h index 1b79d38acdf8..778dd2478f5d 100644 --- a/core/dp/txrx/ol_txrx_types.h +++ b/core/dp/txrx/ol_txrx_types.h @@ -1048,6 +1048,9 @@ struct ol_txrx_vdev_t { * to the target */ void *osif_dev; + + void *ctrl_vdev; /* vdev objmgr handle */ + union ol_txrx_align_mac_addr_t mac_addr; /* MAC address */ /* tx paused - NO LONGER NEEDED? */ TAILQ_ENTRY(ol_txrx_vdev_t) vdev_list_elem; /* node in the pdev's list diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c index 04d0c6c1649e..6690986030a9 100644 --- a/core/hdd/src/wlan_hdd_assoc.c +++ b/core/hdd/src/wlan_hdd_assoc.c @@ -2088,7 +2088,8 @@ QDF_STATUS hdd_roam_register_sta(struct hdd_adapter *adapter, txrx_ops.tx.tx = NULL; cdp_vdev_register(soc, - (struct cdp_vdev *)adapter->txrx_vdev, adapter, &txrx_ops); + (struct cdp_vdev *)adapter->txrx_vdev, adapter, + (struct cdp_ctrl_objmgr_vdev *)adapter->hdd_vdev, &txrx_ops); if (!txrx_ops.tx.tx) { hdd_err("%s vdev register fail", __func__); return QDF_STATUS_E_FAILURE; @@ -3931,9 +3932,10 @@ QDF_STATUS hdd_roam_register_tdlssta(struct hdd_adapter *adapter, qdf_mem_zero(&txrx_ops, sizeof(txrx_ops)); txrx_ops.rx.rx = hdd_rx_packet_cbk; cdp_vdev_register(soc, - (struct cdp_vdev *)cdp_get_vdev_from_vdev_id(soc, - (struct cdp_pdev *)pdev, adapter->session_id), - adapter, &txrx_ops); + (struct cdp_vdev *)cdp_get_vdev_from_vdev_id(soc, + (struct cdp_pdev *)pdev, adapter->session_id), + adapter, (struct cdp_ctrl_objmgr_vdev *)adapter->hdd_vdev, + &txrx_ops); adapter->tx_fn = txrx_ops.tx.tx; txrx_ops.rx.stats_rx = hdd_tx_rx_collect_connectivity_stats_info; diff --git a/core/hdd/src/wlan_hdd_ocb.c b/core/hdd/src/wlan_hdd_ocb.c index f53b7dfa14eb..26f8a215b989 100644 --- a/core/hdd/src/wlan_hdd_ocb.c +++ b/core/hdd/src/wlan_hdd_ocb.c @@ -256,7 +256,7 @@ static int hdd_ocb_register_sta(struct hdd_adapter *adapter) cdp_vdev_register(soc, (struct cdp_vdev *)cdp_get_vdev_from_vdev_id(soc, (struct cdp_pdev *)pdev, adapter->session_id), - adapter, &txrx_ops); + adapter, adapter->hdd_vdev, &txrx_ops); txrx_ops.rx.stats_rx = hdd_tx_rx_collect_connectivity_stats_info; adapter->tx_fn = txrx_ops.tx.tx; diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c index 3241256a4db3..ca9510dd16d7 100644 --- a/core/hdd/src/wlan_hdd_softap_tx_rx.c +++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c @@ -1039,7 +1039,8 @@ QDF_STATUS hdd_softap_register_sta(struct hdd_adapter *adapter, cdp_vdev_register(soc, (struct cdp_vdev *)cdp_get_vdev_from_vdev_id(soc, (struct cdp_pdev *)pdev, adapter->session_id), - adapter, &txrx_ops); + adapter, (struct cdp_ctrl_objmgr_vdev *)adapter->hdd_vdev, + &txrx_ops); adapter->txrx_vdev = (void *)cdp_get_vdev_from_vdev_id(soc, (struct cdp_pdev *)pdev, adapter->session_id); diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 8ad2102c9ac0..c17a97c9e538 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -2409,7 +2409,8 @@ int hdd_set_mon_rx_cb(struct net_device *dev) cdp_vdev_register(soc, (struct cdp_vdev *)cdp_get_vdev_from_vdev_id(soc, (struct cdp_pdev *)pdev, adapter->session_id), - adapter, &txrx_ops); + adapter, (struct cdp_ctrl_objmgr_vdev *)adapter->hdd_vdev, + &txrx_ops); /* peer is created wma_vdev_attach->wma_create_peer */ qdf_status = cdp_peer_register(soc, (struct cdp_pdev *)pdev, &sta_desc);