Commit Graph

661 Commits

Author SHA1 Message Date
Mohit Khanna
c908646fa9 Revert "qcacld-3.0: Fix WDI 1.0 MCC TX SMMU unmap"
This reverts change I7d04e9b01fbd973601ee9e4e74c6bf4dd3d0f7bb

This patchset is causing wlan_ipa_nbuf_cb to be called even when ipa_ctx
is null. wlan_ipa_nbuf_cb should not be called for non-IPA packets. Also
there should be a NULL check for ipa_ctx in the function.

Reverting the change may lead to SMMU errors during AP-AP MCC mode.

CRs-Fixed: 2352812
Change-Id: I2f2382ca12a14a09ed124ccd18a7f450282c5975
2018-11-21 14:46:31 +08:00
Nirav Shah
7c8c171e05 qcacld-3.0: Remove unnecessary prints from data path
1. Remove error prints for qdf_mem_malloc APIs.
2. Remove unnecessary __func__ from data path prints.

Change-Id: I6c4b110f626d84da055821c5f210a3d000b6ff15
CRs-Fixed: 2317315
2018-11-16 05:08:30 -08:00
jiad
15fb83796a qcacld-3.0: Fix WDI 1.0 MCC TX SMMU unmap
For WDI 1.0 MCC TX, wlan driver is involved for TX and skb is
provided from IPA driver. With SMMU enabled, dma_addr is of
IPA domain. In such case, wlan driver needs to do DMA map
itself. After doing DMA map, an offset of frag_header
and ipa_header is added to the iova and skb->cb is updated
with the new iova. After TX completion, skb DMA unmap is done
but with the iova of the above offset included, which leads to
unmapped iova error.

Fix is to recalculate the iova and update skb->cb with new iova,
which has frag_header and ipa_header length removed.

Change-Id: I7d04e9b01fbd973601ee9e4e74c6bf4dd3d0f7bb
CRs-Fixed: 2338049
2018-11-14 22:06:05 -08:00
Jingxiang Ge
7cdb955b0f qcacld-3.0: Fix tx queue is paused forever
Put flow control setting in the flow_pool_lock, which can avoid
race condition between ol_tx_desc_free and ol_tx_desc_alloc.
This is a refine based on Ib60139fd94a4fb88c92a7f8aaf886ae9d3ca4c75.

Change-Id: I8d89323b5631039d7ff5a141775cc5825389c18b
CRs-Fixed: 2297190
2018-11-13 04:20:48 -08:00
jiad
a244137e66 qcacld-3.0: Fix WDI 1.0 MCC TX SMMU fault
SMMU fault is observed for WDI 1.0 MCC TX when SMMU is enabled.
Issue is that dma_addr passed from IPA driver is iova of IPA
domain. WLAN driver directly uses the iova to do transmission.
Since iova is not mapped in WLAN domain, SMMU fault occurs.

Fix is to map skb to WLAN domain for TX when SMMU is enabled.

Change-Id: I4c029a1e4dfff149e2784f5b95fe1f3cf3e3719e
CRs-Fixed: 2318537
2018-11-12 18:28:03 -08:00
Venkata Sharath Chandra Manchala
cd660986d1 qcacld-3.0: Enable Rate events in pktlog
Support Rate control and rate control update events
for pktlog by enabling the events in
WMI_PDEV_PKTLOG_ENABLE_CMDID message.

Change-Id: I9281fcd7c632ba19a84a6eb2c0dff49a172fd70d
CRs-Fixed: 2340635
2018-11-11 09:27:20 -08:00
Rakshith Suresh Patkar
384a28ae48 qcacld-3.0: Add timestamp debug info in ol_tx_desc_t
Add descriptor timestamp debug info in ol_tx_desc_t and
add APIs to set these values.

Change-Id: I686fccff4268811474630dbea8369fabe82d1517
CRs-Fixed: 2333654
2018-11-10 04:02:04 -08:00
jitiphil
377bcc1227 qcacld-3.0: Add legacy DP CFG items and APIs
Add the basic infra for legacy DP CFG items and the APIs
to be used from other components.

