Parcourir la source

qcacmn: Register tx completion callback

At the time of dp vdev registration, register tx completion
callback so that tx completions will be called for packets
whose tx completion is requested.

Change-Id: Ic3402f41a0962111901271fc8669974dfea2eb1c
CRs-Fixed: 2416554
Sravan Kumar Kairam il y a 6 ans
Parent
commit
d55a74c8c9
2 fichiers modifiés avec 8 ajouts et 0 suppressions
  1. 1 0
      dp/wifi3.0/dp_main.c
  2. 7 0
      dp/wifi3.0/dp_tx.c

+ 1 - 0
dp/wifi3.0/dp_main.c

@@ -4547,6 +4547,7 @@ static void dp_vdev_register_wifi3(struct cdp_vdev *vdev_handle,
 	vdev->osif_get_key = txrx_ops->get_key;
 	vdev->osif_rx_mon = txrx_ops->rx.mon;
 	vdev->osif_tx_free_ext = txrx_ops->tx.tx_free_ext;
+	vdev->tx_comp = txrx_ops->tx.tx_comp;
 #ifdef notyet
 #if ATH_SUPPORT_WAPI
 	vdev->osif_check_wai = txrx_ops->rx.wai_check;

+ 7 - 0
dp/wifi3.0/dp_tx.c

@@ -3200,6 +3200,7 @@ dp_tx_comp_process_desc_list(struct dp_soc *soc,
 	struct dp_tx_desc_s *next;
 	struct hal_tx_completion_status ts = {0};
 	struct dp_peer *peer;
+	qdf_nbuf_t netbuf;
 
 	DP_HIST_INIT();
 	desc = comp_head;
@@ -3208,6 +3209,12 @@ dp_tx_comp_process_desc_list(struct dp_soc *soc,
 		hal_tx_comp_get_status(&desc->comp, &ts, soc->hal_soc);
 		peer = dp_peer_find_by_id(soc, ts.peer_id);
 		dp_tx_comp_process_tx_status(desc, &ts, peer);
+
+		netbuf = desc->nbuf;
+		/* check tx complete notification */
+		if (QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_NOTIFY_COMP(netbuf))
+			dp_tx_notify_completion(soc, desc, netbuf);
+
 		dp_tx_comp_process_desc(soc, desc, &ts, peer);
 
 		if (peer)