| Commit message (Collapse) | Author |
|
The rx_pending flag is never set to 0 if the check for
TARGET_REGISTER_ACCESS_ALLOWED(scn) is failed when target is
not reachable. Since, the rx_pending flag is not set to 0,
ce_check_rx_pending(CE_state) check inside ce_tasklet() will
be true and tasklet gets rescheduled again and again.
Reset the rx_pending flag before TARGET_REGISTER_ACCESS_ALLOWED(scn)
check in ce_per_engine_service() to avoid continuous scheduling of
tasklet when check for TARGET_REGISTER_ACCESS_ALLOWED(scn) fails.
Change-Id: Ib9268e6cf2bdcd0ed0bf84934e9370bcef1cdbab
CRs-Fixed: 2375307
|
|
During freeing up of hif_config_de resources, the ce tasklet workers
are deinitialized after the ce cleanup is done. This causes a race
condition between shutdown and ce tasklet in case rescheduling of ce
taslket is done.
Deinitialize the taslket workers before ce structures are dismantled.
Change-Id: I708711174cf818c0d15ef92c881c8d8aee49e9f1
CRs-Fixed: 2283272
|
|
The max history for each copy engine given by HIF_CE_HISTORY_MAX
is currently set to 512. This history is not enough to debug the
rootcause of the issue in case of failure to reap from CE.
Increase the value to 2048 to accomodate sufficient history per
CE for debugging purposes.
Change-Id: I79c49e8071e2772eff83b94304914b7babfaecf3
CRs-Fixed: 2283866
|
|
Fix tasklet workers leak, make sure to cancel the ce tasklet workqueues
during driver unload/deinit sequence.
Change-Id: I48e0c60f1a8bd9dc5e9cb151e197b3e843eaa0f3
CRs-Fixed: 2244061
|
|
Control Flow Integrity (CFI) implementation in the kernel.
CFI is an LLVM feature that protects function pointers against
control flow hijacking. Basically, when calling a function through
a pointer, the type of the pointer must match the signature
of the target function.
Hence, fix all the occurences of the function pointer type
which doesn't match the signature of the target function.
Change-Id: I910a7e1995dddf8fdcd7551f7a5e442e1d0120ab
CRs-Fixed: 2196475
|
|
Per current guidance remove legacy markings.
Change-id: I5d1411d241cfed4f50759960d18e9220f6c0da39
CRs-Fixed: 2230684
|
|
Rate limit CE access log to avoid watch dog bark because of
excessive console logging.
Change-Id: I460a39f02206f651eafc26febd5628766e471483
CRs-Fixed: 2207647
|
|
Customer requests some CE logs to be rate limited as logs flood
the logs space.
Rate-limit the logs by (instance % 16).
Change-Id: I922f5a737b967a62b557715c2d74f330fa47ca06
CRs-Fixed: 2179665
|
|
HIF fake apps suspend/resume functions are currently defined in a
PCI-E bus specific file, which will result in 'unknown symbols'
error when WLAN driver is built and loaded with SDIO bus type.
Move all the related functions to a bus type neutral place so
the feature can be enabled for both bus types.
Change-Id: I84391402388ec6c10fe46c39604e63ca663d3611
CRs-Fixed: 2146268
|
|
qdf_dp_trace could access nbuf already freed after sending to CE ring.
Move trace log before sending skb and add error log when fail to send.
Change-Id: I8ce36b9d196b7d44e0e9f7dcfe05db404a77e32f
CRs-Fixed: 2090277
|
|
GRO aggregations are hanging out of NAPI instance and We cannot use the
hif NAPI instance in Rx thread as gro_list inside NAPI is flushed out
at the start and end of NAPI poll, this will corrupt the gro_list on
which rx_thread is working. Address this concern by creating dummy
NAPI instances mapping to each hif NAPI and not scheduling them.
Change-Id: I517c4c6158ed3ac073f5f617afde46c7ed07ff3e
CRs-Fixed: 2128457
|
|
Replace instances of unadorned %p in hif.
Change-Id: I282573452a2c12b4bccdbdaab611dcd6f84a6240
CRs-Fixed: 2111274
|
|
A recent change added NAPI yield stats update call for all CEs.
With another receent change that shortened the yield time, we see
a lot of logs complaining about CEs where this particular stats
are not applicable to. Limit the stats update to NAPI CEs.
Change-Id: Ia17a4ddf53ce52116f30d48190f47914721a548e
CRs-Fixed: 2092084
|
|
Some of the HIF API's that do buffer allocations and operations
return either 0 or 1 as return status. Information is lost since
the same value is returned in case of buffer allocation failures,
queue operation failure or anything else. Caller can't decide if
to perform recovery, graceful failure or BUG_ON.
Return the appropriate error status to the callers.
Change-Id: Idccd3968231d030311fa5581aed78849b729227d
CRs-Fixed: 2105913
|
|
Stats printing with excessive loops should not go to the console.
Avoids watch-dog bites.
Change-Id: I7b0f9d73139dff97c16f492cbd1cb2d255255b3e
CRs-Fixed: 2091039
|
|
Add missing qdf_spinlock_destroy() to destroy spin lock debug cookie
for SLUB build. For normal builds, qdf_spinlock_destroy() is a NO-OP
function.
Change-Id: If5a3843a468e460952dc64f0e6b5b1fba05ebbb3
CRs-Fixed: 2078940
|
|
Update WLAN-IPA WDI-2 datapath for DMA buffer sharing with SMMU
Stage 1 translation support. When SMMU Stage 1 is enabled
DMA APIs return IO virtual address(IOVA) instead of physical
address. This IOVA need to mapped to physical address by IPA
module before accessing them.
Change-Id: I33082bc74760b0f12c348238c6f48f5ce5750172
CRS-Fixed: 2072953
|
|
Update WLAN-IPA WDI-2 datapath for DMA buffer sharing with SMMU
Stage 1 translation support. When SMMU Stage 1 is enabled
DMA APIs return IO virtual address(IOVA) instead of physical
address. This IOVA need to mapped to physical address by IPA
module before accessing them.
Change-Id: I33082bc74760b0f12c348238c6f48f5ce5750172
CRS-Fixed: 2072953
|
|
Currently in interrupt handler of per CE, spin lock is taken for
send or receive and returns with out releasing the lock held if
target register access is not allowed. This condition will lead
to kernel panic if some other context is trying for the same lock.
Change-Id: I115f6fbb006d28097168342aa4add3526ad3939d
CRs-Fixed: 2077464
|
|
Add API to set ce service max rx indication flush num
during load time for handling of messages in CE based on
ini configured one.
Change-Id: I49c3d6ebac34076cd5ad5e352e78d2fec7c8ee89
CRs-Fixed: 2068375
|
|
Issue can be reproduced when test D0WOW ROME PCIE.
Multi interrupts may only trigger tasklet one time,
which will cause active_tasklet_cnt mismatch.
Change-Id: I66b5544c4d57fe91eae75d4cf8578e30b498e1fd
CRs-Fixed: 2070872
|
|
Add APIs to set/get ce service max yield time and update
max time taken in NAPI poll from the driver load time.
Change-Id: Idfd4a271ce13916f188c92ab3af32e1648f48c95
CRs-Fixed: 2055082
|
|
implicit conversion from enumeration type 'A_STATUS' to different enumeration type 'QDF_STATUS'
implicit conversion from enumeration type 'QDF_STATUS' to different enumeration type 'A_STATUS'
CRs-Fixed: 2063344
Change-Id: Id3613d0b7fca58c3d94c5af59838b0bff3ef26de
|
|
Currently, Shadow registers is not implemented for all registers.
This can lead to unclocked access and followed by NOC errors.
In Rx path Interrupt Status and src/dst read index are directly
accessed without shadow block. Target may execute
reset sequence due to PDR/SSR while rx path is active.
Avoid direct access to below registers if target is crashed due
to PDR/SSR.
HOST_IE_ADDRESS
HOST_IS_ADDRESS
CURRENT_DRRI_ADDRESS
CURRENT_SRRI_ADDRESS
Return from ISR without scheduling the bottom half if target is
crashed due to PDR/SSR.
Change-Id: Ifa993e978579b4d061d21281338494292e19700a
CRs-Fixed: 2058451
|
|
With SLUB build in Low memory condition rx processing is taking
more time, reduce CE msg flush count for fastpath in SLUB build.
Change-Id: I8901bd770ca01997299f882394bbe99871d2400e
CRs-Fixed: 2043999
|
|
IHelium uses qmi path for read/write access to
target registers, legacy diag path is not used.
Remove diag config to reduce unnecessary allocations.
Change-Id: Ic251364b5a724c1efd7d34bba55b020189e8e599
CRs-Fixed: 2041887
|
|
HOST and TRAGET ce configuration are mapped statically
by using compile time macro.
Assign host/target ce config dynamically to get rid of
compile time flags.
Change-Id: Ic6bf85cb68d89dc92fb4963da234edde968aa8c4
CRs-Fixed: 2041887
|
|
If the index writes go out of sequence, hw thinks the whole ring
is posted. Need to protect the register write with the ce_index_lock
to ensure proper ordering.
Change-Id: I43a0cefe47af4fd1a3cc61092db849e5fe077588
CRs-Fixed: 2042167
|
|
Spinlock profiling reported the ce_send_fast spinlock was held too long.
Change-Id: I75399b0d8a3854caca59a19ea65e3f975588ff29
CRs-Fixed: 2038695
|
|
Return failure in insmod if host fails to allocate
the ce receive buffers in the ce dst ring for fastpath rx
copy engine.
Change-Id: Ic2e0de5bb13a53efe1002a945841b674315dddef
CRs-Fixed: 2036365
|
|
Reduce complexity to eliminate false positive "variable not initialized"
warning when spinlock profiling feature is enabled.
Change-Id: I93b17d7bc3c2202bc46f3e486700ad25c8c07ad8
CRs-Fixed: 2034020
|
|
Fix kernel module check patch warnings in HIF files
Change-Id: I3ddc76399004f15f325b56709e4f2e96bf4cda96
CRs-fixed: 2033001
|
|
Fix kernel module check patch warnings in HIF CE files
Change-Id: I5a0d22f8b139e76c33580fe9ef5b01736b2b5735
CRs-fixed: 2033001
|
|
Some data path code change didn't consider SDIO code path, so
introducing some build error for SDIO driver. Fix them in one
submission to enable ACI
Change-Id: I8a37cbf8589689294aa3730c86dd2f82a8f1f2dd
CRs-Fixed: 2033767
|
|
when allocation for destination ring fails in ce_init function,
Clean up the complete datapath tx ring.
Change-Id: I7e46396f7a1903207768c79cd07e2dbda1e5a7d2
CRs-Fixed: 2028641
|
|
Mask failures in hif_post_recv_buffers as the oom_allocation_work
provides a recovery mechanism.
Change-Id: Ib495b96f9d72b25c732c3b85f982db5dc20adca7
CRs-Fixed: 2030393
|
|
The interrupts are being freed, but the execution contexts are not
guaranteed to be stopped. Ensure the execution contexts are stopped
to prevent race conditions between the cleanup and normal execution.
Change-Id: I77f2e0fb7073dbb3337e1cbbb6ed09295c7ea23e
CRs-Fixed: 2030393
|
|
HIF close is not freeing RRI memory allocated during HIF initialization
resulting in memory leak of RRI memory after driver unload
To mitigate the issue, freeing RRI memory in HIF close.
Change-Id: Ib3daba8de0cabc1d8e303d7148448d21c47905e7
CRs-Fixed: 2019147
|
|
Fix kernel checkpatch warnings in QDF.
Change-Id: Id2f54c6c436bde55b040012fbbe9922cb177461e
CRs-Fixed: 2028128
|
|
Reduce log level to info/debug to avoid watchdog bark.
Change-Id: I14a77b9017ada3bc2f10fc78c69cb31b22452052
CRs-Fixed: 2026821
|
|
Register and De-register LRO after OL pdev attach and before OL pdev detach
respectively instead of vdev start and vdev stop. With this change we can
get rid of spin_lock which was required to synchronize the control path
vdev going down removing LRO flush_callback/LRO manager and datapath
handling Rx traffic on vdev. So this will make LRO instances to be hanging
around throughout lifetime of the driver irrespective its mode of
operation and even if LRO is not functional in particular mode.
Change-Id: I06f7b43e80ddf0ce5e096351b38ce954eb634a95
CRs-Fixed: 2028318
|
|
move ce_id_to_state assignment to the end where ce_init
is guaranteed to succeed.
Change-Id: I5172eb1136dde2aad915c2497ece94150c95630f
CRs-Fixed: 2020794
|
|
freeing mapped memory may lead to resource leaks.
Change-Id: I75664b1a987c1339aa173672c9af670f8b3ffeb8
CRs-Fixed: 2020793
|
|
When bufs needed to post in a CE ring reaches (max no. of entries - 1),
assert happens to print the dumpstack in kmsg. Once this condition is
reached, a work is scheduled to recover CE from this OOM condition which
tries to post buffers in CE. If buf posting fails again, assert will happen
and work will be scheduled again. So, if system is in low memory situation,
then buf allocation and posting will fail leading to assert and work
scheduling again and again in a cycle. Due to these continuous dumpstacks
in kmsg as a result of QDF_ASSERT(), watchdog bark is happening.
Remove QDF_ASSERT from hif_post_recv_buffers_failure() as suffcient prints
and history is present to indicate the situation and so there is no need of
any kind of dumpstack in kmsg.
Change-Id: Ib8bafb9a9fe45c62a15c45fa8a610da2074e058c
CRs-Fixed: 2021793
|
|
Move the logs to appropriate log levels to reduce the log spam in kmsg.
Change-Id: I3b759274d8e4bad13f4390fd906ec487ad5cbd1e
CRs-Fixed: 2019280
|
|
Fix CE full error when only legacy hif_send_head api is used on a ce configured
to use the fastpath logic.
Change-Id: I59530a0e5ff8b62a1b97007dcd959daa03025785
CRs-Fixed: 2018893
|
|
Move the logs to appropriate log levels to reduce the log spam in kmsg.
Change-Id: I29121bb4cc1272aa1fb88183914530dd21c64272
CRs-Fixed: 2017427
|
|
In one log the rx ring is depleted in 2.4 seconds
durring a prolonged period of memory contention.
Double the rx ring size to allow 5 seconds before
the wmi ce is oom.
Change-Id: I2e9a6caeee10f317bd3d70b770fcae3ad2d96623
CRs-Fixed: 2015778
|
|
In oom condition, when an rx ce is oom, the ce would
deadlock as the hw couldn't copy any messages (due to the oom)
and the sw wouldn't initiate a pipe refill without a new message.
When this happens submit a work to a workqueue to try and kickstart
the cycle by allocating an nbuf and posting it to the ce.
Change-Id: I047818145dbe230fefc447b6b034705f9b87ca70
CRs-Fixed: 2015778
|
|
Make it easier to identify when nbuf allocation starvation
in hif is the root cause for a crash, by adding events to
the hif_ce_desc_history buffer.
Change-Id: Id3b919f17ee79770f5fa81b389f9a28a0670cfa2
CRs-Fixed: 2011015
|