Change-Id: If7ad0e02c65e04ea13a308e680c9ba3b3d84ae25
CRs-Fixed: 2324099
2018-11-01 05:42:07 -07:00
Will Huang
a47dca3872 qcacld-3.0: Map as QDF_DMA_BIDIRECTIONAL for PMF tx frame
Some target which support sending mgmt frame based on htt would DMA
write this PMF tx frame buffer, it may cause smmu check permission
fault, set a flag to do special DMA map.

Change-Id: I3686be211374d2c316726fa3248dedce87c3faed
CRs-Fixed: 2332329
2018-10-30 01:46:01 -07:00
Tiger Yu
f1551cbacc qcacld-3.0: doing tx desc init earlier in ol_tx_hl_base
Doing the tx desc initialization earlier in ol_tx_hl_base to make sure
all msdu buffers have been mapped before msdu frame is freed if encouter
error.

Change-Id: Iefded014b4a179889e67fa7cc0e0c36e8218dd83
CRs-Fixed: 2337167
2018-10-26 10:39:20 -07:00
Venkata Sharath Chandra Manchala
598f503a01 qcacld-3.0: Change return status
Return QDF_STATUS as return status
over an integer value.

Change-Id: Ib6083de9b3581e6d92ec18f39ca552a5ae0cfc2d
CRs-Fixed: 2311561
2018-10-26 10:39:16 -07:00
Alok Kumar
9b13327cfb qcacld-3.0: Remove console logging for ol_txrx_peer_get_ref
In ol_txrx_peer_get_ref(), console logging is done after holding
spin lock which leads to spinlock lockup.

Avoid excess logging into console while holding spin lock.

Change-Id: Iae4fa6006358e26796ae2c262aca01bec7eacd21
CRs-Fixed: 2325704
2018-10-01 13:24:32 -07:00
Alok Kumar
0d1acac6bf qcacld-3.0: Unpause the Priority Queue for deficient pools
Priority Queue gets paused due to descriptor deficiency which
needs to be unpaused after distributing descriptors from a
source pool to deficient pool.

Unpause the Priority Queue of deficient pool when avail->desc
count is more than start_th.

Change-Id: Ia91fdd0ac39bf8a4ac42dafa42d346993bf6a38e
CRs-Fixed: 2318031
2018-09-28 09:06:20 -07:00
Jianmin Zhu
13921e9f1e qcacld-3.0: Fix compiling issue of __DP_RX_THREAD__H
error: '__DP_RX_THREAD__H' is used as a header guard here,
followed by #define of a different macro [-Werror,
-Wheader-guard]

Change-Id: I21beca14c8ea98a9a6c4a4acd5f3c7428fd56e01
CRs-Fixed: 2315965
2018-09-18 23:39:56 -07:00
Sravan Kumar Kairam
0512a84dba qcacld-3.0: Dequeue nbuf list from rx thread before continue
Currently in function dp_rx_thread_process_nbufq inside while
loop with nbuf list as condition if peer or vdev is not found
nbuf list is freed but not assigned to NULL and continue operation
is done. This leads to invalid freed nbuf list access in successive
loop iteration. In this change after nbuf list is freed assign it
to the next nbuf list which is in the rx thread queue.

Change-Id: I4b595a8708f91677645815105ad736926de91758
CRs-Fixed: 2309908
2018-09-18 01:02:59 -07:00
Manjunathappa Prakash
a4272ab881 qcacld-3.0: Fix locking order in ol_txrx_disp_peer_stats()
Fix the locking order of pdev->peer_ref_mutex and pdev->local_peer_ids.lock
spin_locks in ol_txrx_disp_peer_stats(), this was resulting in deadlock
with lock order in ol_txrx_peer_get_ref_by_local_id().

Change-Id: I51d39daed7f8fb04c30fd6a73e2f9ca388543620
CRs-Fixed: 2315808
2018-09-17 21:29:12 -07:00
Pramod Simha
7ee7b53e2c qcacld-3.0: Handle nbufs with ext list in RX thread
Check for nbufs which might already have an existing ext list
before appending to it.

