Commit gráf

684 Commit-ok

Szerző SHA1 Üzenet Dátum
Sravan Kumar Kairam
44f3efb9e7 qcacmn: Cleanup CONFIG_MCL from qdf nbuff replenish apis
In the current implementation, qdf nbuff replenish timer apis
invocation is controlled by macro CONFIG_MCL. So replace the
CONFIG_MCL with new flag FEATURE_NBUFF_REPLENISH_TIMER.

Change-Id: I8231483b791edf25c08ec4a794b5cc7b638daec7
CRs-Fixed: 2421538
2019-04-05 18:45:50 -07:00
Dustin Brown
778ebe552a qcacmn: Add periodic work tracking
Add debug tracking to qdf_periodic_work for create and destroy calls.

Change-Id: Id595ba05493ba196e497533ffb4f4e86e33df4b8
CRs-Fixed: 2423644
2019-04-03 15:45:08 -07:00
sumedh baikady
c2fa7c99c0 qcacmn: Deliver STP pkts from wbm exception path
Vlan tagged STP pkts are received in host from
wbm exception path with wifi parse error code.
This is delivered to stack. Stats added for wifi
parse error and vlan tagged stp pkt count.

Change-Id: I25af5ab403ee7a46b4abe2f60328314d61587b80
CRs-fixed: 2375575
2019-04-02 15:51:44 -07:00
Dustin Brown
2698eab0b5 qcacmn: Add delayed work tracking
Add debug tracking to qdf_delayed_work for create and destroy calls.

Change-Id: Ie02c3577acd443e3f252b9b3a47207e5e2d5fe81
CRs-Fixed: 2423645
2019-04-02 15:16:22 -07:00
Dustin Brown
9c62f7d939 qcacmn: Add qdf_tracker
A common problem in any C code base is the proper management of various
resources, such as memory allocations, timers, works, locks, etc. To
that end, WLAN has added various one-off leak tracking features for
different resources over the years, to great benefit. However, this
approach is tedious, and prone to copy/paste and fix propagation issues,
making maintaining these various tracking features onerous.

Add a generic leak tracking data structure to WLAN for general use,
which implements these tracking logics. This will allow the various
resource tracking features to leverage this shared implementation for
ease of maintenance. Build on the hash table implementation added as
part of I7f5fc0c59ed220bde43044e7013b3c8573f1bf39.

Change-Id: I3247ace583108139dfb699ca077db3bdf5cfeace
CRs-Fixed: 2422958
2019-04-02 15:16:18 -07:00
Manjunathappa Prakash
64c6c451d3 qcacmn: Add QDF_STATUS enum for GRO_DROP
Adding QDF_STATUS_E_GRO_DROP enum for GRO drops.

Change-Id: I123c47d162f45ab029e7f5b6dbe76d1fa368ea1f
CRs-Fixed: 2426178
2019-04-02 15:16:14 -07:00
Ashish Kumar Dhanotiya
affc485658 qcacmn: Move print_to_console api under correct feature flag
Currently print_to_console api is defined based on CONFIG_MCL
feature flag and MCL is not using it, move this api under
WIN specific feature flag QDF_TRACE_PRINT_ENABLE.

Change-Id: I2af2e21eb1cde395568cc1879a2df8c65e56a275
CRs-fixed: 2425040
2019-04-02 15:16:08 -07:00
Keyur Parekh
44d8f8f9b1 qcacmn: Populate LTF size for Rx stats
Populate LTF size value from TLV for HE and modify
HE_LTF enum value to match with Firmware values

Change-Id: I8e5cce31cbae4aa8722050b06d89c933b74aa752
2019-04-02 11:17:38 -07:00
Dustin Brown
fdea3c7af7 qcacmn: Remove qdf_delayed_work_t
qdf_delayed_work_t has been superseded by qdf_delayed_work (via
I76bc59dcd4222643d70c6a763e5bc4ee9f0a487c). Remove the now obsolete
qdf_delayed_work_t.

Change-Id: I4e50521b469dcf9e1782e9412729f197552ee408
CRs-Fixed: 2420191
2019-03-28 13:13:36 -07:00
Sravan Kumar Kairam
dda9f66849 qcacmn: Resolve ipa compilation issue
Resolve compilation for targets with config ipa unified
api enable and have kernel version 4.9.

Change-Id: Ice0bba024c11c4d5222a58941ac50fd90b139aaa
CRs-Fixed: 2422170
2019-03-28 09:04:48 -07:00
Dustin Brown
80150e9715 qcacmn: Remove qdf_ssr_protect/unprotect
Remove the unused qdf_ssr_protect/unprotect and related APIs.

