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
This commit is contained in:
Amir 2020-04-25 12:55:19 +05:30 • committed by nshrivas
commit 76ab3fc618
2 changed files with 18 additions and 4 deletions

View file

@ -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)

View file

@ -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);
}