When a msdu scattered across multiple nbufs is received
in REO2SW ring and the remaining nbufs are not yet
available in the ring, loop in dp_rx_process is exited
without resetting the invalid bit in the ring desc cookie.
This will result in an incorrect assertion failure when
the same entry is processed the next time.
Fix is to reset the invalid bit in ring desc cookie
when the loop is exited in the above msdu scattered
scenario.
Change-Id: Ie5cfa1fb8ea1db4b7a0a4837545ecbfdfbb8719a
CRs-Fixed: 2916296
MSDU with len 1654 is received in the REO2SW ring and
the total len of the pkt would be 1654 + 392 (pkt tlvs)
+ 2 (l2 hdr padding) = 2048bytes. The nbuf len sanity
checks for strictly less than 2048 bytes which results
in the assertion failure.
Fix is to add the equal case when validating the
nbuf len.
Change-Id: I7e5d1df10339c8d7908a12001c2322028965a8fe
CRs-Fixed: 2916351
Buffers replenished post processing entries in the
REO2TCL ring do not have ipa smmu mappings created
when RX_PREALLOC_BUFFER_POOL feature is disabled.
This will result in SMMU fault when IPA HW accesses
such replenished buffers.
Fix is to create IPA SMMU mapping for replenished buffers
when RX_PREALLOC_BUFFER_POOL feature is disabled as well.
Change-Id: I0fe611a1279b91a3e45bc269348e05de9015d596
CRs-Fixed: 2915686
delete copy preamble from ppdu_desc to peer in data type case.
this will give mu_bar preamble of a data frame instead of ctrl frame.
this will not affect tx_capture given that preamble is copied to
phy_type in ppdu_desc from ppdu_desc preamble itself.
this should fix issue with pulling information from ppdu descriptor by
having data frames with low mcs. mcs was correct but preamble gave
impression that frame was a data but it was a ctrl frame.
Change-Id: Id82e6eb98af0e9488227bff43fc77f188eee77e3
Add NULL check for function pointer vdev->osif_proxy_arp .
Which is leading to a NULL pointer derefrence error.
Change-Id: I850d10da879231255970572487260e75fe2e3a78
CRs-Fixed: 2909911
Currently full monitor is enabled at vap create time and disabled
at vap deinit time, this results not configuring full monitor
mode during vap up time leading to backpressure on montor status ring.
To have symmetry, enable full monitor mode at during vap init.
Change-Id: I7828a7f2af400cfa094dc6d6139646760c932f09
Currently, we break the dp_rx_process() reap loop when we encounter
a ring descriptor with invalid bit set in SW cookie. If the HW
has copied old/stale entries in the ring, then we will end up
processing the same entry every time we try to reap the ring.
Instead, assert on processing such invalid entries so that
we can obtain useful debug information.
CRs-Fixed: 2904509
Change-Id: Iddde959a573ddf4ca364e1fb7a54ed0eaf4dc169
Same cookie was provided in REO srng and REO exception
ring. As a result, NULL pointer dereference occurred in
dp_rx_reo_err_entry_process.
To fix this, adding nbuf paddr sanity check in
function dp_rx_reo_err_entry_process.
CRs-Fixed: 2892345
Change-Id: Ie359921d8a270a3428b8286792941e84b0c68425
Refill pool buffer IPA mapping is done during allocation time,
but in some cases where IPA pipes enable/disable happens in between
previous mapping is not valid which is causing SMMU fault from IPA module.
Fix this by moving IPA mapping before replenishing buffers to RXDMA ring.
Change-Id: Ie6c5eb791b6f832f311a6e89489aebef37094d8f
CRS-Fixed: 2901819
Rx desc alloc failures foes not really reflect rx packet errors.
So rx desc alloc failures shall not be counted as packet errors
Change-Id: I85ed478bbb3af24ff680a338aca86d3b4548ad8d
Adding lock for dp_txrx_ppdu_stats_handler given
that insertion and deletion happen in different cores.
Change-Id: Ic0102d615f02cbfed70acc1114a314426466638e
The bridge forwards the multicast packets to all the
interfaces attached the bridge.
When the STA network interface receives such packets
from bridge and send it to the AP, it is echoed back
from the BSS.
These packets are not intended for the bridge as it
will lead to looping.
Add a check to detect and drop such packets when
received back from the BSS.
Refactor dp_rx_mcast_echo_check function to fix
compilation errors from the above change.
CRs-Fixed: 2894272
Change-Id: I3f9e92c3598af11d3ff4e6b9b8afbc4110a926fc
Rx refill lock is not in sync during deinit path causing
mem leak of refill buffers. Set the Rx refill lock during deinit path.
Change-Id: Ic7d07c0fcaae26f6a269afcba4d593be1d5eacad
CRs-Fixed: 2898006
Change-Id: I483b74ee86ef648b9e75251097c33a18f9e0f884
* /local/mnt/workspace/dharilak/git_history/src/qca-wifi-oss: (1722 commits)
Move files dp_txrx_wds.c/.h with history from qca-wifi-oss to CMN project
qca-wifi: Filter to add AP channel report based on opclass
qca-wifi: Handle memory leak and LOCK in dfs_precac
qca-wifi: Add a dispatcher for reg_is_chan_disabled
qca-wifi: TxCapture: Protect access to defer_msdu_q
qca-wifi: Do not add 80MHz non DFS channels in precaclist
qca-wifi: add fix for last set bit to update ba size
qca-wifi: Move dfs_set_nol back to common code
qca-wifi: fix on ppdu_info mem error
qca-wifi: Add definitons for resource profile APIs
qca-wifi: Command to configure max auth failure packets
qca-wifi: Add lock for EXTAP table
qca-wifi: Remove IEEE80211_PARAM_EXT_IFACEUP_ACS
qca-wifi: Add command to configure scheduler watchdog timeout
qca-wifi: filter out frames with tlv miss
qca-wifi: Add new WDI event index for tx capture
qca-wifi-oss : Start RCAC on 80MHz for 160MHz current operating width
qca-wifi: update sequence number only on valid
qca-wifi: fix update bitmap for end of window
qca-wifi: TxCapture: Fix OOB access of tid array
...
Any update to the SRNG TP/HP when the device is in low power
state would result in system errors. It is recommended to disable
EXT grp irqs and drain TXRX before sending power save enter command
to the FW. This will ensure that no interrupts are received while
in power save mode and as a result there wont be any HP/TP updates.
Change-Id: Ibf952bbc2c6d13fb3e4ca6b4845bc9cc887fa694
CRs-Fixed: 2883135
Add wbm head/tail pointer stats to dp_txrx_stats and ring
usage percentage for all SRC and DST rings.
Stats added to the following cmd: iwpriv wlan0 txrx_stats 26 0
CRs-Fixed: 2865996
Change-Id: I7d144d87c5f3485ec9ba85f50b036b69a64e53c6
For the minidump feature, the wlan_minidump_remove function
definition is modified. So, update the function parameters
accordingly at all instances of the wlan_minidump_remove function.
Change-Id: I5a346f6cdf423ece02fb08d68e4422251af54876
CRs-Fixed: 2860435
Check if Rx single msdu length including padding and tlvs length
is greater than Rx buffer size allocated to H.W and raise error
to catch out of bound access.
Change-Id: I7c70b8a0b6828f7fd88a19141f9087430085c13a
CRs-Fixed: 2873933
In existing approach, monitor rings get initalized
on monitor vap init time,
For linux 5.4 kernel, physical contiguous memory(512Kb) is not
available on vap init time.
Initialize monitor related rings on monitor vap creation time
to get required memory.
Change-Id: I288c27cfcf77b3d224c2f21bbe8ac65670f32dda
CRs-Fixed: 2865141
There is possiblity of receiving fragmented packets just before
tid setup is done, so rate limit the tid not setup error log
to avoid excessive cosole logging.
Change-Id: I372d3904650fcbf2ad11313da1087da52a0d3dc6
CRs-Fixed: 2884897
1. Address missing spinlock protection while trying to append
"msdu_comp_q" to "defer_msdu_q".
2. "qdf_nbuf_queue_append" attempts to access "two" lists -
reads "msdu_comp_q" and modifies "defer_msdu_q", hence it is
essential to acquire locks meant for both the lists.
- Acquire "tid_lock" for "defer_msdu_q"
- Acquire "tasklet_tid_lock" for "msdu_comp_q"
Change-Id: Ib84ff4dc4ec3efa08181bba5068e422450026943
As a software WAR for hardware issue where we are
getting wrong cookie value for a buffer which is already
mapped to another rx_desc with different cookie id and
is already has in_use bit set, we will skip the
processing for the current rx_desc when in_use bit
is not set.
Change-Id: I9f469bf1f4b03e0fb9a6694d9445a0c690224ccb
Avoid per packet Rx refill buff pool lock, instead
acquire/release lock for burst of nbuf's replenishment.
Change-Id: I778cb9702d31d4b8911cca4e7f06f12c50ef6df9
CRs-Fixed: 2884208
During interrupt mask initialization bitmap of rxdma2host
destination ring mask is filled in host mode.
To avoid spurious interrupts reset this interrupt mask
when NSS offload is enabled.
Change-Id: I513a78639898c6f2bd9ea5418def03d64d7232d0
using if statement to filter out the frames that might not need to be
counted for stats purposes. this include frames that come in with a
missing tlv.
Change-Id: I828f27cda89934591c4daed9f80dc0794a82833d
Use tsft timer time stamp in HTT STATS IND header for
management TLV of CBF record since pktlog parser use
tsf time stamp in the ptklog record as packet receive
and transmit time.
Change-Id: I9643df11c0f9aa158f7b94e4b2083531044bcf66
In client roaming scenarios, when the ast entry is
updated, make sure the ast entry is updated with
new vdev id.
Change-Id: I0bd5235eeb28909cabe48f577d4477789d7be9e8
sequence number populated from tlv are incorrect for some frames.
Firmware populate correct sequence number for management and control
frame either in payload or tlv itself.
added field to get valid sequence number.
Change-Id: I21b1c34c0d66cb46c3a0baaaa231c952de065534