Commit Graph

765 Commits

Author SHA1 Message Date
Alan Chen
4f3f01b122 qcacmn: Replace skb_frag_struct pointer with skb_frag_t
skb_frag_t typedef was modified in kernel version 5.4. Change code to
use the typedef rather than the underlying type so that the same code
will be built on both 5.4 and pre-5.4 kernels.

Change-Id: Id491ab5edf0dec7cd09426d6c6b0a607ff66b66f
CRs-Fixed: 2559037
2019-11-25 16:15:31 -08:00
Alan Chen
4b73a35f26 qcacmn: Add conditional macros for tasklet_hrtimer struct
Kernel 5.2 onwards no longer uses the tasklet_hrtimer struct. Add
conditional preprocessor directives to only use hrtimer structs for all
functions that use the tasklet_hrtimer struct for Kernel 5.2 onwards.

Change-Id: Ib691022de5c751ee88da78c081740dc1df923926
CRs-Fixed: 2558916
2019-11-25 14:34:04 -08:00
Alan Chen
76036f10e7 qcacmn: Add conditional macro for arch_counter_get_cntvct()
Kernel 5.2 onwards calls __arch_counter_get_cntvct() instead of
arch_counter_get_cntvct(). Add conditional preprocessor directive to
use the appropriate function call for the correct kernel version.

Change-Id: I86041fdfd36f0c4522397f632910cdaa26780035
CRs-Fixed: 2558917
2019-11-24 22:35:21 -08:00
Alan Chen
1e9c5f488d qcacmn: Replace get_monotonic_boottime() with ktime_get_boottime()
get_monotonic_boottime() and similar functions have been replaced with
ktime_get_boottime() in newer driver versions. Change the calls to
get_monotonic_boottime() in the qdf wrapper to ktime_get_boottime().

Change-Id: I066ffbbcb3a51f8a080fd445397be028ee73ab2e
CRs-Fixed: 2558910
2019-11-24 22:35:16 -08:00
Shiva Krishna Pittala
5c0f59fd3c qcacmn: Route variable argument list logs through QDF
Currently, the variable argument list messages are going through vprintk.
As a result, these messages are appearing only on dmesg, but not on any
external logger. Use QDF logging functions instead to fix this.

CRs-Fixed: 2561051
Change-Id: I9cfc6aaa7b81de4945f7cfd5f7cd15540c3fc1f2
2019-11-14 00:55:16 -08:00
Tiger Yu
987de79182 qcacmn: Wake up system for early interrupt wakeup during suspending
During system suspending, the target might request wakeup early to the
host. The host will wakeup the system directly to abort current suspend
to avoid mismatching PM state between host & target.

Change-Id: Icf6e58ff24cbe072ef56aa22820432efb2ca1932
CRs-Fixed: 2559306
2019-11-13 06:53:29 -08:00
Ashish Kumar Dhanotiya
84ac2013af qcacmn: Add queue.h file
Currently MCL and WIN both have there separate queue.h
files with the same declarations and definitions.
As part of cleanup create single queue.h in common
code and update the usage of existing queue.h to this
newly added queue.h.

Change-Id: Ie381c3553d6361cf7f8c97f14a91ed24e332b51a
CRs-fixed: 2505617
2019-11-05 02:12:54 -08:00
Rakesh Pillai
534a143d8f qcacmn: Add support to flush rx packets for a vdev
When a particular vdev is deleted, the corresponding rx
packets which have been queued to the rx thread are not
flushed. Hence when such packets are submitted to the
network stack, the dev for this skb will be invalid,
since we have already freed the adapter.

Flush out the packets in the rx thread queues, before
deleting the vdev.

CRs-Fixed: 2543392
Change-Id: I2490d0f5ce965f62152613a17a59232521ca058f
2019-11-01 00:18:13 -07:00
Alan Chen
ddcff963a2 qcacmn: Replace panic by QDF_DEBUG_PANIC
Replace panic by QDF_DEBUG_PANIC because if PANIC_ON_BUG is compiled out,
we do not want to panic the system.

Change-Id: Idae89d6881ed5543273b047a0b77bc3ae55132b5
CRs-Fixed: 2545292
2019-10-28 18:03:08 -07:00
Venkata Sharath Chandra Manchala
8a4812f7fc qcacmn: Enable TSO Stats for Lithium based products
Add support to account for TSO jumbo packets on the
Tx path and print the statistics using dumpStats 3.

