Эх сурвалжийг харах

qcacld-3.0: Update UMAC vdev objmgr handle to DP vdev

At DP vdev registration update UMAC vdev objmgr handle to the
DP vdev structure.

Change-Id: I438cac1cc952ee8e1a4a372320e686d610b6c071
CRs-Fixed: 2236430
Sravan Kumar Kairam 7 жил өмнө
parent
commit
43f191ba25

+ 5 - 3
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;

+ 3 - 0
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

+ 6 - 4
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;
 

+ 1 - 1
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;
 

+ 2 - 1
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);

+ 2 - 1
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);