ソースを参照

qcacld-3.0: Register peer_unmap_sync_cb during wma_tx_attach

Register peer unmap sync callback in pdev during wma_tx_attach
to be accessed in ol_txrx.

Change-Id: I16909ae51e3ca55714c8d1f9f07d7a02f651c190
CRs-Fixed: 2398856
Alok Kumar 6 年 前
コミット
688eadbcc0
2 ファイル変更23 行追加1 行削除
  1. 18 1
      core/dp/txrx/ol_txrx.c
  2. 5 0
      core/wma/src/wma_data.c

+ 18 - 1
core/dp/txrx/ol_txrx.c

@@ -3293,7 +3293,6 @@ static void ol_txrx_peer_detach_force_delete(void *ppeer)
  * @peer_unmap_sync - peer unmap sync cb.
  * @bitmap - bitmap indicating special handling of request.
  *
- *
  * Return: None
  */
 static void ol_txrx_peer_detach_sync(void *ppeer,
@@ -3312,6 +3311,23 @@ static void ol_txrx_peer_detach_sync(void *ppeer,
 	ol_txrx_peer_detach(peer, bitmap);
 }
 
+/**
+ * ol_txrx_peer_unmap_sync_cb_set() - set peer unmap sync callback
+ * @ppdev - TXRX pdev context
+ * @peer_unmap_sync - peer unmap sync callback
+ *
+ * Return: None
+ */
+static void ol_txrx_peer_unmap_sync_cb_set(
+				struct cdp_pdev *ppdev,
+				ol_txrx_peer_unmap_sync_cb peer_unmap_sync)
+{
+	struct ol_txrx_pdev_t *pdev = (struct ol_txrx_pdev_t *)ppdev;
+
+	if (!pdev->peer_unmap_sync_cb)
+		pdev->peer_unmap_sync_cb = peer_unmap_sync;
+}
+
 /**
  * ol_txrx_dump_tx_desc() - dump tx desc total and free count
  * @txrx_pdev: Pointer to txrx pdev
@@ -5532,6 +5548,7 @@ static struct cdp_cmn_ops ol_ops_cmn = {
 	.txrx_mgmt_send_ext = ol_txrx_mgmt_send_ext,
 	.txrx_mgmt_tx_cb_set = ol_txrx_mgmt_tx_cb_set,
 	.txrx_data_tx_cb_set = ol_txrx_data_tx_cb_set,
+	.txrx_peer_unmap_sync_cb_set = ol_txrx_peer_unmap_sync_cb_set,
 	.txrx_get_tx_pending = ol_txrx_get_tx_pending,
 	.flush_cache_rx_queue = ol_txrx_flush_cache_rx_queue,
 	.txrx_fw_stats_get = ol_txrx_fw_stats_get,

+ 5 - 0
core/wma/src/wma_data.c

@@ -1445,6 +1445,11 @@ QDF_STATUS wma_tx_attach(tp_wma_handle wma_handle)
 			wma_mgmt_tx_dload_comp_hldr,
 			wma_mgmt_tx_ack_comp_hdlr, wma_handle);
 
+	/* Register callback to send PEER_UNMAP_RESPONSE cmd*/
+	if (cdp_cfg_get_peer_unmap_conf_support(soc))
+		cdp_peer_unmap_sync_cb_set(soc, txrx_pdev,
+					   wma_peer_unmap_conf_cb);
+
 	/* Store the Mac Context */
 	wma_handle->mac_context = cds_handle->mac_context;