Change-Id: I6cc446df5c84e3ac436d922935fcd559e0704ec5
CRs-Fixed: 2356244
2019-10-28 07:11:53 -07:00
Alan Chen
0fdc03e41e qcacmn: Log timer callback info
If qdf timer is already running and a module calls it again, log the
timer callback info to see why that module is calling it again.

Change-Id: I47e9d33a2a144a0a779f71b50dbabea227c4b362
CRs-Fixed: 2546070
2019-10-22 20:17:32 -07:00
Sourav Mohapatra
20bc724ca1 qcacmn: Add qdf wrapper for hash_for_each_safe
Add qdf wrapper API for hash_for_each_safe which iterates over a
hashtable safe against removal of hash entry

Change-Id: I89d8b6520a4bee583d44a771b4359ed287d0c2fa
CRs-Fixed: 2528484
2019-10-15 00:49:24 -07:00
Sravan Kumar Kairam
aedfbffdfd qcacmn: Add qdf abstraction for ipa uc bw monitor
Add qdf abstraction for ipa uc bandwidth monitor for
wlan client.

Change-Id: I64718f118dd4982b060c72e2a2e7bd3e317bdb73
CRs-Fixed: 2526548
2019-10-14 05:47:45 -07:00
Sravan Kumar Kairam
3a37692ec1 qcacmn: Add qdf abstraction for ipa wdi stats api
Add qdf abstraction for ipa wlan wdi stats api.

Change-Id: If325950f7151199cf1f720ac0da05274bb307786
CRs-Fixed: 2517709
2019-10-14 05:47:41 -07:00
Saket Jha
d8d9d99f94 Revert "qcacmn: Enable EAPOL/DHCP message tracing in Wifi driver"
This reverts commit I010c9295fd6ca42a950f84f0d7a19b00d8b0c0da due to
crash caused by excessive logging.

