Currently the failure in dp_rx_pdev_mon_attach, during
dp_pdev_attach_wifi3, does not cleanup the rx buffers
and hence that memory is leaked.
Follow the proper cleanup sequence to avoid leaking
the rx buffer memory.
CRs-Fixed: 2451982
Change-Id: Idef308e11c46fe3e7ae9199a6fcf05ca83210b6b
Tx completion stats should be counted per wbm ring on tx completion
and not globally. Similarly, rx stats should be counter per reo ring.
Change-Id: I1e4af0d38b23e60de78ca03316861db08ff0811a
For MDM platforms, set default REO destination
ring to SW4 for STA vdev, which is same as SAP vdev.
Note that RX hashing is still enabled for STA vdev.
Also REO destination are run-time remapped when IPA
automony is enabled and disabled.
Change-Id: I49fa523673e7b736008679adec55821e198e8417
CRs-Fixed: 2456786
pm_runtime_mark_last_busy will extend the timer for runtime suspend.
Recording caller and timestamp can help to debug who may prevent
runtime PM suspend.
Change-Id: I4848a2558197e0fc9b7300421a5a1993817333e4
CRs-fixed: 2457803
Excessive logging during dp init causes watchdog
bite when multiple init-deinit cycle is followed.
Change the loglevel to debug, so that it does not
flood the console with logs.
CRs-Fixed: 2444944
Change-Id: I43daab413800424651e3f5edf558360886d7d7fe
Move WDS feature specific APIs out of common code
as these features are WIN specific. Keep the usage inside
common code under feature specific flags.
Change-Id: Id907a5e22c27fc47e8314449e154525684a27e85
Add support to configure any HAL SRNG descriptor to
be allocated from cached memory area. This is to
optimize of CPU cycles spent on uncached
memory accesses. Also added prefetch of cached
descriptors
Change-Id: I2544e8596d48e2f5549bf687a764c16d73397545
CRs-fixed: 2267945
Peer delete request and response stats has been moved to per vap
stats. The time info on assoc, disassoc and deauth was already
cleaned up, but members in the dp_peer struct weren't removed.
Change-Id: Ie4a1b171178d8ad03abd76069cc0777802814993
CRs-Fixed: 2451766
For HTT PPDU Stats TLVs, if target has provided less data than expected,
pad the data with zeros until it matches the expected length and
process the TLV, instead of asserting.
This enables testing of different FW and Host versions during regression
analysis.
CRs-Fixed: 2451611
Change-Id: I79aaad8a6fde6d49510c3a212b21425ac784ad5c
Free the memory allocated for the pdev configuration parameters
during pdev detach so that there are no memory leaks
Change-Id: I856cc6e6082197e98ad105053f1e4cffc2d25c53
CRs-Fixed: 2444000
In case of duplicated rx descriptors from hardware,
it will hit issues in __dma_inv_range(), __qdf_nbuf_unmap_single.
Detect the duplicates, skip processing them, drop the mpdu.
CRs-Fixed: 2413816
Change-Id: I7efd4b0c1bda5578578927bb22fe9d487758897d
Allocate memory in multiple smaller chunks for dp_rx_desc_pool_alloc,
and link the pages instead of allocating one big contiguous memory to
avoid memory allocation failures.
Change-Id: Id81de10727555c4ca78963a6f01ed3b992ce9924
CRs-Fixed: 2443999
Packets sent/received at fixed rate were also considered to
update the client rates as displayed in wlanconfig command output.
An idle client transmits NULL packets at basic rate and hence
rx rate shows up the basic rate when an idle client is connected.
Consider only data packets to update rates. Do not consider
NULL packets for rate update.
CRs-Fixed: 2435447
Change-Id: Icbf9f2a656bb0d36e16d953952c529185c119f17
Currently cached rx buffer frames are forwarded to stack
at the time of successful association completion. If the
association with the AP is unsuccessful frames are not
flushed and this leads to memory leak. To fix this clear
the cached buffers at the time of peer deletion.
Change-Id: Icec36376f9588dba8114f855ac9719b5735512e8
CRs-Fixed: 2452030
When rx buffer queue list is empty flush in progress
atomic variable is not decremented before return. Fix
this by removing the code to check list empty as the
qdf function to remove the node from front will also
do the same check for empty list, so the code fall
through and return at the end of the function.
Change-Id: I29b87eb7f9e5d35918aba6ad1d0ccbbdbf6eee3b
CRs-Fixed: 2444437
skb->priority is needed only for ATH_RX_PRI_SAVE. This access can
be avoided in regular datapath by using skb->cb for faster access.
Change-Id: I5ef970fa45fa314db7e14284d898c98a59d8591e
We need to read all MSDUs of MPDU in single reap for RAW mode
to prepare the complete SG list
Change-Id: Iaf2d0b9f32bf10181ce7646bf60c4d7e70aed36b
CRs-fixed: 2320143
basically tried reading peer_id from peer structure
to avoid 1 cache-line miss per pkt and access mac address
from frame data for WDS only if WDS condition is valid.
The other optimization is to avoid accessing queue_mapping
field of skb for skb received which is at 140 offset
This again helps to avoid i cache miss.
Another place is to do a memcpy only when we intend to
add an ast entry.
Change-Id: I7e328060c505bc21419d045e77329c2cda9e3644
CRs-fixed: 2388857
Host will drop the RX data that introduced in change
"add counters for sa_idx invalid issue", the related peer
has done ref_cnt + 1, but there is no peer ref_cnt -1 accordingly.
peer ref_cnt increase unexpected, panic happened when rmmod at last.
add the peer ref_cnt decrease operation.
Change-Id: Ie6bc5b57560a93c5f21431838b7bcb1140abfec5
CRs-Fixed: 2454468
earlier we were extracting the tid from the rx tlvs, this
was in the last cache line of the 384 byte tlv. we are
extracting various fields from REO descriptor, now we are
also getting tid from the descriptor to avoid accessing
the last cache line of rx TLV there by avoiding one
cache miss per packet.
Change-Id: I1f4f12dca402604692ea374599add6763d68ab01
CRs-fixed: 2449706
As part of Change-Id: I0dc410ae2e7c9df58ef53e3f20ca7979d086659e
for file dp_tx.c copyright years changed wrongly. So retain the
original copyright years.
Change-Id: Ib3e918744183bc59250590bc33dc7de75b1c38fb
CRs-Fixed: 2451733
1. Move statistics API's to dp_stats.c
2. Move DP_TRACE_STATS to DP_PRINT_STATS
as it is implemented based on target.
Change-Id: I62f3076a51ca35f0e12cdb0ff0230ea87c2baaf7
CRs-Fixed: 2453443
In some corner case, host has done Vdev destroy and TX desc flush
since there is pending outstanding TX data on this vdev, but later
FW/HW still indicate the TX completion to host and which likely
these TX completion get delayed, conflict happened due to same TX
Desc accessing.
To fix it:
(1) Only reset TX desc Vdev to NULL in dp_tx_vdev_detach().
(2) Do more enhancement in dp_tx_comp_handler() to avoid
invalid Vdev accessing.
(3) Do TX desc flush in dp_tx_pdev_detach().
Change-Id: I44cce9451e4f07fed6e21a9cd3fc0eaefa3d54c2
CRs-Fixed: 2441455
In Rx path, We really don't need to flush data and invalidate.
Hence replacing map/unmap flag to QDF_DMA_FROM_DEVICE.
Change-Id: I3de0c73e11a08a875114167a55fe9fe4432f1dd4
CRs-fixed: 2449712
Identify the WIN/MCC specific features. Move the features under feature
specific flags. Get rid of WIN/MCC specific code.
Change-Id: Iaf4e5befd7d574a20bea5c078201adbeac3b762c
Place if check inside qdf_likely and qdf_unlikely check
to optimize code through compiler.
Change-Id: I46796247fd09860aa0f62170eb7f7e5ef8e8f896
CRs-fixed: 2455579
1. Set BSS peer for AP during peer-create and for STA in peer-map handler
2. Set Self peer in STA mode
3. Avoid tid cleanup in STA mode
4. Remove redundant selfmac checks in Rx
5. In MEC event handler add a check to ignore MEC events
when STA is not connected.
Change-Id: I2a34b4742d9dedaa0709c1f4c87f3a06b794f36b
To avoid higher order allocations, allocate extra
bytes for base address alignment only if unaligned
address is returned.
Change-Id: I185e58150952cd7e1ae0039e4382973465de5f68
If there's a HW duplicate rx descriptor from hardware,
it'll cause a NULL pointer issue in
__dma_inv_range in dp_rxdma_err_process.
In this case, skip procssing it as a workaround.
CRs-Fixed: 2398327
Change-Id: I5639e5fc9a3a06e6762448ec7cb2ea58d9ae8160
Move WIN specific structures out of common datapath, WDI_ENUM
into common datapath and remove WIN specific header files inclusion
Change-Id: I8a0d9db4970f3ea9d966337caf178ebce55c28c5
The following changes are made
-Yield dp_rx_process if poll time exceeds
-Yield dp_tx_comp_handler if poll time exceeds
-Interrupt statistics to track various interrupt contexts and
corresponding interrupt masks
-Add poll times histogram buckets to NAPI stats
Change-Id: I8c7a6bbbb97c7b3dd1dde6ac3a97113c433086a2
CRs-Fixed: 2423879
We are accessing nbuf_len field for every nbuf
and which causes cache hit as we are accessing
it not from 1st cache line. This field is present
in struct cb. Lets access it from here to avoid
cache miss.
Change-Id: I21a81d844a4cc755a0ca0c156bd3f4d5702fd913
CRs-fixed: 2449717
Deadlock happens when control path takes scn_lock and calls
dp_peer_unref_delete() which in tern tries to acquire peer_ref_mutex.
At the same time, if other core starts handling peer_unmap by acquiring
peer_ref_mutex and calls dp_reset_and_release_peer_mem() which in turn
calls ol_ath_node_free() and tries to acquire scn_lock leading to a
deadlock.
Fix this by unlocking peer_ref_mutex before calling
dp_reset_and_release_peer_mem().
Change-Id: I343a8ef8f0914f9245a06b2818c9cbbe1db5218f
CRs-Fixed: 2449878
At present, DP_STATS_XXX and DP_HIST_XXX can be disabled
or enabled at the same time using macro DISABLE_DP_STATS.
Make DP_STATS_XXX and DP_HIST_XXX under different macro
so that both can be enabled/disabled separately.
HIST_STATS are by default disabled and can be enabled by
enabling ENABLE_DP_HIST_STATS macro.
Change-Id: I4e7b817afef040407a496e268f2fd680791fc47b
CRs-fixed: 2449710
certain fields are now retrieved from reo_destination
ring to nbuf cb. This avoids accessing the RX_TLVs
which are spread across two cache lines. This is
helping improve small pkt (64 byte) performance.
Change-Id: Iee95813356c3dd90ab2e8a2756913def89710fb1
CRs-Fixed: 2426703
Track PPDU Id history from monitor status and destination
rings, and display as part of monitor stats.
Change-Id: I7b8985f93b1cdb6eb5210bba5a65e9bfb617a710
Set tid invalid before enqueuing frame to transmit classifier.
When not set to invalid, tid is not classified by HW.
Change-Id: I4fb96a010fed1e0178d7d70a83503e1dcf5f755a
1. Reduce trace level of stats from fatal to info_high
2. Move stats APIs to dp_stats.c
Change-Id: I0b27a254075610fbbafcc8b09b72403ccb83473a
CRs-Fixed: 2446189
Count broadcast stats on rx side after rx_tlv_hdr is extracted.
After removing rx_tlv_hdr, nbuf->data points to actual payload.
Change-Id: I20e4029fd84bc3d76e2fd47eba74b9bef72a32c0
1) Add one counter to track the invaild TX release source
2) Capture he descriptor that caused the issue
3) Print the invalid release source
CRs-Fixed: 2380964
Change-Id: I0dc410ae2e7c9df58ef53e3f20ca7979d086659e
Currently, if BA session for a tid is active, we tear down
current session and do not send an addba response. Clients are expected
to send new addba req. But this is not happening, therefore
we accept new addba req after flushing tid queue and then setup
queue with latest addba request values.
Also change is made to not update ssn to 0 so that old sequence
can be continued to use.
Change-Id: I129ce74d7414c3255d5a4360f39fec9ed3d7650f
CRs-fixed: 2428837