Commit Graph

860 Commits

Author SHA1 Message Date
Varsha Mishra
5cd2a434e1 qcacmn: Add QDF abstraction for dmac_inv_range
Add qdf wrapper for function dmac_inv_range. This
invalidates the specified virtual address range.

Change-Id: Ia3f92cb5136dbdbfea1e9cda8a52b474456a4e0a
CRs-Fixed: 2634679
2020-04-17 20:38:34 -07:00
Vivek
a7412197a6 qcacmn: Add QDF type to define a bitmap based on bits size
The bitmaps used in the driver are defined either as a single
or array of unsigned longs or some other types.

The bitmap variable size is different based on the platform(32/64 bit),
for unsigned long types.

Add support to have a platform agnostic consistent bitmap size
using the Linux provided interface for defining bitmaps.

CRs-Fixed: 2660881
Change-Id: I901778625ef9aaccc994d914c8adf98fbffeb980
2020-04-15 12:12:05 -07:00
Liangwei Dong
560f438d7b qcacmn: Add rate limit for HEX DUMP qdf api
Add rate limit for QDF_TRACE_HEX_DUMP API to avoid hex dump
message flood in kmsg and driver log.

Change-Id: I34fa16f3723169a07e66c0c806885c06abc2fa57
CRs-Fixed: 2660367
2020-04-13 21:14:55 -07:00
Padma Raghunathan
435059274f qcacmn: CFR: Cleanup QAL streamfs
QDF Streamfs is used by CFR, cleanup QAL streamfs.

Change-Id: I2631214b7595c5e9ef8c181da528e2c68dadaa7e
CRs-Fixed: 2643682
2020-04-11 04:11:07 -07:00
Shwetha G K
119f16a3b1 qcacmn: Fix build error when MEMORY_DEBUG disabled
Move is_initial_mem_debug_disabled under MEMORY_DEBUG flag as it
does not depend on NBUF_MEMORY_DEBUG to fix un-usued symbol error
when MEMORY_DEBUG is disable and NBUF_MEMORY_DEBUG is enable.

Change-Id: Idb54544321a0fd9dda7a6e98d91d22d01be50e41
2020-04-09 16:17:25 -07:00
Padma Raghunathan
be65ea9002 qcacmn: CFR: Abstract retrieval of netdevice name
Since netdevice name retrieval is tied to OS,
move it to qdf OS layer instead of doing it
inside CFR ucfg layer.

Change-Id: Ia9dcbdf56bcb36a1f0788be9964ea87fdf5beb3f
CRs-Fixed: 2643682
2020-04-09 07:31:34 -07:00
Padma Raghunathan
0c314d439d qcacmn: CFR: Enable compilation of QDF streamfs
Enable compilation of streamfs from QDF and

Change-Id: If457ff6e5020f8c0fb6e7985ada4162fd71755e9
CRs-Fixed: 2643682
2020-04-09 07:31:27 -07:00
Nisha Menon
046f3623de qcacmn: Back pressure in REO2SW1 ring resulting in REO panic
Update QCA_NAPI_DEF_SCALE_BIN_SHIFT for defconfig builds to
the same value as the perf build.
Move the WLAN ext irqs to gold cores for defconfig builds.
Disable cpu isolation before moving the IRQs to gold cores.
Add the ability to move IRQs to gold cores when the cpus
hotplug in.

Change-Id: I4cfecd02a1a2200dc99adee9a324b90c877c13fd
CRs-Fixed: 2638820
2020-04-09 05:21:20 -07:00
Naman Padhiar
87be18b922 qcacmn: Use to wakeup_source_register from 4.19.110 kernels
As part of new kernels it is suggested to move to the upstreamed
wakelock apis for registration and unregistration.

Change-Id: I80b8dd85c6ad1b50951fff9da810e8e96a402752
CRs-Fixed: 2658888
2020-04-08 08:19:22 -07:00
sumedh baikady
a8f35820f4 qcacmn: Change minidump API name
Change the following minidump API names:
1. fill_minidump_segments -> minidump_fill_segments
2. remove_minidump_segments -> minidump_remove_segments

Change-Id: I7340a09cc7d82f8470ecfc0b7b4532107a25aa54
2020-04-07 06:17:18 -07:00
Jingxiang Ge
e7d41574f3 qcacmn: Add dbgid for each runtime put/get
This is to enhance statics for runtime put/get, which is
to detect if there is mismatch for usage_count.