Change-Id: Iac24eaf8430d7f9280386f1449c567fce8aa52fb
CRs-Fixed: 2304742
2018-09-12 15:55:48 -07:00
Amar Singhal
7ef5909b64 qcacld-3.0: Make sure NULL vdev is not de-referenced
Do not access vdev_id from vdev structure if vdev ptr is NULL.

Change-Id: I1aafa5ce7398994d55805742e831ca8ee1ae6a21
CRs-Fixed: 2313397
2018-09-12 13:35:47 -07:00
Srinivas Girigowda
09625b0222 qcacld-3.0: Fix embedded function name checkpatch warnings
Logging macros already print function name by default,
there is no need to print the function name again as part of the log.

Hence, remove the function name or
wherever required use '"%s...", __func__'

Change-Id: Ib6dc6cc03ef148146b1c626271d5ac3b7345c4bb
CRs-Fixed: 2312593
2018-09-12 11:58:26 -07:00
Jianmin Zhu
58b641e8d3 qcacld-3.0: Fix LFR3 assert for wrong peer ref count debug id
For peer map, in ol_rx_peer_map_handler->ol_txrx_peer_find_add_id
->ol_txrx_peer_find_hash_find_get_ref, peer ref count debug id is
PEER_DEBUG_ID_OL_PEER_MAP.

After LFR3 complete, host need delete old peer in
wma_roam_synch_event_handler ->wma_delete_bss->wma_remove_peer->
ol_txrx_peer_detach_force_delete->ol_txrx_peer_release_ref,
but peer ref count debug id passed is PEER_DEBUG_ID_OL_INTERNAL,
so peer ref count is failed to be decreased, the peer is failed
to be detached and released, new peer of roaming target AP can't
be created and attached.

Change-Id: I18572a8a8a4429c10a4862bb188b43aefb830a14
CRs-Fixed: 2311751
2018-09-11 14:57:14 -07:00
gaurank kathpalia
9fb3f4b3cb qcacld-3.0: Add src, and dst id support in TX/RX
In the scheduler_post_message, src_id is now added to
know the source module of the msg. the present scheduler
doesn't know about the same which is scheduler_post_msg

Replace the scheduler_post_msg with scheduler_post_message

Change-Id: Ia79d1e8ceda97f956eadcef50524b8307fcc247b
CRs-Fixed: 2305993
2018-09-11 12:01:57 -07:00
Amar Singhal
ddd2cf98d2 qcacld-3.0: Unlock the rx_ring spin-lock appropriately
Unlock the rx_ring.rx_hash_lock spin-lock when returning due to
failure to do smmu map_unmap.

Change-Id: I1b905c0ad529c80f78807c030920121ee0909825
CRs-Fixed: 2299785
2018-09-06 10:05:27 -07:00
Alok Kumar
a13db78b09 qcacld-3.0: Add pre-allocated pool of SKBs for Rx ring
In low memory condition, RX ring may become empty when all
SKB buffers attached to the ring get consumed and kernel is
unable to allocate SKB buffer during replenish.

Create a pre-allocated pool of skbs during driver load time
and request the buffer from this pool in low memory case.

Change-Id: If8c6a4fe04f3c931dc60dcffe28e45166eab9835
CRs-Fixed: 2306861
2018-09-06 01:41:52 -07:00
Amar Singhal
4e855ade4c qcacld-3.0: Check for pdev being NULL
In function ol_txrx_offld_flush, check for pdev being
NULL, before de-referencing it.

Change-Id: I8999d894c74b6ef10cef91345370d859f5eee8ec
CRs-Fixed: 2299780
2018-09-05 22:14:44 -07:00
Mohit Khanna
13ea524aa3 qcacld-3.0: Donot de-init DP RX threads if not inited
In one of the tests, when the driver switches to FTM mode, DP RX threads
are not initialized as the necessary configuration is not passed down
from CDS. However, cds_dp_close tries to de-initialize the threads and a
spinlock un-initialized error is seen.

Donot de-initialize the DP RX thread module if it is not initialized.