Change-Id: I55ce40646584c32816ad38caec4c5cdee896b7fa
CRs-Fixed: 2418459
2019-03-28 04:37:26 -07:00
Rajeev Kumar
1fe4511e2e qcacmn: Replace adrastea compile time config by MSM platfrom
To have proper MSM timer tick to usec conversion replace adrastea
config by msm platfrom.

Change-Id: I3c5ed4b907a6844c507b7f38bce2537bd933f89b
CRs-Fixed: 2421674
2019-03-26 20:56:22 -07:00
Rajeev Kumar
7c2431dc95 qcacmn: Remove adrastea compile time flag from logging API
Time stamp logging API needs to use msm timer tick on all
MSM platforms hence remove the adrastea compile time flag
from qdf time stamp get api.

Change-Id: I9628646091a818acbca83ce75186308bdfd9453e
CRs-Fixed: 2419279
2019-03-26 20:56:19 -07:00
Srinivas Girigowda
22953dc004 qcacmn: Enable EAPOL/DHCP message tracing in Wifi driver
Enable EAPOL/DHCP message tracing in Wifi driver.

Change-Id: I010c9295fd6ca42a950f84f0d7a19b00d8b0c0da
CRs-Fixed: 2421835
2019-03-26 17:16:45 -07:00
Jeff Johnson
2831229bd7 qcacmn: qdf: Replace explicit comparison to NULL
Per the Linux Kernel coding style, as enforced by the kernel
checkpatch script, pointers should not be explicitly compared to
NULL. Therefore within qdf replace any such comparisons with logical
operations performed on the pointer itself.

Change-Id: Ie7662617dad8138b803dc54e7759d3b6d76c53ce
CRs-Fixed: 2418255
2019-03-26 15:38:28 -07:00
Dustin Brown
6577bea1d6 qcacmn: Add qdf_ptr_hash
While the Linux kernel provides a generic hash table data structure, it
makes the assumption that it will always be referred to statically, so
as to avoid having to store the size of the hash table's internal array.
This limitation means reusing this data type generically is difficult or
impossible.

Add a very simple hash table implementation to WLAN for general use,
which stores its own size information, and assumes all input keys will
be pointers. Build on top of the recently added single-linked list
implementation added in I2959f34649a0d8e0b312d9d67c81de17753b9b6c to
reduce memory overhead.

Change-Id: I7f5fc0c59ed220bde43044e7013b3c8573f1bf39
CRs-Fixed: 2421829
2019-03-26 02:51:12 -07:00
Dustin Brown
b52a362e62 qcacmn: Add qdf_slist
For memory savings it is sometimes desirable to use a single-linked list
instead of a double-linked list. However, the Linux kernel does not
provide a default implementation of a single-linked list.

Add a very simple single-linked list implementation to WLAN for general
use.

Change-Id: I2959f34649a0d8e0b312d9d67c81de17753b9b6c
CRs-Fixed: 2418493
2019-03-26 02:51:09 -07:00
Dustin Brown
d48a842b4b qcacmn: Add qdf_delayed_work
Add a new deferred work type, qdf_delayed_work, which executes a
callback after a delay. This type is meant to supersede
qdf_delayed_work_t, with a more consistent API and without typedefs.

Change-Id: I76bc59dcd4222643d70c6a763e5bc4ee9f0a487c
CRs-Fixed: 2419155
2019-03-21 16:15:22 -07:00
Dustin Brown
5e919958d2 qcacmn: Add qdf_periodic_work
Add a new deferred work type, qdf_periodic_work, which executes a
callback periodically until stopped.

Change-Id: Iedf5486474fccadb35e146e6d289c27a7c1002d3
CRs-Fixed: 2410005
2019-03-21 13:02:30 -07:00
Dustin Brown
02d3f5423e qcacmn: Refactor qdf platform op start/stop
The original implementation intended to back the qdf_psoc_op_start/stop
callbacks has evolved somewhat since the qdf_psoc_op interface was
added. Refactor this interface to better reflect the evolved
implementation.

Change-Id: Ia18949fc75bdc52313bc81976f79d3a76e9760ec
CRs-Fixed: 2418426
2019-03-21 05:12:06 -07:00
Santosh Anbu
5b58d0b368 qcacmn: Enable notifier chain registration API
The qca wifi driver requires to register
with the Linux notifier chain
for handling panic events.

Enable build for QAL API's
for registration with Linux panic notifier chain