Change-Id: I38701eb5be9a25f38e4cb5738824b635a2b0442c
CRs-Fixed: 2535471
2019-10-03 12:34:48 -07:00
Hangtian Zhu
24dab77dbe qcacmn: Add CONFIG_MULTI_IF_LOG to support multi if log
This is a propagation of qcacld-2.0 commit 98821c7dcf49d ("qcacld-2.0:
Add CONFIG_MULTI_IF_LOG to support multi if log"). Add CONFIG_MULTI_IF_LOG
to support multi if log by assigning the specific netlink protocol
when dual wlan cards are loaded.

Change-Id: I827fbd46893c47ed2d9b123bf753c06b2e115fbb
CRs-Fixed: 2525488
2019-09-20 01:06:29 -07:00
Rakshith Suresh Patkar
5e3c20acf4 qcacmn: Remove peer local id from qdf_nbuf_cb
Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.

This change removes peer_local id from qdf_nbuf_cb and is replaced
by vdev_id. Add accessor macro QDF_NBUF_CB_RX_VDEV_ID and wrapper
API qdf_nbuf_cb_update_vdev_id.

Change-Id: I56085eec60df1cfd78b613d8a244063a677358d4
CRs-Fixed: 2512703
2019-09-06 22:25:05 -07:00
Linux Build Service Account
fb263dc4bd Merge "qcacmn: Replace printk with qdf_nofl_info" 2019-08-30 05:36:51 -07:00
Paul Zhang
1275896960 qcacmn: support msdu rx retry statistics
Add the interface to support the rx retry statistics.

Change-Id: I02bbf2e69eefbd7ef61ab2540c1aacabb4ce3aef
CRs-Fixed: 2505486
2019-08-28 12:43:06 -07:00
Vivek
7a14b44b75 qcacmn: Replace printk with qdf_nofl_info
Replace printk with qdf_nofl_info in qdf folder.
So if we wish to change from printing on console
to other location, based on a logging daemon, we
can do that by only changing at the implementation
of QDF print API's

Change-Id: I27fa7dbd6081c2869d1f1782f34cdd0bb5a02fb4
CRs-Fixed: 2442689
2019-08-27 11:32:27 +05:30
Shashikala Prabhu
ec527358c2 qcacmn: Fix issues in qdf aligned memory alloc function
1. Alloc size should be passed as input and output parameter since we need
   to pass the exact alloc_size while freeing the memory.

2. use qdf_align() to calculate the aligned physical address.

3. In DBR component, pass correct arguments to qdf_aligned_malloc() to fix
   the compilation errors.
   Alloc size should be passed as input and output parameter since we need
   to pass the exact alloc_size while freeing the DMA memory.

Change-Id: I83051b8aa54bbf3bb663902d8f17f2c3c55e57bf
CRs-Fixed: 2462441
2019-08-26 00:26:56 -07:00
Mohit Khanna
c42d8036c9 qcacmn: Donot forward MDNS packets for NAN vdev
MDNS packets if forwarded for a NAN vdev can lead to potential flooding
of the air interface. Hence donot forward them.

Change-Id: Idfdedfb0b5b553745440587448230013f3b56a7d
CRs-Fixed: 2503360
2019-08-16 08:23:00 -07:00
Nandha Kishore Easwaran
5d3475b985 qcacmn: Initial changes for pine
Add device ID change and target type checks for pine.
Also remove memory war added for Hk emulation.

Change-Id: Idf531a48a03202d4fb241a92a1d671ee2b94cfbd
CRs-fixed: 2453899
2019-08-11 02:11:41 -07:00
Gyanranjan Hazarika
8e0ae99446 qcacmn: Add target_if changes for dynamic hw-mode config
This feature enables a user to change HW mode dynamically
from DBS to DBS_SBS mode and vice-versa. Currently, HW
mode configuration is only possible through INI setting
requiring a subsequent reboot.

Primary target_if changes are:

1. Add structure definition wlan_psoc_host_hal_reg_cap_ext
to parse and store the new extended regulatory capability
info in WMI_MAC_PHY_CAPABILITIES tlv sent in EXT service
ready WMI event
2. Add API target_psoc_get_num_radios_for_mode to retrieve
the number of radios corresponding to a hw-mode
3. Add API target_psoc_get_mac_phy_cap_for_mode to retrieve
the pointer to the mac_phy_cap info of the first radio
corresponding to the input hw-mode.

Change-Id: Ia10f0fd5e50c0ce0cbe99f9281147266aedce4e9
CRs-fixed: 2490212
2019-08-09 11:18:45 -07:00
bings
d976954cf0 qcacmn: Use dma_iommu_mapping only if ENABLE_SMMU_S1_TRANSLATION defined
In standard linux kernel, dma_iommu_mapping is not defined for arm64, while
in qualcomm linux kernel, dma_iommu_mapping is defined for arm and arm64.
To fix build error in standard linux kernel, use struct dma_iommu_mapping
only when ENABLE_SMMU_S1_TRANSLATION is defined.

Change-Id: Ib02073163f2a38c47f864c6592fe2470046868ce
CRs-Fixed: 2496729
2019-08-09 07:37:53 -07:00
Sumeet Rao
5664251726 qcacmn: Add utility functions to set/get flow tag from skb cb
Tags are programmed using wlanconfig commands. Rx IPv4/v6
TCP/UDP packets matching a 5-tuple are tagged using HawkeyeV2 hardware.
Tags are populated in the skb->cb in the REO/exception/monitor data
path and sent to upper stack

CRs-Fixed: 2475913
Change-Id: I534a633b99a8b1c4c9aab71fbf5857710d7977a1
2019-08-07 04:58:01 -07:00
bings
752a0b9c71 qcacmn: Use stack_trace only when CONFIG_STACKTRACE is defined
struct stack_trace is defined only when CONFIG_STACKTRACE is defined
Do not use stack_trace if CONFIG_STACKTRACE is not defined.

Change-Id: I5f619938729ef07d4e69b0b4df9b5be5eac22ad4
CRs-Fixed: 2496665
2019-08-06 22:29:11 -07:00
Shiva Krishna Pittala
98a8ffa8ad qcacmn: Delete the nbuf debug entries of frag_list in qdf_nbuf_free_debug
When a jumbo packet connected using fragmented list is freed,  kernel frees
the nbufs of the frag_list as well. In qdf_nbuf_free_debug, we currently
delete the nbuf debug entry of the head nbuf only,
resulting in false alarm of nbuf leaks of the frag_list.
Fix this by deleting the nbuf debug entries of all nbufs of frag_list.

Change-Id: I2d44c9c87ef8e65f9329ac62fad44089d2c76240
CRs-Fixed: 2498317
2019-08-05 09:31:53 -07:00
Shiva Krishna Pittala
45752d0667 qcacmn: Account for fragmented list in qdf_nbuf_count_inc
When a jumbo packet connected using fragmented list is given to the
WLAN driver, currently we increment WLAN skb count by only 1, instead,
increment the skb count for all fragments in the fragmented list.

Change-Id: I291118fab2316505ca32900d7cce2b1510de203a
CRs-Fixed: 2498314
2019-08-05 07:50:09 -07:00
Shiva Krishna Pittala
1a87414f89 qcacmn: Account for fragmented list in qdf_nbuf_count_dec
When a jumbo packet connected using fragmented list is freed or given to
the network stack, currently we decrement WLAN skb count by only 1,
instead, decrement the skb count for all fragments in the fragmented list.

Change-Id: I36a9aa9f3f5537718d476c368b3b110786494d5b
CRs-Fixed: 2498313
2019-08-05 06:12:57 -07:00
Alan Chen
8fbc8c2941 qcacmn: Add QDF timer multiplier for all timers on host
Some QDF timers on host do not use the QDF timer multiplier. Add QDF timer
multiplier so that all timers on host have it.

Change-Id: I57acb28240ea815aaed685b5a193e492332cad69
CRs-Fixed: 2498149
2019-08-01 05:13:48 -07:00
Vivek
63891b3eb2 qcacmn: Move qdf_trace API declarations to qdf_trace header file
The qdf_trace_msg and qdf_vtrace_msg related API's declaration
are in qdf_types.h but the definition is in qdf_trace.c

Move the declaration to i_qdf_trace.h

Change-Id: I098540347446078bc6d43fd2377d197b2575da1a
CRs-Fixed: 2497779
2019-07-29 22:21:01 -07:00
Karunakar Dasineni
af64fd1868 qcacmn: QDF wrapper to remove minidump entries
As part of minidump support, add QDF wrapper to remove
previously added entries.

Change-Id: Iae5ed874d6dbd2f6701f174b54d839fb0a13989c
2019-07-24 17:10:02 -07:00
Himanshu Batra
bcb10e6676 qcacmn: Add ascii dump support to qdf hex dump API
The existing hex dump API dumps hex data only.
Add API so that the ascii data can also be
dumped along with hex dump

Change-Id: Icbe74b26f47601a249e3d7ac701f2a19d70fb83b
CRs-Fixed: 2464738
2019-07-17 02:15:41 -07:00
Saket Jha
316c0fdb45 qcacmn: Define QDF API for cpumask abstraction
Defines QDF APIs for abstraction of cpumask_clear, cpumask_set_cpu,
and cpumask_setall.

Change-Id: I1678c600c7043b1d4a19e0479ceab9af0ce83d01
CRs-Fixed: 2478893
2019-07-16 17:15:19 -07:00
Uraj Sasan
37b2c4d198 qcacmn: Support live dump feature
Target firmware Assert are at times related to Host Driver
interaction with the firmware. To debug these issues, host
driver dump is mandatory. The feature provides memory dump
of data structures registed with this framework. The dumps
are saved which can later be loaded using gdb and analysed.

Add apis support for the feature.

Change-Id: I41c5126a49a698969f24b17187f78f4b4db7a51e
CRs-Fixed: 2478139
2019-07-16 15:54:03 -07:00
Ankit Kumar
0ead45c2d7 qcacmn: Call log handler in case of HTT command/event
htt_command_record, htt_event_record, htt_wbm_event_record
function is used to log command,event, wbm event to
in-memory data-structure.
We call these function from htt path.

Change-Id: Ib3e18b895485c84f0010f8c3ba95c2da85b00bde
CRs-Fixed: 2428742
2019-07-09 18:51:21 -07:00
Linux Build Service Account
88d1460485 Merge "qcacmn: Remove redundant definition of WEXT macros" 2019-07-01 06:04:51 -07:00
Mohit Khanna
c8bcf201ef qcacmn: Add QDF API to set thread cpu mask
Add QDF API to set cpu mask - qdf_thread_set_cpus_allowed_ptr.
Linux version of this API is implemented using set_cpus_allowed_ptr
linux API.

Change-Id: I3122e2b30c6d3f02e9c874c19db610e5f09ec064
CRs-Fixed: 2474323
2019-06-28 18:07:58 -07:00
Shiva Krishna Pittala
1529d99839 qcacmn: Add debug version of qdf_mem_multi_pages_alloc/free
Under memory debug, qdf_mem_multi_pages_alloc function is getting
reported as the culprit of memory leaks when there is no associated
qdf_mem_multi_pages_free call. qdf_mem_multi_pages_alloc is
just an allocator function which uses qdf_mem_malloc internally to
serve the requested allocation and is not the actual source of the leak.
As there are multiple users of qdf_mem_multi_pages_alloc in the code base,
add memory debug versions of qdf_mem_multi_pages_alloc/free to track the
actual users of the allocations.

Change-Id: I8b2159de842a3c5d7f9cdb244ca148cf6df37d0d
CRs-Fixed: 2474749
2019-06-27 17:16:07 -07:00
Sravan Kumar Kairam
87796c495a qcacmn: Clean up CONFIG_MCL from qdf_lock.c
Clean up CONFIG_MCL from qdf_lock.c file by replacing with
feature flag FEATURE_RUNTIME_PM for which included header
files are used.

Change-Id: I9afff730b1b96a75888ca48b33c0020667d651fc
CRs-Fixed: 2477462
2019-06-27 05:00:16 -07:00
Vivek
900c617e38 qcacmn: Remove CONFIG_WIN from QDF sources
The qdf nbuf cb has members defined as union
which would be used separately either for WIN or MCL.
There are separate header files defined for having
different accessor functions for WIN or MCL.

The inclusion of the header file is differentiated
based on CONFIG_WIN which should be removed.

Use a different macro instead of CONFIG_WIN.

Change-Id: I6709fde22a0458ec184b9a0cba832b848fd2a8fa
CRs-Fixed: 2472886
2019-06-27 03:24:17 -07:00
Ashish Kumar Dhanotiya
b452a6844c qcacmn: Move NBUFF related declarations under correct feature flag
Currently NBUFF related parameters are declared under CONFIG_MCL
feature flag and are getting used under
FEATURE_NBUFF_REPLENISH_TIMER feature flag.

As part of CONFIG_MCL cleanup, move NBUFF related parameters
under correct feature flag FEATURE_NBUFF_REPLENISH_TIMER.

Change-Id: I438f7dbc0c67343c94ad78ea4df4cfb1fd2f051b
CRs-Fixed: 2472011
2019-06-21 04:27:20 -07:00
Viyom Mittal
94ca3b851e qcacmn: Remove redundant definition of WEXT macros
Remove redundant definition of following WEXT macros
in i_qdf_types.h file:

1) SIOCGIWAP
2) IWEVCUSTOM
3) IWEVREGISTERED
4) IWEVEXPIRED
5) SIOCGIWSCAN