Change-Id: I14a1dcb678c9d953abd3262e86408d12f4eb2617
CRs-Fixed: 2301398
2018-09-02 14:33:23 -07:00
Manjunathappa Prakash
1253c3d270 qcacld-3.0: peer_handling: Add more debug_ids to narrow down
Fix and add debug_ids iappropriately account for function holding the peer
reference. This will help to further narrow down the peer leak.
Also add signatures in ref_release functions to catch error path.

Change-Id: I7f091ca8270ba724e24550e80208739d63d57b22
CRs-Fixed: 2293477
2018-09-01 01:42:29 -07:00
Krunal Soni
9e54d98689 Revert "qcacld-3.0: Add support to set/get timestamp for management frames"
1) This reverts commit
   Iab0862eda2392bd516c8ba0b913441b8e0d4c493
2) Reverted changes have been taken care through
   Idd7617782e71ee187eef7fcb3523c05b49f82094

CRs-Fixed: 2300054
Change-Id: Icc47ded9a585e356b7eae1ad53ffea6668510308
2018-08-30 13:40:38 -07:00
Mohit Khanna
7032200a77 qcacld-3.0: Support for DP RX Threads
Add support for DP RX Threads as a part of the FR. Multiple RX threads
can be enabled from the ini. The code is added in a new DP module
outside of the cmn project.

Change-Id: Ief6ee955f13c5e527986307371b8e45677cb9700
CRs-Fixed: 2256446
2018-08-24 18:35:32 -07:00
Manjunathappa Prakash
1bc742d65e qcacld-3.0: Do not log DP info logs on the console
Reduce the log level so that logs appear on cnss-diag log instead on
console.

Change-Id: I66ba3a941b9c6be9ec4fb04af39f9362822787d2
CRs-Fixed: 2296841
2018-08-17 16:13:06 -07:00
Dustin Brown
83044c26d3 qcacld-3.0: Remove redundant recovery-enabled checks
cds_trigger_recovery() already checks for various conditions before
actually triggering recovery. One of these checks ensures that recovery
is enabled, but some callers are checking to see if recovery is enabled
before calling cds_trigger_recovery() as well. Because of this, some
important checks are skipped, and crashes can occur when they should
not. Remove the redundant checks at the call sites for
cds_trigger_recovery() so that all of the recovery conditions are
properly handled, and the wlan driver avoids crashing when it should
not.

Change-Id: I8c26a002b66496a1eb06263f3f8b91ead739e3ac
CRs-Fixed: 2296008
2018-08-15 01:17:42 -07:00
Nirav Shah
e6194ac8ad qcacld-3.0: Update data path statistics log level
Do not required to print function and line number
for data path statistics function which is invoked
by ioctl.
Change data path statistics to info print so
that it can be printed in dmesg as well.

Change-Id: I4b5ea4202255ace71dbb6f9a4bbff6f93e496425
CRs-Fixed: 2278885
2018-08-14 02:15:39 -07:00
Alok Kumar
3a6327d4e7 qcacld-3.0: Remove the logs during RX thread buffer post
APPS watchdog bark timeout happens due to continuous excessive
logging of "Not able to allocate context" in ol_txrx_offld_flush
and in ol_rx_data_process. Remove these extra logs.

Change-Id: Idf96ca584d77c68ad771a150604d1b9ca65ba3eb
CRs-Fixed: 2289492
2018-08-08 14:50:34 -07:00
Venkata Sharath Chandra Manchala
9ac1620c82 qcacld-3.0: Add conditional QCA6390_HEADERS_DEF flag
Add a conditional compilation QCA6390_HEADERS_DEF flag to compile
htt_rx_restitch_mpdu_from_msdus.

Change-Id: I6b526f2dd5d56338e520ec138512b7cf2d849d0c
CRs-Fixed: 2275699
2018-08-08 12:53:42 -07:00
Sravan Kumar Kairam
a886120770 qcacld-3.0: Do rx inorder replenish for fragmented packets
Currently for fragment packets received legacy rx buffer replenish
is done which does not take in to account number of msdu count but
depends on fill count. Variable fill count is not protected and the
value becomes incorrect if AP sends both the fragmented and normal
packets at the same time. This leads to rx buffer replenish failure
and eventually data stall. To fix this do rx inorder replenish for
fragmented packets similar to normal ones if rx full reorder offload
is enabled.