Change-Id: I24cddb9d10e4cb675c8375cbd0f589c7718bd680
CRs-Fixed: 2647972
2020-04-07 01:20:41 -07:00
Arun Kumar Khandavalli
48063f9d05 qcacmn: Move to Use wakeup_source_register from 4.19 kernels
As part of new kernels it is suggested to move to the upstreamed
wakelock apis for registration and unregistration.

Change-Id: Icc2bdeb6201fc65d351f75c5b49968fd23e2bba8
CRs-Fixed: 2639311
2020-04-02 22:16:57 -07:00
Yeshwanth Sriram Guntuka
2a4239d3e9 qcacmn: Move definition of qdf_proto_subtype to different file
Move definition of qdf_proto_subtype to different file.

Change-Id: Ie897ccafbe1a4e1fe0a43399673ecce686bfb7bc
CRs-Fixed: 2653765
2020-04-01 00:21:25 -07:00
Arun Kumar Khandavalli
551fd3f134 qcacmn: add the tags for the various hang event
As part of the hang event data population by various TLV format
is used, define tags for all the modules which can be used
while populating the data.

Change-Id: Ie9c53a8781a902ad687a78d1333053b6fae67021
CRs-Fixed: 2651729
2020-03-31 13:26:22 -07:00
Arun Kumar Khandavalli
2bfa222e36 qcacmn: Add the hang event infrastructure
As part of the new requirement to understand the reason for the
wifi hang the data need to be collected from the required modules
which will help in root-causing the reason for the hang.

Add the infrastructure so that the required modules can register for
this hang event notifier chain.

Change-Id: I32f1365eec1ad7d6e19be95e8faf9a980d054b76
CRs-Fixed: 2648304
2020-03-31 11:39:01 -07:00
Arun Kumar Khandavalli
cf6efc2a39 qcacmn: Add the notifier chain infrastructure
Notifier chains are simple function list executed when an event
occurs. In qdf block and atomic notifier chains are defined.
Blocking notifier chains can be used to invoke a list of functions
based on event in a process context wherein atomic notifier chain
can be used in an interrupt context.

Change-Id: I9020b9f19915e084b017932fb6d0bfad792d745c
CRs-Fixed: 2648224
2020-03-31 11:38:44 -07:00
Sourav Mohapatra
bdcd6ce25e qcacmn: Add appropriate hang reason codes for various scenarios
Presently, the reason codes for driver to trigger recovery on are
limited in their scope; most of the scenarios are not correctly
capture.

Add new reason codes to cover all the possible scenarios where the
driver has need to trigger recovery.

Change-Id: Ia257855bc30cd0bc7e81b9d0e21e4b84427d546b
CRs-Fixed: 2630951
2020-03-27 10:20:02 -07:00
Sourav Mohapatra
1f21eadadf qcacmn: Extend qdf_trigger_self_recovery to include psoc granularity
To undergo self recovery, the driver uses qdf_trigger_self_recovery to
initiate the sequence. Currently, this framework is valid for only a
single psoc driver.

Extend this framework to include support for multiple psoc driver by
providing the psoc on which the recovery has to be undertaken.

Change-Id: I782b505c03819223a914dabe7673b369aa175b7c
CRs-Fixed: 2617707
2020-03-27 10:19:41 -07:00
Ashish Kumar Dhanotiya
18d4b6fe84 qcacmn: Update the mc timer state after its deleted
Currently qdf mc timer stop api updates mc timer state
to QDF_TIMER_STATE_STOPPED before it deletes the timer which
may lead to race condition where if any other thread tries to
read the state of the timer and re-start the timer considering
it is stopped which may get deleted after that.

To address above issue, update the timer state after timer
delete.

Change-Id: I302b89bdedf23f8277eacb6d42b5bd8e6daa4d05
CRs-Fixed: 2643254
2020-03-27 06:29:16 -07:00
Yeshwanth Sriram Guntuka
4326a54376 qcacmn: Add qdf API to check for configured packet types
Add qdf API support to check if the packet should be
tracked as per the configured protocol types.

Change-Id: Ia9e937865d3d440f1350307a67e32b20ea218e54
CRs-Fixed: 2642156
2020-03-27 01:21:14 -07:00
Srinivas Dasari
04e3179b45 qcacmn: Add NAN and TDLS cases for qdf_opmode_str
Add cases for NAN and TDLS in qdf_opmode_str to return the mode
in string format.

