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
Qcn9000 changes to handle offset changes
with respect to rx flow search entry.
Validation Details: Unit testing Rx FSE feature and MIG run
CRs-Fixed: 2595489
Change-Id: Ib470dadf9d3dcad4203e7e9af7e5af69a3628a7a
Before adding a ppdu to the retry queue, check if the
sched_cmdid matches that of the first ppdu in the queue.
If it does not, then the retry queue should be freed as
the received ppdu is not a retry of the ppdu in the queue.
Change-Id: I96a097f57d86539c8395af28f6fd57c13f4cad49
delete redefinition of mcs from rx_user_status and keep mcs
derived from preamble which came from rts.
Change-Id: I5323d7944abd474a82d34b812caac1290168ea94
Add support
a. Drop msdu on queue exceed threshold of 4096
b. Add support to print consolidated peer tid queue.
Change-Id: I2b91b151531c839657716ac52987cf5e4a62e7cc
preamble value for mubar case is stored in phy_mode variable. this needs
to get carried over to preamble variable in mpdu_info so its used
correctly in radiotap setup.
Change-Id: If149f7b58a3d8b788bab706f8943d66f95e8517c
If status ring and destination ring ppdu id mismatches,
a. If If status ring ppdu > destination ring ppdu,
drop destiantion ring ppdu untill it matches status ring.
a. If If status ring ppdu < destination ring ppdu,
drop status ring ppdu untill it matches status ring
CRs-Fixed: 2677655
Change-Id: I80638245a09c3ed5846c0e71c8ad94e1c22c9014
For BRP frame ppdu, frame control is not valid in all user
completion tlv, which is causing to drop ppdu as wrong ctrl mgmt
queue checked for payload.
To fix this, updated frame control based on ppdu frame type
Change-Id: Ia5eb67da14647cccfe2ade7c0626a97171454446
CRs-Fixed: 2677252
all probe responses and disassoc from bss peer will be accepted and
later filtered by
mac. Additionally retry queue is having a treshold for this new
mechanism to be able to flush queue in case it gets filled up.
this is meant to work for every control frame that has reached such a
state in its retry q.
Change-Id: Ie49d00d9b9422f02f5d9512a891ceb546cdd432d
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: If107d40471a4d01ce8d42054ed844b98217e60cf
CRs-Fixed: 2670656
a. ppdu desc in pending ppdu queue is dropped on queue length exceeds
threshold which is 32.
b. configuring ring map for soc only once.
Change-Id: I7398a478ce9e4d974d9ecc2a06d30821f151a1b5
For packets from exception ring will have extra HTT header, that
is adjusted to avoid wrong LLC header
Change-Id: I36adaa6ab0c3ba96a5eec9bf05747576e3938028
CRs-Fixed: 2661034
The current implementation of the TX Capture
feature assumes a non QoS 3 address frame for
each frame. If a frame is a QoS frame, the extra
fields are manually added, but if the frame is a
4 address frame, there is no handling. Add QoS,
4 address and 4 address QoS frame types to the
TX Capture feature and update accordingly.
Change-Id: Idd7f8f55a5543718f52bc38be396d671b87b54bd
CRs-Fixed: 2636684
filter pass seems to not be working for control frames
so we are using mac check address comparison for non-bss freames
when tx_monitor is set
Change-Id: I3a003636381f73191081e821dbe8cf00a67cb042
If tx capture, sniffer are not enabled, mgmt nbuf is freed.
It is causing use-after-free in bpr enabled case
Added change to free only when bpr is disabled
CRs-Fixed: 2662214
Change-Id: I0d889f371cf47047200f70563b589fac99733c49
Hold the ast lock while fetching and using the ast
entry from ast table without unlocking in between
to make sure that the ast entry is not freed
in between.
Change-Id: I887b94441e7c19d6ce0bf7175f61a1dc9055a0fc
use mac addr compare function with dummy mac addr set to all 0 and dest
mac addr. if they are similar then just ignore frame.
Change-Id: I8c892d0ca4a210865720b94b580b6e24dad0382b
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
Beacon frames are FW generated frames, FW indicated them as DATA_SU,
with this, frame is not marked as self gen. It gets added to retry_q.
Check ppdu frame type and subtype to mark frame as selfgen if it beacon
Change-Id: If0bfd9bf2cc321afe207a4db7529e24baebfd376
CRs-Fixed: 2643848
if last_msdu is not received then allocated
mpdu_nbuf and mpdu_q is not freed,
This change frees the buffers in last_msdu not seen case.
Change-Id: Icaaa6e227f3ea1d314c6d15a9f76c2f622d5d93f
CRs-Fixed: 2643848
If tx_capture is disabled, the frames notified to tx_capture
module needs to be freed.
This change frees mgmt frames in tx capture module, in case feature
is disabled
Change-Id: I71f102ba2f25f23bdcef63dddb525d5f7b0a692a
CRs-Fixed: 2643848
1) Avoid removing wrong nbuf from queue
In corner case, the current flow can remove first nbuf instead of
actual nbuf from queue, this can lead to having the actual pointer
stored at two array indexs.
2) tsf wraparound handling for mgmt frame
3) Mpdu tried is higher than ba_sisze
mpdus[] is allocated with ba_size, it is observed that mpdu_tried
is higher than ba_size, which can lead to buffer overlow.
Added the check of ba_size along with mpdu_tried.
To avoid it, copied nbuf in the corner case, and left the actual nbuf
in the xretries queue.
Change-Id: Ifa57eaf62cf50aa2c356a6d1f41ef4b7283be52e
CRs-Fixed: 2643848
Hold peer_ref while adding peer to multipass_list
which will be released during the removal from the list.
Change-Id: I37ada3fd433dc9a8858dedb82dc9caee151fc88a
Fix to support Tx capture for below issues
a. intermittent change to drops all MU frames in Tx capture.
b. Fix to support, FW indicates enqueue bitmap with more bits than
actual MPDUs tried by HW tx capture holds more pending PPDUs, it causes
higher memory usage.
c. holding peer reference on get and release reference on delete
during tx capture.
Change-Id: I0ac5dce7995413585164b6c15dd8b647f0886fb1
Currently, there is no check for QoS NULL when
handling data frames in the TX Cap feature. This
leads to QoS NULL frames not being seen OTA. Add
a check in dp_tx_ppdu_stats_process to ensure data
frame is not a QoS NULL data frame before handling,
since QoS NULL payload comes in management path.
Change-Id: I9fa2e68115327a283b241214ff62534bcb1ed74a
CRs-Fixed: 2632712