Change-Id: I144c10be7b45268300b040e07ecb909a1ca113cc
CRs-Fixed: 2289797
2018-08-07 08:41:21 -07:00
jitiphil
900e0e617a qcacld-3.0: Reuse preample type, vht_sig_a_1 and vht_sig_a_1
In monitor mode, current implementation
uses the preample type, vht_sig_a_1 and vht_sig_a_1
values associated with each mpdu, instead of reusing
the values from the first mpdu, to calculate data rates.

This is causing incorrect rates to be recorded in monitor mode logs
Reuse preample type, vht_sig_a_1 and vht_sig_a_1 of first
mpdu till the last mpdu is reached.

Change-Id: Ia6e5c1b3b0cc8d8b27f16cdfbd469fdba5c4a8f2
CRs-Fixed: 2276766
2018-08-06 04:21:25 -07:00
Nirav Shah
575282cd60 qcacld-3.0: Featurize DSRC(802.11p) implementation
Featurize DSRC(802.11p) implementation

Change-Id: I64baee9d26b2300b7a7282ad2eff031c0b02b0b2
CRs-Fixed: 2287352
2018-08-06 04:21:21 -07:00
Nirav Shah
6ebfe2419d qcacld-3.0: Separate out HL and LL RX data path
Separate out HL and LL Rx Data Path in different files
to compile out features cleanly

Change-Id: Ifc0e2d7e740142f0115d1fcd53db2936f7a30979
CRs-Fixed: 2287351
2018-08-06 04:21:18 -07:00
Nirav Shah
52d85aacf5 qcacld-3.0: Separate out HL and LL TX data path
Separate out HL and LL Tx Data Path in different files
to compile out features cleanly.

Change-Id: I9033a5bc83bbc95ff00be3f46dc6eda65eab9e71
CRs-Fixed: 2287346
2018-08-06 04:21:13 -07:00
Ajit Pal Singh
8184e939b6 qcacld-3.0: Init tx_mutex in pdev_attach
Initialise spinlock: tx_mutex in pdev_attach instead of
pdev_post_attach as it may be accessed
in ol_tx_flow_ct_unpause_os_q() just after FW download.

Change-Id: I9de2eacd573420d23bc3a71a52dfb27bc1cfdab5
CRs-Fixed: 2285503
2018-07-27 12:34:57 -07:00
Nirav Shah
790d943594 qcacld-3.0: Add per module logging macros without function/line info
Add per module logging macros without function/line info
to avoid adding function/line info where it is not required.

Change-Id: Id808fef623b82cec38fc31071ef384f3ff0c92da
CRs-Fixed: 2278874
2018-07-27 09:09:42 -07:00
Alok Kumar
cc943caa7e qcacld-3.0: Add support to set/get timestamp for management frames
Add setter and getter function of timestamp for management frames
for the peer based on peer's mac address.

Change-Id: Iab0862eda2392bd516c8ba0b913441b8e0d4c493
CRs-Fixed: 2264667
2018-07-18 00:17:59 -07:00
Sravan Kumar Kairam
c273afd8e8 qcacld-3.0: Update UMAC peer objmgr handle to DP peer
At DP peer creation update UMAC peer objmgr handle to the
DP peer structure. Also update the DP peer handle to the UMAC
peer objmgr handle.

Change-Id: I9983fe9626eae9d2ad6e3b2a6fde9183f5bf6356
CRs-Fixed: 2259804
2018-07-13 00:54:03 -07:00
Sravan Kumar Kairam
43f191ba25 qcacld-3.0: Update UMAC vdev objmgr handle to DP vdev
At DP vdev registration update UMAC vdev objmgr handle to the
DP vdev structure.