Change-Id: Ibe5376613b66cb90bcb1e84dfeb28365ab19cfb7
CRs-Fixed: 2413782
2019-03-20 22:10:32 -07:00
Debasis Das
017bc12dc3 qcacmn: Enhancement of OS abstraction API's
The API's added in qal & qdf for abstracting the
OS calls are inlined and moved to the OS-specific
src directories.

Change-Id: I9c9c2cbba7702c97fbe343ceb63b330c2296084d
2019-03-20 22:10:24 -07:00
Dustin Brown
b5b21cac42 qcacmn: Remove qdf_*_outline() APIs
Several qdf_*_outline() APIs exist which are straight aliases to their
regular qdf_*() counterparts. Remove them, and update any callers to use
the regular APIs instead.

Change-Id: Ibe6e9cced521b93061e89690ab817ceafe49a469
CRs-Fixed: 2408267
2019-03-12 13:58:27 -07:00
Varsha Mishra
a331e6e55f qcacmn: Implement delay VOW stats for hawkeye
Delay counters per TID have been implemented for following types:
1. Linux stack to hw enqueue delay
2. HW enqueue delay to tx completion delay
3. TX interframe delay
4. RX interframe delay
5. RX frame delay from ring reap to networking stack

Change-Id: I836596cbd878a43955c18b4981cb5b7b43d4df5e
2019-03-12 06:10:05 -07:00
Rajeev Kumar Sirasanagandla
d540e70a22 qcacmn: Cleanup CONFIG_MCL from qdf wake lock api
In the current implementation, from qdf wake lock api, diag log api
invocation is controlled by macro CONFIG_MCL.

Aim is to clean CONFIG_MCL in qdf_lock.c

Change-Id: I16a1a46a2ebc255ed092a1fdd05f127c7e542a5e
CRs-Fixed: 2411636
2019-03-11 19:23:07 -07:00
Dustin Brown
c9681754d0 qcacmn: Use panic in qdf_mem_copy/move/set/zero/cmp()
It has been observed at that several issues have crept into mainline due
to qdf_mem_copy() gracefully returning when the source or destination
pointers are NULL. In order to prevent such regressions in the future,
change calls to qdf_mem_copy/move/set/zero/cmp() with NULL pointer
parameters so they panic in debug builds.

Change-Id: I6df4c42245ed1d0d8a85477f59552f8243488924
CRs-Fixed: 2408266
2019-03-05 14:23:46 -08:00
Abhiram Jogadenu
c528145962 qcacmn: Add support for peer tx event param extraction
Add host's copy of peer cfr tx completion event param and prototype for
extract API.

CRs-Fixed: 2406064
Change-Id: I433171fc90d3c5dbb92dd525e8b5b2c441cc1bf9
2019-03-04 15:48:08 -08:00
gaurank kathpalia
d24b1f30fd qcacmn: Remove unused mcc to scc switch enums
Currently the driver accepts the values of 1,2
for MCC to SCC switch , which does not take effect
as they are not used in the sap switch channel,
thus the same are of no use.

Fix is to cleanup these as they are of no use, and
do not give the desired output too.

Change-Id: I70080dbafa58451ae051bbd3ec457d1f55e7e693
CRs-Fixed: 2404565
2019-03-03 05:03:52 -08:00
Vivek
9808bfb249 qcacmn: Add generic no fl variant of qdf print API's
There are generic qdf prints API's which is used
by any non componentized code with QDF_MODULE_ID_ANY

Since there are no non fl variants of these prints
so added the no fl variants which can be of generic use.

Change-Id: I0822d399b54468a94d4ba3fc9e26ea1c8c366b39
CRs-Fixed: 2406153
2019-03-01 11:14:51 -08:00
Dustin Brown
8ddef7dd9a qcacmn: Remove qdf_flex_mem_release()
Due to a limitation in the memory leak detection logic when qdf_flex_mem
was written, qdf_flex_mem_release() was necessary to free any
dynamically allocated memory in the qdf_flex_mem_pool during certain
points in the WLAN driver lifecycle. This was done to avoid flagging any
dynamically allocated qdf_flex_mem_segments as false positive leaks
when the memory domains were changed and leak checking was performed.
With the introduction of qdf_talloc(), this workaround is no longer
required. Replace the calls to qdf_mem_malloc/free with qdf_talloc/free,
and remove qdf_flex_mem_release() altogether.

Change-Id: Ia5fd21386b94fc117af5f27853db5d8341601738
CRs-Fixed: 2404955
2019-03-01 11:14:48 -08:00
Dustin Brown
8d41f62018 qcacmn: Use qdf_timer shim for all kernel versions
qdf_timer_t has repeatedly been identified as a problem area by Control-
Flow Integrity (CFI) analysis. This is because qdf_timer_init casts the
callback from a signature taking a "void *" into one which takes an
"unsigned long." While this "works," it is technically undefined
behavior, and CFI is correct in flagging it. Unfortunately, CFI
indicates the issue is with the callbacks themselves, which is incorrect.