Change-Id: I316a1472b542beed61cf9be8641c875fe1e2ba34
CRs-Fixed: 2473780
2019-06-21 02:24:06 -07:00
Ashish Kumar Dhanotiya
4600ab56ad qcacmn: Remove multiple definitions of __qdf_nbuf_free api
There are multiple definitions of __qdf_nbuf_free api based
on CONFIG_MCL feature flag.
As a part of cleanup activity remove multiple definitions
of __qdf_nbuf_free api.

Change-Id: Ib7fce54353561a45a4662c05d56d3af187a269e1
CRs-Fixed: 2472016
2019-06-19 00:42:45 -07:00
Rakshith Suresh Patkar
49f2d779be qcacmn: Add support for iommu domain in place of mapping
Add support for iommu domain instead of mapping in
struct __qdf_device to support use of API
pld_smmu_get_domain in place of pld_smmu_get_mapping,
which is to be deprecated.

Change-Id: I89e9eea8ec7095a79493c0adca15c8034c21f79a
CRs-Fixed: 2464861
2019-06-08 06:29:36 -07:00
Santosh Anbu
73606f0528 qcacmn: Fix compilation warning for undefined macro
Add change to fix the compilation warning for CONFIG_MCL macro

Change-Id: Id4039a898484a275fc94aa313abd8432a245621a
CRs-Fixed: 2464058
2019-06-04 20:22:50 -07:00
Sravan Kumar Kairam
ea9a12b9ce qcacmn: Cleanup CONFIG_MCL from qdf runtime apis
In the current implementation, qdf runtime apis invocation
is controlled by macro CONFIG_MCL. So replace the CONFIG_MCL
with the feature flag FEATURE_RUNTIME_PM.

Change-Id: If120c87aa9ed1a0b3e4629c6ee1df4922744656b
CRs-Fixed: 2463188
2019-06-03 12:27:55 -07:00
gaurank kathpalia
9f525cbddc qcacmn: Add blacklist manager related files
Add interface API to send reject ap list to FW,
also add the blacklist manager UMAC, and QDF component
for the same.

Change-Id: I826e537683441762043003d71dc2b79ceebebbcb
CRs-Fixed: 2460770
2019-06-02 01:51:48 -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