Change-Id: I438cac1cc952ee8e1a4a372320e686d610b6c071
CRs-Fixed: 2236430
2018-07-11 14:29:02 -07:00
Sravan Kumar Kairam
1cbfb00f1c qcacld-3.0: Fix compilation issue for legacy DP
As part of DP CP interaction UMAC pdev objmgr handle is
passed at dp pdev attach. But in legacy DP config handle
is passed which leads to compilation issue. In this change
handle compilation issue by type casing handles.

Change-Id: I40986c8fd07d007aced91621f338f31332be6782
CRs-Fixed: 2260753
2018-07-09 02:02:15 -07:00
Tiger Yu
415a97e476 qcacld-3.0: Fix the double free for the txrx stats req
The txrx stats req has been freed in the ol_txrx_pdev_detach by checking
req_list of pdev.
Remove the txrx stats req free in the ol_txrx_fw_stats_desc_pool_deinit
to avoid the double free.

Change-Id: Idb2d5517e90ee873e7fd62d58c48a4f793266bac
CRs-Fixed: 2272696
2018-07-05 18:01:26 -07:00
psimha
8696f772fe qcacld-3.0: Add CDP API to set key in data path
Add CDP API to set RX MIC key in datapath.
Required to perform RX demic of fragmented packets.

Change-Id: I3c05da62ff20f8551cdc5780ce2f7b8d23c73a37
CRs-Fixed: 2217884
2018-07-02 16:08:48 -07:00
Abhinav Kumar
50d4dc7645 qcacld-3.0: Fix high latency during BTM roaming
While processing the WMA_ROAM_OFFLOAD_SYNCH_IND event, The
driver takes nearly 150 to 200 msec time to just write fatal,
error and info messages to the kmsg log buffer. Also to get
tx power supplicant runs another thread while roaming. These
cause more latency(300ms) to send WMA_ROAM_OFFLOAD_SYNCH_CNF
message to fw. To decrease roam latency, the driver should
write the only necessary error message to kmsg buffer.

The fix is to change irrelevant fatal, error and info message
type to debug add a check in __wlan_hdd_cfg80211_get_txpower
to reject the request to get Tx power while roaming in progress
otherwise driver will process this and will increase the roaming
latency.

Change-Id: I6c31637f21991b5b29c1e2dd2c2935ae7d4fc3d0
CRs-Fixed: 2251824
2018-06-29 19:37:17 -07:00
jitiphil
335d24162d qcacld-3.0: Implement descriptor pool for fw stats
The kernel address is used as cookie to keep track
of stats request. This address can be disclosed to
target leading to a security vulnerability.

Implement a FW stats descriptor pool, and use a
descriptor ID to keep track of stats requests,
instead of the kernel address, to prevent
kernel address leak.

Change-Id: Ib49150da899c0b9314f614868a90867f4aa92d3d
CRs-Fixed: 2246110
2018-06-28 10:42:39 -07:00
Ajit Pal Singh
2650d4eb6e qcacld-3.0: Return supported max tx groups for all HIFs
Return max tx groups supported in driver for all HIF types.
Earlier max tx group was being returned for SDIO only.

Change-Id: Id0431b03b89945386dd0f5aa0fe01b6d66fadde2
CRs-fixed: 2268757
2018-06-28 03:11:01 -07:00
Ajit Pal Singh
c31d10199c qcacld-3.0: Credit Management changes for Genoa
1) Genoa FW by default enables HI_ACS_FLAGS_SDIO_REDUCE_TX_COMPL_SET.
When this flag is enabled, credits are reported through
HTT_T2H_MSG_TYPE_TX_CREDIT_UPDATE_IND and not through
HTT_T2H_MSG_TYPE_TX_COMPL_IND.
However when TSF and PTP features are enabled we need to get TX
Completions from FW.
Since credits can also be updated through TX Completions
we need to disable updation of credits through TX Completion for Genoa.

2) Enable flag : cfg_ctx->tx_free_at_download to free ol tx descriptors at
   download.

Change-Id: I176dc8391ded9fc57f8be2b465effd8ae84eda49
CRs-fixed: 2268757
2018-06-28 03:10:58 -07:00