Using unsigned long as the callback parameter has a number serious
drawbacks. Most significant is the fact that pointer size is not
guaranteed to be the same size as an unsigned long on platforms other
than Linux. For example, this is not the case on 64 bit Windows. As QDF
is supposed to be a platform abstraction, it cannot use unsigned longs
for memory addresses.

Instead of casting the timer callback in qdf_timer_init, use a callback
shim which takes an unsigned long, and handles the appropriate
conversions needed to call the actual callback function.

Change-Id: Id9149169f35f619f649934310a2a673a685690f0
CRs-Fixed: 2403021
2019-02-27 08:12:09 -08:00
Amir Patel
78824b1d4e qcacmn: Add changes for RDK statistics
Change API signature for dp_getrateindex to populate rate index
and add additional stats required for RDK.
Add QDF abstraction for EWMA average rssi

CRs-Fixed: 2397918
Change-Id: Id878971799c5df2ae60057a86b2769724ee0dcc5
2019-02-27 03:13:56 -08:00
Dustin Brown
d33659b98d qcacmn: Provide reason to QDF_DEBUG_PANIC()
A common pattern in WLAN to panic the driver is to log the reason and
then unconditionally panic. QDF_DEBUG_PANIC() takes a reason string to
help make the reason for the panic more obvious, but it is not always
used. Ensure all callers of QDF_DEBUG_PANIC() provide a reason string.

Additionally, make the reason string parameter of QDF_DEBUG_PANIC()
mandatory.

Change-Id: Ia3c7acfe590f7f465823fff3f2393653b2d20fe5
CRs-Fixed: 2403830
2019-02-26 14:21:37 -08:00
Min Liu
ae79cfd733 qcacmn: Cleanup CONFIG_MCL for qdf_mem.c
Remove CONFIG_MCL and include the header file for both MCL and
WIN code since this feature is already handled by the feature macro
FEATURE_WLAN_DIAG_SUPPORT.

Change-Id: I4d4ed46ed5cb62950bb8b25af0a173bfe5f86474
CRs-Fixed: 2399386
2019-02-25 20:13:36 -08:00
hangtian
f08f9461ff qcacmn: Add warning message on qdf_mem_set() document
Add warning message on qdf_mem_set() document.

Change-Id: I82afa828f6bce295533c63b42515e526f1b01110
CRs-Fixed: 2380158
2019-02-23 14:06:59 -08:00
Srinivas Pitla
8d19efa7c2 qcacmn: Optimize VDEV MLME SM prints
Reduced VDEV SM debug level, and added prints for state abd substates at
event handling API

Change-Id: I3076c590131581a8728548592e0a9b4e66db377e
CRs-Fixed: 2394012
2019-02-23 11:06:11 -08:00
Dustin Brown
e6c7bff8d9 qcacmn: Revert "Fix kernel 4.15 timer list dependencies"
This reverts change Id9c29413ca0d21533a0afae245595051fa3a400f. This
change was a work around to allow compiling against legacy code. Now
that these compilation issues have been resolved, remove the work
around.

Change-Id: I38a474f50076320cf961d6fd340960e4c9b148a0
CRs-Fixed: 2401315
2019-02-23 05:19:10 -08:00
hangtian
67ebc3de24 qcacmn: Use qdf_mem_zero for zero initialization, qdf part
Use qdf_mem_zero for zero initialization, qdf part.

Change-Id: I9c8980c2d2355e315f13541db65c4b11b12c5124
CRs-Fixed: 2378005
2019-02-21 01:46:59 -08:00
Abhiram Jogadenu
7b2ba92b37 qcacmn: Add support for CFR init deinit
Add support for CFR init deinit and QDF_MODULE_ID

CRs-Fixed: 2372061
Change-Id: I8468c678e03b315ec15ff94aa603e9f2bcda408e
2019-02-20 06:21:15 -08:00
Vivek
ea6a02fef9 qcacmn: Change log level for qdf_mem_malloc failure
The non debug version of qdf_mem_malloc logs
allocation failures at WARN trace level
and the debug version uses ERROR trace level.

Also the default log level for QDF component is set to ERROR,
so with this, for failures in the non debug version
of qdf_mem_malloc, we would not see any logs.

Changing the log level to ERROR for failures logs in
the non debug version of qdf_mem_malloc.