Change-Id: Ibdc22a337005d56485e5ee3b392f4d5d0089304a
CRs-Fixed: 2648590
2020-03-25 19:11:14 -07:00
Qun Zhang
4bc614dd0c qcacmn: Replace QDF_MAX_NUM_CHAN with NUM_CHANNELS to aviod OOB access
Currently QDF_MAX_NUM_CHAN and NUM_CHANNELS aren't aligned, this unalignment
may cause many potential OOB access. So replace QDF_MAX_NUM_CHAN with
NUM_CHANNELS to keep unified.

Change-Id: I7bf7829d776f7caf5b2afbd2c9fd0c20d608e630
CRs-Fixed: 2644073
2020-03-25 07:09:34 -07:00
Lihua Liu
286b038d12 qcacmn: Add workaround for TXDMA HW limitation
Per HW team's analysis, we find a TXDMA HW limitation:
ADDR0&0x1FFFFFFF8 should not equal ADDR1&0x1FFFFFFF8.
Otherwise, TXDMA will run into exception, which cause TX fail.
ADDR0: the address of last words in previous buffer;
ADDR1: the address of first words in next buffer;

We hit this limitation in NAT forward TSO jumbo case whose buffer
address of two fragments like below:
tso_frags = (
(length = 0x42, vaddr = 0xFFFFFFD0F5FA2F82, paddr = 0x1F5FA2F82),
(length = 0x05A8, vaddr = 0xFFFFFFD0F5FA2FC4, paddr = 0x1F5FA2FC4)
In this case, ADDR0 = 0x1F5FA2F82 + 0x42 -2 = 0x1F5FA2FC2,
ADDR1 = 0x1F5FA2FC4, then
ADDR0&0x1FFFFFFF8 = ADDR1&0x1FFFFFFF8.
To avoid this, shift server bytes for ADDR0.

Change-Id: Ib09afd7e4c14a33bb5347c68b602b360a9e36619
CRs-Fixed: 2585868
2020-03-24 10:25:14 -07:00
Wu Gao
51bac7676d qcacmn: Add stream file system support
Stream file system is wrapper for Relayfs - a Linux specific feature,
which provides efficient method to indicate data to user space. It
depends on qdf debugfs APIs. This feature is protected with
compilation flags WLAN_STREAMFS and WLAN_DEBUGFS.

Change-Id: I1401112ece290e6d0560623cf10faaf498ebb1b7
CRs-Fixed: 2635481
2020-03-21 03:55:27 -07:00
Alan Chen
23af24db1f qcacmn: Add null check in qdf_runtime_lock_deinit()
qdf_runtime_lock_deinit() is currently using the lock blindly without
checking if it is null. Add a null check to prevent it from using a
null pointer.

Change-Id: I3aa13c436f3668de7b1070c2c40bc69c7a4cc9fc
CRs-Fixed: 2642914
2020-03-20 06:03:08 -07:00
Manjunathappa Prakash
c2fc9f7ba9 qcacmn: Remove unused dma-iommu.h inclusion
asm/dma-iommu.h file is removed in latest 5.4 kernel,
resulting in include failure. Remove as it is unused.

Change-Id: I9eac7bee5a9a8d5da21d15c2f7d8f3fc4fbe00df
CRs-Fixed: 2638583
2020-03-18 23:53:41 -07:00
Sravan Goud
e7eff14c56 qcacmn: Reduce excessive qdf update radiotap logs
For monitor mode update radiotap he flags logs are
flooding the driver logs as update of radio tap header
is done for each msdu. So rate limit the logs to reduce
excessive logging.

Change-Id: Ica75ccf98afc069b80fe6c75b3d9b04815c82ced
CRs-Fixed: 2644241
2020-03-18 23:53:12 -07:00
Yeshwanth Sriram Guntuka
06c7cbb878 qcacmn: Modify pkt string for logging to console
Modify the qdf_get_pkt_type_string API to return
the packet type in case the packet does not fall
under the tracked packet subtypes and also increase
the rate limit values for EAPOL and DHCP packets.

Change-Id: Ie9681be64572346a09529043ef38dd57338700bb
CRs-Fixed: 2636540
2020-03-09 03:12:01 -07:00
nobelj
7b76263659 qcacmn: QDF API for skb_clone_fraglist along with copy expand
Add API wrapper function for skb_clone_fraglist along
with skb_copy_expand.

Change-Id: Ib03e16566368d75a7a547fea6fd863e6411f98ef
2020-03-08 00:05:27 -08:00
Nirav Shah
9ae1975ec5 qcacmn: Fix "maybe-uninitialized" compilation error
Initialize to fix "maybe-uninitialized" compilation
error for specific compilers.

Change-Id: Ibb049891ef5847d1beda94470a6e75ebba145ef4
CRs-Fixed: 2634848
2020-03-05 01:40:12 -08:00
Liangwei Dong
bdd5fcef82 qcacmn: Clear lock->lock.dev to NULL after wake lock destroyed
In kernel 5.4, Wake lock API wakeup_source_register requires
"struct device *" parameter, and it can be NULL value. If it is
NULL, the wakeup_source_register will create a "device" node and return
it by wakeup_source struct.
In qcacld driver, the qdf_wake_lock_create will save the "wakeup_source"
to cld's private struct qdf_wake_lock->lock.
When the cld driver destroy os wake lock by wakeup_source_unregister,
"dev" will also be invalid in kernel, we need to clear the "dev"
field in local copy of wakeup_source in qdf_wake_lock->lock.
This will fix the potential reuse of qdf_wake_lock->lock.dev after it has
been destroyed.

Change-Id: I1de6e95c64b35929bef8be2cdeeb86422bc38515
CRs-Fixed: 2634032
2020-03-04 11:17:25 -08:00
Mohit Khanna
e05c287f31 qcacmn: Add high priority ordered workqueue APIs
Add APIs to support creation of a high priority, ordered, unbound
workqueue.

Change-Id: Ib7e39a7ca3fcc9ee1ed8886ca62c312a3e3e46a2
CRs-Fixed: 2602029
2020-03-02 17:46:21 -08:00
Ankit Kumar
7e0bf6da72 qcacmn: Corrects function scope typo in function definition
This patch corrects function scope typo in function definition.

Change-Id: I51abda732173a26751fcc68a125cdd04367d0e87
CRs-Fixed: 2620147
2020-03-01 02:07:04 -08:00
Vulupala Shashank Reddy
616976e2ce qcacmn: Add support to include ACK status and tx retry count
Extend radiotap header to append ACK status and tx retry count
for packets sent to virtual mon interface.

Change-Id: I51037ffd11dfdee49278d43643fb7861a514ee18
CRs-Fixed: 2627710
2020-02-26 22:39:17 -08:00
Manjunathappa Prakash
c4667b8b12 qcacmn: Save Rx TLV offset info so as to recover in FISA
Packets delivered to FISA via exception err path doesnot have TLVs.
FISA handling requires additional TLVs. dp rx core handling
skips TLVs, save TLV length info in nbuf->cb so that TLVs
are recovered back in FISA.

Change-Id: I53fab2e19abcbf82697ea6f53a4ddf3ea0dd0699
CRs-Fixed: 2620844
2020-02-20 06:39:48 -08:00
Nisha Menon
3e5b005e4e qcacmn: Break up DMA mem alloc for HW desc banks in multi pages
Break up the 2MB descriptor bank memory allocations for WBM
idle link ring. Use multiple page allocation and populate the
WBM idle link descriptor ring with physical addresses of each
DMA page allocated in the descriptor bank.
This is to ensure that no requests for contiguous memory
allocations are made that might result in allocation failures.

For MCL set the page size to 4KB and leave it to max_alloc_size
cfg ini param for WIN specific code.

Change-Id: Iec30321044827c0174366cc02df25a42d38309e0
CRs-Fixed: 2565817
2020-02-18 16:38:43 -08:00
Linux Build Service Account
67ef957780 Merge "qcacmn: Rename cmd ring to cmd_credit ring" 2020-02-15 11:08:15 -08:00
Chaoli Zhou
1047ea9c6b qcacmn: Support get is_over_gsi from IPA driver
For Genoa, it use IPA GSI, and whether gsi enabled
or not decided by ipa dts setting, which should get
from IPA driver, so add such information.

Change-Id: I6321afaf35c57d7d5865b896193ab1d44042ee4c
2020-02-13 23:39:00 -08:00
Sourav Mohapatra
e8a1cf3c70 qcacmn: Reduce unnecessary logs in various QDF modules
Various QDF logs being printed to the driver log are not necessary for
debugging purposes.

Cleanup the logs that are not required.

Change-Id: I9c5685b4d31a741703667943ac458921fa0d480e
CRs-Fixed: 2616210
2020-02-13 11:39:22 -08:00
Linux Build Service Account
8f7b57c903 Merge "qcacmn: Add dcs component" 2020-02-13 07:38:30 -08:00
hqu
fed4bfb049 qcacmn: Add dcs component
Add dcs component to implement interference detection algorithm
and dynamic channel selection frequency control.

Change-Id: Ia201d77e77feb9de3aff03d6e389d4891dde118e
CRs-Fixed: 2594837
2020-02-13 04:12:30 -08:00
Alan Chen
4631007d0c qcacmn: QDF wake lock API changes to support various kernel versions
Kernel 5.4+ is returning created wake lock pointer which needs to be
stored in driver wakelock structure, which needs to be used in
acquire, release, and destroy APIs. This change updates the QDF wake
lock structure accordingly to handle both older and new kernels.

Change-Id: Id0c5279613fa4c4c84205905fef7557c6b852017
CRs-Fixed: 2615065
2020-02-11 12:40:59 -08:00
Shwetha G K
ffaff47f6d qcacmn: Do not update nbuf_count when mem debug disabled runtime
Don not update nbuf_count when mem debug disabled runtime

Change-Id: Ib9c09210e5b91fd1db160444c0e3e2e315e12853
CRs-Fixed: 2618970
2020-02-11 11:05:30 -08:00
Adil Saeed Musthafa
ab1127c636 qcacmn: export __qdf_nbuf_data_is_icmp_pkt to outside QDF
Export __qdf_nbuf_data_is_icmp_pkt to outside QDF. This is needed for
implementing the per-peer protocol counters

Change-Id: I40db2b95347e95f2a5a7dbf6650fa873f564f1c3
CRs-Fixed: 2604877
2020-02-04 14:16:55 -08:00
Aniruddha Paul
fe67c34963 qcacmn: Add debug module ID for Monitor Filter
Add the new debug module ID for the monitor filter.

Change-Id: I35edbfe908c2133a3a0a37cb1e7a7b4eec82774f
2020-02-03 04:22:49 -08:00
Abhiram Jogadenu
9ca3392a13 qcacmn: Correct the boundaries for qdf_dbg_mask
QDF_TRACE_LEVEL_NONE(= 0) is a valid value for qdf_dbg_mask,
which is currently being treated as error. Correct the
condition with this change

Change-Id: Id8ddebc4774ccf721ce7ff14b035f287b3a4b5ee
CRs-Fixed: 2587010
2020-02-02 16:40:01 -08:00
Vulupala Shashank Reddy
3b6d1f238e qcacmn: Add packet capture component support param
Add module id, component id for packet capture feature.

Change-Id: I576cd288dbe325c1b2b19f095482ca317c3112a1
CRs-Fixed: 2611061
2020-02-01 03:16:30 -08:00
Govind Singh
59ddd7f893 qcacmn: Add component, module ID for FTM TIME SYNC module
Add module id, component id for FTM TIME SYNC feature.

Change-Id: I68f6b1d18a8f5c0a86cf0c46b6697cfb3caec187
CRs-Fixed: 2611043
2020-02-01 03:16:17 -08:00
Nandha Kishore Easwaran
b7c18849ae qcacmn: Replace 8074_VP with WIFI_EMULATION_3_0
Replace QCA_WIFI_QCA8074_VP with CONFIG_WIFI_EMULATION_WIFI_3_0
since VP platform is not being used anymore.
Most of the parameters present inside QCA_WIFI_QCA8074_VP are related
to emulation timeouts. Hence replacing it with a more meaningful flag.

Change-Id: I22a0e5803e765333947f1613b376dcc6bd25b5af
2020-01-31 02:34:19 -08:00
Yeshwanth Sriram Guntuka
70ea6afc3f qcacmn: Add qdf APIs to support data pkt diag logging
Add support to send protocol data packet info via diag log
command to userspace at tx entry point, on receiving tx
completion indication and in rx path, before delivering the
packet to network stack.

Change-Id: I6a95a16b7ebedf505ecb501107b1bbb89b16b67d
CRs-Fixed: 2595799
2020-01-27 07:54:57 -08:00