irq imbalance issue happens when some irq is disabled or enabled multiple
times. For group interrupts enabling one interrut can cause irq to come.
By this time other interrupts in the group are not enabled. But the irq
will disable all group interrupts in qir context. Later those interrupts
will be enabled. This can cause race condition and in turn irq imbalance
issue. Fix this issue by protecting request_irq and free_irq of group
interrupts to avoid race condition.
Change-Id: Ic99e80600ef63c0d7aff45231d0dae6767cd084c
CRs-Fixed: 2262333
Fix compilation error while enabling QCA_WIFI_3_0_ADRASTEA
and HIF_PCIE flag for Genoa.
Change-Id: Ia8c44ae8623c22af415dc66061f38b59169f08a8
CRs-Fixed: 2266809
1. Move mailbox transfer dma definitions to mailbox.h
2. hif_configure_device changes to make it more generic
3. Add address fixup function
Change-Id: I12bdf8b07350411093ba35071411525a8333cf93
CRs-Fixed: 2252417
Redo the hif layer object for separating the transfer methods
1. Move swap_mailbox from hif_sdio_dev to hif_sdio_device
2. Move the mailbox registers to mailbox specific file
3. Send request flags to be populated per transfer method
Change-Id: Ia53ab2b8cd39875d1e7353a212057ff010e89db8
CRs-Fixed: 2252410
Refactor the mailbox operations in a separate file mailbox.c
Collect common transfer functions in new file transfer.c
Remove redundant file hif_sdio_send.c
Remove redundant file hif_sdio_recv.c
Change-Id: I964970f4651a11000e9833ad21eef1b255682341
CRs-Fixed: 2252406
Refactor the quirks into a separate file.
Clean up hif_device_inserted by adding multiple functions.
Clean up startup and enable task.
Change-Id: I2199a1f355561e52fa06a82aa196e0eab2ab34c6
CRs-Fixed: 2252385
Fix the memory over run by removing the extra "END" ascii print
as it overruns the available memory.
Tests Done:
Ran Pollux_ACFG_MIPS_3Radio_Channel_Change_120s_Rev_1.0.0.0 for ~20hrs
Ran PDT_Pollux_Reboot_Rev_1.0.0.1 for ~36hrs
Change-Id: Id71fe8c95a41369f55d53ece043a0b00e62c5d4f
API for dumping the CE descriptors copies all descriptors for
the given Copy engine id and also copies the SKB packet pointed
by the descriptors till smart_log_skb_sz bytes.
Change-Id: I511bda77319944c1ec2377f716087956ce0637ac
CRs-Fixed: 2008290
NAPI context allocated during hif_napi_create is freed in
qca_napi_destroy path based on the conditions that NAPI state
is enabled and NAPI context is created for the CE.
There can be cases when the NAPI context is created for the CE
but the current NAPI state not be enable. In such scenarios, NAPI
context is not getting freed in the destroy path.
Add hif_napi_created API to check if NAPI context is created for CE,
and use it in destroy path.
Also, NAPI object allocated is not freed after alloc during cases
when there is a failure in subsequent operations. Free NAPI object
aptly as required.
Change-Id: Ifcc21d70ba52ca309a913ac564406db627e11249
CRs-Fixed: 2256037
Add support to configure logging buffer size from
per-OEM kbuild based on memory requirement.
Change-Id: Ia91d79e5e738b1c9787015de101c3f67ccde46aa
CRs-Fixed: 2253438
Since DP interrupts are not disabled at source, and enabled and
disabled only at GIC level, set IRQ_DISABLE_UNLAZY flag to avoid
spurious interrupt detection
Change-Id: Ie935bee5bf31171d75342cd7607b0478d5e16906
CRs-Fixed: 2257162
Modify hif_update_napi_max_poll_time API to take ce_id instead of
pointer that is defined under feature flag to avoid compilation error.
Change-Id: Iec4a06e816ed1714ec5c00ecdc5a7c6d6eb217e3
CRs-Fixed: 2249802
Customer requests some CE logs to be rate limited as logs flood
the logs space.
Rate-limit the logs.
Change-Id: I922f5a737b967a62b557715c2d74f330fa47ca06
CRs-Fixed: 2179665
qcacld-2.0 to qcacmn propagation
Currently there is no timeout for BMI message exchange.
If HW interface is stuck, kernel thread for driver loading
will be blocked.
Change-Id: Ia7039f2939cf39af605a8ebec3278c5e1685bfbe
CRs-Fixed: 2228298
Fix tasklet workers leak, make sure to cancel the ce tasklet workqueues
during driver unload/deinit sequence.
Change-Id: I48e0c60f1a8bd9dc5e9cb151e197b3e843eaa0f3
CRs-Fixed: 2244061
Fix return value of hif_exec_event when HIF_IRQ_AFFINITY is not defined.
return success in this case.
Change-Id: Icf9d7d15b67aea987fba7be24f6037d67f7d6adf
CRs-Fixed: 2238090
Address the following issues in the hif folder:
CHECK: 'controll' may be misspelled - perhaps 'control'?
CHECK: 'Implemenation' may be misspelled - perhaps 'Implementation'?
CHECK: 'intialize' may be misspelled - perhaps 'initialize'?
CHECK: 'occuring' may be misspelled - perhaps 'occurring'?
CHECK: 'reseting' may be misspelled - perhaps 'resetting'?
CHECK: 'stuct' may be misspelled - perhaps 'struct'?
CHECK: 'substract' may be misspelled - perhaps 'subtract'?
CHECK: 'successfull' may be misspelled - perhaps 'successful'?
CHECK: 'syncronize' may be misspelled - perhaps 'synchronize'?
CHECK: 'transfered' may be misspelled - perhaps 'transferred'?
CHECK: 'untill' may be misspelled - perhaps 'until'?
CHECK: 'wirte' may be misspelled - perhaps 'write'?
Change-Id: I80280ecb8ac8b0270a32add74429a8df89bedbcb
CRs-Fixed: 2241576
For legacy PCIe chip like Rome, FW will use register 'fw_indicator'
to indicate more info, when failure occurs.
Here to print its value for debug purpose.
CRs-Fixed: 2242094
Change-Id: I9037dc29091ec5d7571414bb9e135dfaaf0f6dd9
Changes to compile out fastpath feature cleanly and
also disable unused code when Fastpath is enabled.
Change-Id: If6dc9d5c4d4441d5edded582747c783a10f8c8d4
CRs-Fixed: 2226921
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 by not scheduling them.
Change-Id: I517c4c6158ed3ac073f5f617afde46c7ed07ff3e
CRs-Fixed: 2128457
Add API to get NAPI instance from NAPI ID. Handle to NAPI is required
for Rx processing via GRO.
Change-Id: I15535827a03953231670d4138235c4876b16e045
CRs-Fixed: 2062180
Change ce_service_max_yield_time ini to us granularity to have
yield time of us order as well.
Change-Id: Iae31be810dd42273a4f0546ba2b76e89e23b9329
CRs-fixed: 2086190
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
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
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
CE6 is used for autonomous HIF_memcpy by FW, but interrupts
are coming to host since there is no separate HW control to
turn off host interrupts. Avoid requesting these interrupts.
Change-Id: I7b09b7c6e39d37e111e6e7a4292f605b3fb602e0
There are instances of use of older A_UINT/A_INT.
Replace all such instances with the qdf u_int*_t/int*_t.
Change-Id: I7ce29b03f29a0d1a0cf87cfd3c846f4694da4c2a
CR's-Fixed: 2210869
Rate limit CE access log to avoid watch dog bark because of
excessive console logging.
Change-Id: I460a39f02206f651eafc26febd5628766e471483
CRs-Fixed: 2207647
Change Ie062ada403f8a31aebcde691396987ad9e5352b5 introduced level-
specific logging wrappers. Instead of using QDF_TRACE_RATE_LIMITED
directly, consumers should use the level-specific versions instead.
To prevent new consumers of QDF_TRACE_RATE_LIMITED in the future,
rename this API to __QDF_TRACE_RATE_LIMITED.
Change-Id: I06d35f5277fe2e11fbcc0e7e00b6fa99a84bda78
CRs-Fixed: 2208564
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
QDF_TRACE_RATE_LIMITED() currently rate limits by only printing every
rate'th call to the function from the same location. Instead, prevent
logging messages more than some constant 'k' times per second. This
means any subsequent calls to the API from the same location within 1/k
seconds will be dropped.
Change-Id: I31a3f48f68fb6bc67f59f3157a635345943d3331
CRs-Fixed: 2205794