qcacmn: Reap more monitor ring entries before rescheduling timer
Currently, in monitor mode, once the status ring is reaped we do not check again if there are new entries added in the ring during the monitor ring descriptor processing. This can cause backpressure on monitor rings when there is very high throughput or a bursty inflow of packets. Add the logic to continue reaping the monitor rings, until the work budget or a time quota is not exhausted. Change-Id: Iee95ac8aec92eabb3a8037b1dd9cf0c6e1dbe10b CRs-Fixed: 2650480
Dieser Commit ist enthalten in:

committet von
nshrivas

Ursprung
e0332f2ef5
Commit
962dd74800
@@ -109,6 +109,23 @@ extern uint8_t
|
||||
dp_cpu_ring_map[DP_NSS_CPU_RING_MAP_MAX][WLAN_CFG_INT_NUM_CONTEXTS_MAX];
|
||||
#endif
|
||||
|
||||
#define DP_MAX_TIMER_EXEC_TIME_TICKS \
|
||||
(QDF_LOG_TIMESTAMP_CYCLES_PER_10_US * 100 * 20)
|
||||
|
||||
/**
|
||||
* enum timer_yield_status - yield status code used in monitor mode timer.
|
||||
* @DP_TIMER_NO_YIELD: do not yield
|
||||
* @DP_TIMER_WORK_DONE: yield because work is done
|
||||
* @DP_TIMER_WORK_EXHAUST: yield because work quota is exhausted
|
||||
* @DP_TIMER_TIME_EXHAUST: yield due to time slot exhausted
|
||||
*/
|
||||
enum timer_yield_status {
|
||||
DP_TIMER_NO_YIELD,
|
||||
DP_TIMER_WORK_DONE,
|
||||
DP_TIMER_WORK_EXHAUST,
|
||||
DP_TIMER_TIME_EXHAUST,
|
||||
};
|
||||
|
||||
#if DP_PRINT_ENABLE
|
||||
#include <stdarg.h> /* va_list */
|
||||
#include <qdf_types.h> /* qdf_vprint */
|
||||
@@ -131,7 +148,6 @@ enum {
|
||||
DP_PRINT_LEVEL_INFO2,
|
||||
};
|
||||
|
||||
|
||||
#define dp_print(level, fmt, ...) do { \
|
||||
if (level <= g_txrx_print_level) \
|
||||
qdf_print(fmt, ## __VA_ARGS__); \
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren