Przeglądaj źródła

qcacmn: Change monitor ring reap sequence for qcn9000

For qcn9000 in case of monitor mode, reap monitor destination
ring first and status ring later to avoid backpressure
on monitor destination ring

Change-Id: I4e1931afe0453221f1326ca7bdb7f0273cc7363d
CRs-Fixed: 2670656
Amir 5 lat temu
rodzic
commit
76ab3fc618
2 zmienionych plików z 18 dodań i 4 usunięć
  1. 13 0
      dp/wifi3.0/dp_rx_mon.h
  2. 5 4
      dp/wifi3.0/dp_rx_mon_status.c

+ 13 - 0
dp/wifi3.0/dp_rx_mon.h

@@ -19,6 +19,19 @@
 #ifndef _DP_RX_MON_H_
 #define _DP_RX_MON_H_
 
+/*
+ * dp_rx_mon_status_process() - Process monitor status ring and
+ *>.....TLV in status ring.
+ *
+ * @soc: core txrx main context
+ * @mac_id: mac_id which is one of 3 mac_ids
+ * @quota: No. of ring entry that can be serviced in one shot.
+
+ * Return: uint32_t: No. of ring entry that is processed.
+ */
+uint32_t
+dp_rx_mon_status_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota);
+
 /**
 * dp_rx_mon_dest_process() - Brain of the Rx processing functionality
 *	Called from the bottom half (tasklet/NET_RX_SOFTIRQ)

+ 5 - 4
dp/wifi3.0/dp_rx_mon_status.c

@@ -1618,9 +1618,7 @@ dp_rx_mon_status_process_tlv(struct dp_soc *soc, uint32_t mac_id,
 					pdev->mon_chan_freq;
 			}
 
-			if (qdf_unlikely(soc->full_mon_mode))
-				dp_rx_mon_process(soc, mac_id, quota);
-			else
+			if (!soc->full_mon_mode)
 				dp_rx_mon_dest_process(soc, mac_id, quota);
 
 			pdev->mon_ppdu_status = DP_PPDU_STATUS_START;
@@ -1831,7 +1829,7 @@ done:
 
  * Return: uint32_t: No. of ring entry that is processed.
  */
-static inline uint32_t
+uint32_t
 dp_rx_mon_status_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota) {
 	uint32_t work_done;
 
@@ -1854,6 +1852,9 @@ dp_rx_mon_status_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota) {
  */
 uint32_t
 dp_mon_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota) {
+	if (qdf_unlikely(soc->full_mon_mode))
+		return dp_rx_mon_process(soc, mac_id, quota);
+
 	return dp_rx_mon_status_process(soc, mac_id, quota);
 }