Change-Id: I1e28cddfac8f909dec6e3bf6c3beb368953cd357
CRs-Fixed: 2397096
2019-02-14 04:25:51 -08:00
Dustin Brown
1475aad768 qcacmn: Move qdf_status_to/from_os_return()
QDF_STATUS is defined in qdf_status, but related APIs
qdf_status_to_os_return() and qdf_status_from_os_return() are defined
in qdf_util. Create a new file, qdf_status.c, and move these functions
there instead.

Change-Id: Iaa2efa5f662be014a61a8490c3fab411ec0f2054
CRs-Fixed: 2395178
2019-02-12 13:09:59 -08:00
Madhvapathi Sriram
2750c27818 qcacmn: Remove error log for qdf_mem_malloc in qdf files
qdf layer already has the error trace

Change-Id: I451e8a008585d80c9d3ccb619461362a74d0a52b
CRs-Fixed: 2374111
2019-02-11 02:30:06 -08:00
Shiva Krishna Pittala
e587b2d1a3 qcacmn: Remove TSO check in nbuf reference tracking
Currently, QDF tracks nbuf reference of only TSO packets.
Remove the TSO check to extend the supprt to all the packets.
This will help in tracking enhanced multicast packets.

Change-Id: Iacf7d4fc0492470d405d9644d480ad9463bcb543
CRs-Fixed: 2384334
2019-02-08 04:03:41 -08:00
Dustin Brown
8f1ded29ed qcacmn: Apply timer multiplier to qdf_timer
The qdf_timer_multiplier is currently applied to qdf_mc_timer and
qdf_event. In addition to these cases, also apply qdf_timer_multiplier
to qdf_timer to enable more debugging scenarios.

Change-Id: Ie3bd340dd2e8f1bec7e5bfa7ec3f0d0ceaa32e6d
CRs-Fixed: 2393017
2019-02-05 13:37:58 -08:00
Surya Prakash
27fba324b4 qcacmn: Enhance debug message for wmi
Print endpoint ID, soc ID, target type and transmission
queue depth when queued wmi commands reaches max wmi queue size.

Change-Id: Ia781f3a2c964651d5fdb8cb54ab975021cd11566
CRs-Fixed: 2360714
2019-02-05 04:02:13 -08:00
Ashish Kumar Dhanotiya
3be335ca19 qcacmn: Avoid compilation issue with kernel 4.19
There is a compilation issue if a variable is passed to
kernel api DECLARE_HASHTABLE.
TO resolve this issue, instead of passing a variable
pass a constant to DECLARE_HASHTABLE.

Change-Id: Ie9782af541bb34cc50f79060b0007dc73881e5f4
CRs-Fixed: 2386893
2019-02-02 15:27:57 -08:00
Ashish Kumar Dhanotiya
ad85c38928 qcacmn: Update driver timer APIs according to kernel 4.19
There are some changes to timer APIs in latest kernel,
update driver APIs accordingly to invoke correct kernel
APIs for timer functionalities.

Change-Id: Ie017c8b1ef8237ca34f696c23509519a1187167c
CRs-fixed: 2383574
2019-02-02 15:27:54 -08:00
Sourav Mohapatra
6066636527 qcacmn: Fix kernel 4.15 timer list dependencies
With the changes made in Ibe0f8adc4df7bb98aceb509d438e241fac507393 and
Ic4cef0d6301230197443d4d5247188f2af643674 there are compilation issues
with converged code.

Resolve the issues by creating ifdefs for the timer_list definitions
according to kernel version.

Change-Id: Id9c29413ca0d21533a0afae245595051fa3a400f
CRs-Fixed: 2390884
2019-02-01 20:12:03 -08:00
Dustin Brown
8acb74ae9a qcacmn: Add >=4.15 kernel support to qdf_timer
The various setup_*_timer() APIs were removed from the linux kernel in
4.15, and replaced with similar timer_setup_*() APIs. Add conditional
compilation to qdf_timer to use the correct APIs depending on the
version of the kernel being compiled against.

Change-Id: Ibe0f8adc4df7bb98aceb509d438e241fac507393
CRs-Fixed: 2388570
2019-02-01 20:12:00 -08:00
Dustin Brown
bf8e81ef4c qcacmn: Do not directly alias 'struct timer_list'
There are a number of places where the kernel's timer_list type has been
used in conjunction with qdf_timer APIs. To prevent reintroduction of
similar issues in the future, do not directly alias qdf_timer_t to
timer_list.

See also: I410b7fafad18be01141008b6220fbe34ab07601e

Change-Id: Ic4cef0d6301230197443d4d5247188f2af643674
CRs-Fixed: 2388595
2019-02-01 20:11:57 -08:00