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
__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
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
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
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
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
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
In qdf_mc_timer_stop_sync acquires the platform_info spinlock
and call's the del_tymer_sync. del_timer_sync waits for callbacks
to execute all CPU's. But callback scheduler_mc_timer_callback
tries to acquire the platform_info lock to execute. This can
lead to deadlock.
Change-Id: Ib21ee5b57e11d1c98e1308ee5318fb47d78a6ba2
CRs-Fixed: 2453603
The current QDF timer multiplier factor is of type
uint32 which takes whole number, so we cannot have multiplier
factors like 0.5 or 1.5
To provide such timer multiplier,
we define timer multiplier, as a macro, provided though
build options and support values like 0.5 or 1.5 through
1/2 and 3/2 respectively and this is used to configure the
timeout value.
Change-Id: I3f5441e33cca71f4a399cbbf9c6f61e2f21ee828
CRs-Fixed: 2450710
Add QDF wrappers for minidump logging, which logs
memory locations to be collected as part of minidump.
Change-Id: I2c6b648d3fbb3aed9aaf7eb4872df5befcae971f
CRs-Fixed: 2444081
Mc timer is used to initialize the p2p roc timer.
And the actual timer runs in the soft irq thread and
when the timer exipres it posts the message to mc thread.
Currently, qdf_mc_timer_stop is called to stop the timer.
It calls the del_timer internally to delete the timer.
del_timer() ensures that the given timer is not queued
to run anywhere in the system. But the callback may
be running on another CPU core can create race conditions.
So use del_timer_sync to delete the roc timer.
Change-Id: I2c0fd6e335fc342a3acf06ede534c84d40e19346
CRs-Fixed: 2447236
Add target specific HW header for ipq6018 compilation.
Remove the 8074 header dependencies for 6018 compilation.
Change-Id: I8e45e3e039a4596c6722538405dcd381918fa6b1
The file cds_if_upperproto.h is now removed from qcacld-3.0
project and hence remove from including this file.
Change-Id: I8a9974e70bf71916911b994e058b9892c4b5725d
CRs-Fixed: 2436678
With this feature, using appropriate commands, link layer, network layer,
transport layer and some of the application protocols can be tagged with
the user provided tag values for easier identification of protocols. The
supported protocols today are as follows.
ARP, DHCPv4, DHCPv6, DNS over TCP (v4), DNS over TCP (v6), DNS over UDP
(v4), DNS over UDP (v6), ICMPv4, ICMPv6, TCPv4, TCPv6, UDPv4,
UDPv6, IPv4, IPv6, EAP.
Receive packets are tagged by hardware. Tags are applied after the first
matching rule. Hence it is recommended that the rules are
programmed in such a way that tags are configured from application layer
to data link layer to get expected results.
Change-Id: Ibdc2bd2b78234f482074955e89fb93f05988eaca
qdf_tracker generically implements all of the logic necessary to
implement the qdf_nbuf map tracking. Rather than using the current
custom tracking solution for qdf_nbuf map tracking, use qdf_tracker
instead.
Change-Id: Id33138a9035653b45c66b712bd11e54873266a17
CRs-Fixed: 2425623
IPA driver adds is_txr_rn_db_pcie_addr and
is_evt_rn_db_pcie_addr in ipa_wdi_pipe_setup_info and
ipa_wdi_pipe_setup_info_smmu structure to check if doorbell
address is DDR address or PCIe memory mapped address. Thus
set the addr flag accordingly for IPA transfer and event
rings.
Change-Id: Ia55d14535db3818439e3884cfb61c3a1d81b86fb
CRs-Fixed: 2422162
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
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
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
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
Resolve compilation for targets with config ipa unified
api enable and have kernel version 4.9.
Change-Id: Ice0bba024c11c4d5222a58941ac50fd90b139aaa
CRs-Fixed: 2422170
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
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
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
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
Add a new deferred work type, qdf_periodic_work, which executes a
callback periodically until stopped.
Change-Id: Iedf5486474fccadb35e146e6d289c27a7c1002d3
CRs-Fixed: 2410005
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
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
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
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
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
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
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
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
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
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
Reduced VDEV SM debug level, and added prints for state abd substates at
event handling API
Change-Id: I3076c590131581a8728548592e0a9b4e66db377e
CRs-Fixed: 2394012
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
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
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
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