Commit Graph

3 Commits

Author SHA1 Message Date
Amir
b1ab3a6941 qca-wifi: Add WAR to skip status ring entry
STATUS_BUFFRE_DONE tlv written in first word for a status
buffer indicates that DMA is done for that status ring entry.

In existing implementation, for a status ring entry if
STATUS_BUFFRE_DONE tlv is not written by HW, we poll on to status ring
entry until DMA is done by HW.

During lmac reset it may happne that HW will not write STATUS_BUFFRE_DONE
tlv in status buffer, in that case we end up polling infinitely leading
to backpressure on monitor status ring.

As per MAC team's suggestion, when HP + 1 entry is peeked and if DMA
is not done and if HP + 2 entry's DMA done is set,
replenish HP + 1 entry and start processing in next interrupt.

If HP + 2 entry's DMA done is not set,
poll onto HP + 1 entry DMA done to be set.

Change-Id: I2da5a16ec901764fcb88c417f599d7a1344bcea0
CRs-Fixed: 2744602
2020-08-11 13:08:42 +05:30
Amir
ee09492ea5 qca-wifi: Fix ppdu_id mismatch issue
For full monitor, it is observed destination ppdu_id
and status ppdu_id mismatches.

a. If status ring ppdu_id is leading compared to destiantion ring
ppdu_id, drop destination ring ppdus
b. If status ring ppdu_id is lagging compared to destiantion ring
ppdu_id, drop status ring ppdus
c. Handle warp around scenarios

CRs-Fixed: 2686747
Change-Id: Ie059c891347d4ff59b230881d5a9049d8acf279e
2020-06-10 21:27:11 +05:30
Amir
86628c52f7 qca-wifi: Add full moniotor mode processing
a. Add attach and detach for full monitor resources
	b. Read 'sw_monitor_ring' descriptor and pop MPDU
	c. Replenish buffers and link descriptors back to HW
	d. Form a MPDU queue per-ppdu and all MPDUs per-PPDU to upper layer

Change-Id: I5abff75354dd3686491d4fee3c3c4612a3ca3e15
2020-03-24 11:52:18 +05:30