Commit Graph

6940 次程式碼提交

作者 SHA1 備註 提交日期
Aditya Sathish
8482a0c0fc qcacmn: Add support to update vdev stats through CDP
Add CDP support to update vdev stats from the higher
layers.

The CDP API takes a buffer which is then used to
update parts the cdp_vdev_stats structure depending
on the stats ID that is sent through the API.

This change adds support for vdev tx ingress stats
only. Extended support can be added as required
by adding a new stats ID.

Change-Id: I13d6fb946c8a3dbb0b499b7b026d83b080411d15
CRs-Fixed: 2384177
2019-06-01 05:09:23 -07:00
Jeff Johnson
796998f706 qcacmn: Remove obsolete g_qdf_trace_info infrastructure
The original version of the QDF trace functionality, introduced in
Change-Id I1d0cdfd8730a5c021aaa50b7dc8549d491d760b3, included a log
filtering mechanism inherited from the MCC code.  This mechanism used
an internal table g_qdf_trace_info along with the following APIs which
were used to configure and query the table:
- qdf_trace_set_level
- qdf_trace_set_module_trace_level
- qdf_trace_set_value
- qdf_trace_get_level

Subsequently, as part of the MCC/WIN QDF convergence project,
Change-Id I871c09189202d021405777db732e8821e7aaca7c ("qcacmn: Update
QDF Debug Framework") updated the QDF trace functionality, and as a
result the usage of the g_qdf_trace_info table was replaced.

Since the legacy infrastructure is no longer used, remove it.

Change-Id: I1bb0c0e03c1d1e3227550477779d5db1549ff570
CRs-Fixed: 2461904
2019-05-31 21:56:14 -07:00
Jinwei Chen
40de1db036 qcacmn: Fix RX defrag lock destroy without create issue
current Soc RX defrag lock create/destroy flow as below:
1. dp_soc_attach_wifi3
2. dp_pdev_attach_wifi3-->dp_soc_cmn_setup-->RX defrag lock create
3. dp_pdev_detach_wifi3 (no RX defrag lock detroy)
4. dp_soc_detach_wifi3 --->RX defrag lock destroy
here if step2 is skipped for some failure case, step4 will still
try to destroy RX defrag lock, panic happened.

add dp_soc_cmn_cleanup() function in step3, move RX defrag lock
destroy from step4 to step3 dp_pdev_detach_wifi3-->
dp_soc_cmn_cleanup, also move others like reo cmd lock, tx flow
control related lock.

Change-Id: Ic77ddf21e9cefc6d6b747aaad227c732fa2ae2c4
CRs-Fixed: 2447701
2019-05-31 14:50:45 -07:00
Om Prakash Tripathi
03db80d4e7 qcacmn: Fix deadlock in wlan_pdev_chan_match due to cross locking
wlan_pdev_chan_match used to take current vdev lock on current
iterating vdev and then on vdev for which channel set is triggered.
If two cores happed to try setting channel on two different vdevs,
cross locking may occur. Fix this by releasing one lock and then
acquiring other lock.

Change-Id: Ic1a6ca448c6d535e949102bc5a8a45971c8babd2
CRs-Fixed: 2460054
2019-05-31 07:40:25 -07:00
Rakesh Pillai
6c1cdf307a qcacmn: Fix memory leak in dp pdev attach failure case
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
2019-05-31 07:40:22 -07:00
Varsha Mishra
1f4cfb6c58 qcacmn: Fix tx completion and rx stats per wbm/reo ring
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
2019-05-31 07:40:18 -07:00
jiad
3c91fb553a qcacmn: Set default REO destination ring to SW4
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
2019-05-31 02:29:59 -07:00
Karunakar Dasineni
acc8b565b3 qcacmn: Protocol tag support in lite rx monitor
Add protocol tagging support in lite rx monitor mode.

Change-Id: I1966fc4f54e1f4a1486162a88853f68f7644a766
CRs-Fixed: 2448517
2019-05-30 19:29:52 -07:00
Yue Ma
ac6b275768 qcacmn: Record caller and timestamp for pm_runtime_mark_last_busy
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
2019-05-30 19:29:48 -07:00
Yue Ma
2bdc2baea6 qcacmn: Request runtime PM resume after receiving WAKE MSI
For PCIe DRV (L1SS sleep) suspend, firmware will trigger a WAKE MSI
to wake up host so that request runtime PM resume for this case.

Change-Id: I959d3b1053b7aef5fe80889553958cf9394c8c38
CRs-fixed: 2450284
2019-05-30 19:29:45 -07:00
Vignesh U
94395f626b qcacmn: Add regulatory rx_ops for setting DFS channels availability
Add regulatory rx_ops for setting DFS channels availability to be
called from Offload layer.

Change-Id: I15cec0f119baf5668052618dc3a2552470d1f14f
CRs-Fixed: 2384202
2019-05-30 19:29:42 -07:00
Edayilliam Jayadev
95477ba01c qcacmn: remove CONFIG_WIN from Spectral
remove CONFIG_WIN from Spectral module.

CRs-Fixed: 2460180
Change-Id: I510e616e65518627f5088a34cf595387df8223a0
2019-05-30 00:30:07 -07:00
Varsha Mishra
27c5bd3193 qcacmn: Handle tx_sniffer pakcets
Send tx_sniffer to firmware and handle ppdu completions accordingly.

Change-Id: Id19a8cba4fdcad88bca6ade8c30a587c2da26d19
2019-05-29 16:47:01 -07:00
Shiva Krishna Pittala
92e3f61248 qcacmn: Use ksize to update kmalloc counters under memory debug
qdf_mem_malloc/free wrappers are using ksize to update the kmalloc counters
of the driver whereas the debug versions of this wrappers are using
requested size itself. To figure out the actual dynamic memory held by
the driver on the debug profile, use ksize for debug versions as well.

Change-Id: I4311f9a450e3fa3e04ac45b1bf7f36a7ff677057
CRs-Fixed: 2449995
2019-05-29 16:46:58 -07:00
Aditya Sathish
8e8f71952b qcacmn: Add NULL check while iterating sgl entries
__qdf_dma_get_sgtable_dma_addr() iterates through sgl entries
without appropriately checking for NULL pointers before attempting
to access them.

Fix the above-mentioned issue by adding a NULL check before access.

Change-Id: I7456db834f71b9b5cf3cb254526177b9fdcee664
CRs-Fixed: 2448239
2019-05-29 11:08:28 -07:00
Rakesh Pillai
51264a63e1 qcacmn: Disable excessive logging during dp init
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
2019-05-29 11:08:25 -07:00
Amir Patel
cb99026ade qcacmn: Move WDS feature out of common code
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
2019-05-29 11:08:21 -07:00
Ashish Kumar Dhanotiya
f38970bcdc qcacmn: Update feature flag for qdf_shared_print_ctrl_cleanup
Currently qdf_shared_print_ctrl_cleanup api is defined based on
CONFIG_MCL feature flag, as MCL is not using this api, move
this api under correct WIN specific feature flag
QDF_TRACE_PRINT_ENABLE.

Change-Id: I80117f351e45ad2106524c333f219bba77d49115
CRs-fixed: 2448447
2019-05-29 11:08:18 -07:00
Abhishek Singh
6aa5f2907b qcacmn: Check for in_use flag before using the txrx desc pool
While accessing txrx desc pool, in_use flags is not used and thus
caller may end up using a txrx desc which is not in use. Also
all the params of txrx desc are not reinitialized once in_use flag
is set to false. This can lead invalid pointers used by caller.

So check for in_use flag before using the txrx desc pool, to avoid
use after in_use is set to false and reinitialized all params to
invalid values.

Also In wlan_mgmt_txrx_mgmt_frame_tx driver forcefully get the peer
ref count. It should use wlan_objmgr_peer_try_get_ref api to get
the peer ref, so that after logical delete the frames are not sent
for the peer.

Change-Id: Ie59e622c095750de8eabc49985b114ec6197be00
CRs-Fixed: 2459212
2019-05-29 11:08:15 -07:00
Chaithanya Garrepalli
ab234e56f6 qcacmn: Add Cached Descriptor support for DP SRNGs
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
2019-05-29 11:08:12 -07:00
Venkateswara Swamy Bandaru
e8aab3b8ca qcacmn: Add configuration option for acs parameters
Add configuration option for enabling/disabling acs channel
grade algo along with configurations channel efficieny
variance and weightages for near mid and far range OBSS
used in algo.

Change-Id: I21fffc6f96d78634bc6ced6ac76a61d87a7d4bb9
CRs-Fixed: 2453992
2019-05-29 11:08:08 -07:00
Venkateswara Swamy Bandaru
9646895cad qcacmn: Fix KW issue related to meta header size
Increase the meta header size as per new ext2 descriptor.

Change-Id: I2cb1cc8399b15b9b784c5a5169d15223dfc5f0e4
CRs-Fixed: 2457693
2019-05-29 11:08:04 -07:00
Santosh Anbu
c2b2c77261 qcacmn: Remove unused peer mgmt stats
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
2019-05-29 11:07:59 -07:00
Surya Prakash Raajen
a2c264acf7 qcacmn: Clean up of CONFIG_MCL flag
Clean up of  CONFIG_MCL flag in wmi_unified_parmm.h

Change-Id: I4d647b6fb97e8a6f8ac56506f4eaa6625587ba7e
CRs-Fixed: 2450713
2019-05-29 11:07:56 -07:00
Surya Prakash Raajen
9d48cd993c qcacmn: Clean up of CONFIG_MCL flag
Clean up of  CONFIG_MCL flag and introduce
WMI_INTERFACE_EVENT_LOGGING_DYNAMIC_ALLOC, new speicific-feature
flag for dynamically allocated buffers for debug logging.

Change-Id: Iec4c26faa28400d257332f72dcdf77e18d0fda31
CRs-Fixed: 2450565
2019-05-29 11:07:52 -07:00
Tallapragada Kalyan
f7b0f745c4 qcacmn: Make HTT PPDU TLV processing backward compatible
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
2019-05-29 10:59:01 -07:00
Nirav Shah
05e77685a6 qcacmn: Add API to check vdev is in INIT state or not
Add API to check vdev mlme state is in INIT state
or not.

Change-Id: I86a919331d674f1defd896d5b8ae93a87a0a9376
CRs-Fixed: 2459908
2019-05-28 03:46:52 -07:00
Tiger Yu
6f1fc0070f qcacmn: Add support for TCP delayed ack in driver
qcacld-2.0 to qcacmn propagation

This change adds support for driver supported TCP
delayed ack to increase TCP RX performance in
third-party platform which don't support kernel
TCP delayed ack feature.

TCP delayed ack is dependent on count and timer
values. Whatever is achieved first will trigger
sending TCP ack.

This feature can be controlled through ini values.
gDriverDelAckTimerValue - timer value in ms
gDriverDelAckPktCount - delayed ack count
gDriverDelAckEnable - enable/disable feature

Change-Id: I8105bbb90965295b5a4aefeb00d344a90155974d
CRs-fixed: 2414231
2019-05-28 03:46:49 -07:00
sheenam monga
dd4dc88b83 qcacmn: CONFIG_MCL cleanup for msg queue depth and reduction limit
Remove CONFIG_MCL for Serialization msg queue depth and reduction limit to
make code generic. In case SCHEDULER_CORE_MAX_MESSAGES not defined, then
define SCHEDULER_CORE_MAX_MESSAGES to 4000 for WIN . If
WLAN_SCHED_REDUCTION_LIMIT not defined for MCL then define
WLAN_SCHED_REDUCTION_LIMIT to 32 for WIN .

Change-Id: If64f117f6f0af56f6a9e1041e583b022c6c419fb
CRs-Fixed: 2457723
2019-05-27 06:07:20 -07:00
Subrat Mishra
13d57c69d2 qcacmn: Configure TWT pdev count dynamically
Configure TWT pdev count based on number of active radios.

Change-Id: I8b297c2f2398774a57932bd1fafc83aba2f891d2
CRs-Fixed: 2449799
2019-05-27 04:23:36 -07:00
Varun Reddy Yeturu
23fbb8796b qcacmn: Free pdev configuration parameters during pdev detach
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
2019-05-27 04:23:32 -07:00
Paul Zhang
5ea0a91a89 qcacmn: Implement api for interop issues ap
Implement the interface to transfer the info between
host driver and firmware about the ap which has interop
issues with the DUT. It is detected by firmware and
forwarded to user sapce for persistent storage. User
space configs these APs to firmware when the DUT
starts up next time.

CRs-Fixed: 2425197
Change-Id: I3857d2a605baa2673af333a7a0412f1690b59769
2019-05-24 16:01:00 -07:00
nwzhao
d7196d8dd4 qcacmn: fix rx path dma-inv-range, unmap-single issues
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
2019-05-24 12:17:55 -07:00
Abhishek Singh
3b2666f1a5 qcacmn: Cleanup VDEV SM related flags and unused code
Legacy code for VDEV_SM is no more used, thus clean up flags
CMN_VDEV_MLME_SM_ENABLE and CMN_VDEV_MLME_CMPT_ENABLE.

Change-Id: I4f7b1099d4929f6250b1868c53b73d7c235a9c22
CRs-Fixed: 2457270
2019-05-24 06:42:20 -07:00
Uraj Sasan
485478ae4e qcacmn: Disable bottom half in wmi show routine
We have a case in which user context was reading
wmi debugfs entries and then an interrupt context
waits on same lock resulting in deadlock and cpu stall.

Disable bh to prevent cpu stall.

Change-Id: I8e2b443317950b4cf2c8c228a98f638dd165ca2b
2019-05-23 22:57:48 -07:00
lifeng
09e10eb5e2 qcacmn: Remove one possible reachable assertion
Remove one possible reachable assertion in case tainted FW
easily trigger the assert and perform a denial of service.

Change-Id: I913d619ab6268c0a843d93ed35c63c79b96ac488
CRs-Fixed: 2428205
2019-05-23 22:57:45 -07:00
Jiani Liu
7067cd4d3e qcacmn: Add PTP timestamp socket options support(cdp part)
Add tsf64 enable/disable related functions and definitions.

Change-Id: Ieea0d8f905eb57629d279f8da0e811857b760b1f
CRs-Fixed: 2454513
2019-05-23 22:57:42 -07:00
Jiani Liu
25d847280f qcacmn: Add PTP timestamp socket options support(wmi part)
Add tsf64 enable/disable related functions and definitions.

Change-Id: I81da3b9d0596055810409ff5d7ae2d3c2aef8a5d
CRs-Fixed: 2454513
2019-05-23 22:57:38 -07:00
Varun Reddy Yeturu
a7c21dc7f3 qcacmn: Allocate multi page memory for dp_rx_desc_pool_alloc
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
2019-05-23 20:35:07 -07:00
Jeffin Mammen
1514e796b6 qcacmn: Update Peer rx/tx rate based on DATA packets
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
2019-05-23 09:31:11 -07:00
sheenam monga
d74e1fdc5f qcacmn: Fix bss peer use after free in stats
wlan_vdev_get_bsspeer() return bss peer without taking the ref count
of the peer and thus if peer is deleted after wlan_vdev_get_bsspeer()
returns a valid peer, the caller will have stale entry of the peer.
Stale entry of peer can lead to Assert.

Use wlan_objmgr_vdev_try_get_bsspeer API for stats to get the BSS
peer which increment the refcount if peer is valid. With this the
peer won't be deleted till the caller release the ref count of the
peer.

Change-Id: I3690f1309cbc7643ed55d8e903814b06f9d8755f
CRs-Fixed: 2454080
2019-05-23 09:31:06 -07:00
Sravan Kumar Kairam
5b8283fe08 qcacmn: Flush rx cache frames at peer delete
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
2019-05-23 09:31:03 -07:00
Sravan Kumar Kairam
0bd6c23c89 qcacmn: Fix decrement flush in progress
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
2019-05-23 09:30:55 -07:00
Rajeev Kumar
e386d8bcbc qcacmn: Add QDF API for DRV feature support
Add QDF API to check if DRV is connected or not such that
proper decision can be taken during wow enable request.

Change-Id: Ic128882d564b5717b6dc749c6fe229a6dbb86c8f
CRs-Fixed: 2457065
2019-05-23 01:52:01 -07:00
Varsha Mishra
09a4c0e6bd qcacmn: Fill skb->priority only for macro ATH_RX_PRI_SAVE
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
2019-05-22 12:13:38 -07:00
Chaithanya Garrepalli
d3d99db55b qcacmn: changes to read all MSDUs of MPDU in single reap
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
2019-05-22 09:06:22 -07:00
Tallapragada Kalyan
9e4b36fd89 qcacmn: Rx optimizations to improve small pkt perf
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
2019-05-22 00:18:17 -07:00
Jinwei Chen
5bcc30f51c qcacmn: fix peer ref counter unexpected increasement
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
2019-05-22 00:18:14 -07:00
Yue Ma
ac7c8d1c44 qcacmn: Tag power related WMI commands for runtime PM
Power related WMI commands need to be tagged for runtime PM so that
they will not invoke runtime PM "get" and can be sent to firmware
without causing a resume right after suspend (WOW_ENABLE WMI command).

Change-Id: If9476ade9adff898847916fcf6bbd05e9c58f5a8
CRs-fixed: 2451973
2019-05-21 21:57:10 -07:00
Edayilliam Jayadev
64e320b697 qcacmn: Bound check while setting Spectral params
Do bounds check for some Spectral params and throw an
error in case of any out of bound inputs.

CRs-Fixed: 2449740 2449704
Change-Id: Ibc3159267076fa355ab3e50f2d8b0b1524ae444c
2019-05-21 16:45:23 -07:00