qcacmn: Lock rx_desc_pool to collect nbufs and delete later

When multi page alloc is activated, spinlock for rx_desc_pool
is being held for more than 2 seconds, resulting in QDF_BUG.
The major proportion of the time period is used in unmapping
the nbufs.
To fix this, lock rx_desc_pool only to collect nbufs from
rx_desc in a list and unmap and free the nbufs after releasing
the lock.

Change-Id: Iff2078a0de56b51712e2f9a7c5ace7a959e2445d
CRs-Fixed: 2779498
This commit is contained in:
Ananya Gupta
2020-09-25 16:17:19 +05:30
zatwierdzone przez snandini
rodzic 0907c4679d
commit 218ec1c24e
2 zmienionych plików z 56 dodań i 26 usunięć

Wyświetl plik

@@ -846,6 +846,12 @@ void dp_rx_process_mic_error(struct dp_soc *soc, qdf_nbuf_t nbuf,
void dp_2k_jump_handle(struct dp_soc *soc, qdf_nbuf_t nbuf, uint8_t *rx_tlv_hdr,
uint16_t peer_id, uint8_t tid);
#define DP_RX_HEAD_APPEND(head, elem) \
do { \
qdf_nbuf_set_next((elem), (head)); \
(head) = (elem); \
} while (0)
#define DP_RX_LIST_APPEND(head, tail, elem) \
do { \