Commit Graph

1594 Commits

Author SHA1 Message Date
Shashikala Prabhu
8fe9679be0 qcacmn: Use qdf aligned mem alloc APIs in DP component
Replace dp_srng_mem_alloc() by qdf_aligned_mem_alloc_consistent() and
qdf_aligned_malloc() in dp_srng_setup().

Change-Id: Iae236a3cc19ec7a9f94b04382d37fc95e6ed622f
CRs-Fixed: 2462455
2019-08-28 02:39:37 -07:00
Rakesh Pillai
836b6690cb qcacmn: reduce log level for mon status ring tlv-tag error
STATUS_DONE is missing sometimes in monitor status ring,
but logging for each entry in the ring increases the time
for which the hal_ring access lock is held. If there are
many entries in the monitor status ring, this can lead to
the hal ring access lock being held for too long and cause
inconsistencies.

Reduce the logging level of the tlv tag STATUS_DONE errors
and have a counter for the cases when this happens.

CRs-Fixed: 2502422
Change-Id: Ica77ce62bbe2c6b7691d638ac44ab0452dd2fd97
2019-08-27 20:59:22 -07:00
Sumeet Rao
2b730bbc76 qcacmn: Reorganize protocol and flow tagging changes to wifi-host component
Reorganize protocol and flow tagging changes to wifi-host component.

CRs-Fixed: 2501573
Change-Id: Ic6bc9548fd8bb66c2f8bae4740a4dcad4002f720
2019-08-22 12:35:28 -07:00
Kiran Venkatappa
a33e6a8ea7 qcacmn: Use correct mac_id for delayed mon replenish
mac_id is used to get rx_desc_pool for monitor ring and mac_for_pdev is
used for srng for monitor buf. Use appropriate id to get correct
combination of hw ring and sw desc for monitor rings.

Change-Id: I7e4467e9568056e55cbabfef8f97ce94ad9c1b1c
CRs-Fixed: 2512292
2019-08-21 23:46:08 -07:00
Prathyusha Guduri
fafd2480fb qcacmn: Fix tx_errors interface stats
tx_failed is not updated from ppdu completions owing to HW limitation.
Hence update tx_failed from data path

Change-Id: I808223005047af9b474ce423caac27fd9a83677e
2019-08-21 02:59:41 -07:00
Rakshith Suresh Patkar
8a0b6e961c qcacmn: Cleanup cdp_fc_get_tx_resource [PEER_ID_PHASE1]
Cleanup cdp_fc_get_tx_resource to be peer mac address based
from local peer id based.

Change-Id: I241377c75f09e9f0e177a167905cd9461ffcd088
CRs-Fixed: 2508146
2019-08-17 10:53:50 -07:00
Sumeet Rao
3953e0ad69 qcacmn: Check nss enabled config before programming flow search table
In cases where NSS offload is enabled, we currently do not support
flow-based search (flow tagging). Check for NSS offload enabled flag
prior to configuring the flow search table in target/hardware.

CRs-Fixed: 2502311
Change-Id: I291c610fe568ac36bacb3c21fd14feb544332b20
2019-08-16 12:44:37 -07:00
Mohit Khanna
c42d8036c9 qcacmn: Donot forward MDNS packets for NAN vdev
MDNS packets if forwarded for a NAN vdev can lead to potential flooding
of the air interface. Hence donot forward them.

Change-Id: Idfdedfb0b5b553745440587448230013f3b56a7d
CRs-Fixed: 2503360
2019-08-16 08:23:00 -07:00
Kai Chen
4b4e8b48cf qcacmn: change debug print and add ring stuck count
change debug print and add counter for monitor destination
ring stuck

Change-Id: I79b4d3b957303334717fd04bfddf754e303e69db
2019-08-16 08:22:57 -07:00
phadiman
baaa7b98ce qcacmn: Replace %p with %pK format specifier
Replace %p with %pK specifier in dp_main
module

Change-Id: I637f5a4ddc827011aa48295ea50544632d1a9a76
2019-08-16 08:22:53 -07:00
Amir Patel
44bd807fa7 qcacmn: Fix memleak in m_copy mode
1. Assign correct first msdu payload
2. Reset mpdu fcs ok bitmap upon reception of next ppdu
3. Free rx_ppdu_buf_q in error cases

Change-Id: I4f2e687d51d1e10693adc9cfcdee49190ba6815c
CRs-Fixed: 2502889
2019-08-16 02:58:08 -07:00
Jinwei Chen
0f015f2b53 qcacmn: support changing driver mode to monitor
support monitor mode enablement by changing driver mode.

Change-Id: I5436b21f4f554101e74590757ed2ac05d2d84fa0
CRs-Fixed: 2491560
2019-08-16 02:58:05 -07:00
Rakshith Suresh Patkar
fb42ec3909 qcacmn: Cleanup dp_get_vdev_by_sta_id [PEER_ID_PHASE1]
Cleanup dp_get_vdev_by_sta_id to be peer mac address based
from local peer id based.

Also, modify the API cdp_peer_get_vdev_by_sta_id with additional
argument for peer mac address.
Rename cdp_peer_get_vdev_by_sta_id to cdp_peer_get_vdev_by_peer_addr.

Change-Id: I889538b5ea7ebac8973dcaaa5ebdad1ac495e791
CRs-Fixed: 2504569
2019-08-15 20:38:29 -07:00
Ankit Kumar
cd66fff1ce qcacmn: Process smart antenna fields from tlv
Process smart antenna fields from tlv
HTT_PPDU_STATS_USR_COMPLTN_COMMON_TLV in tx
completion path and export it to tx_completion.

Change-Id: If14e711b0aee8e583fd329f3c3915904649ffe47
CRs-Fixed: 2491429
2019-08-15 01:28:21 -07:00
Sumeet Rao
511db296dd qcacmn: Add CDP api to set rx_pkt_enable,tx_pkt_enable for a peer
Since tx_monitor mode and rx_monitor mode consume signficant MIPS
when enabled on a per-peer basis, new requirement is to enable such
functionality on a per-peer basis. New CDP APIs are added to set these
per-peer parameters.

CRs-Fixed: 2494471
Change-Id: Ib44845ec98481cc4df36c30f47335522e5274568
2019-08-14 14:30:23 -07:00
Sravan Kumar Kairam
afd707dd48 qcacmn: Do vdev null check sanity before gro flush
In dp_rx_process there are two cases in which vdev will be
null. One is when peer is invalid case which happens when
packets comes on reo with out any valid peer and vdev set.
Second case is fetching more data in case of napi no yield
condition and there are no buffers to fetch. In current
dp_rx_process gro flush is called at the end of nbuff process
and with out checking for vdev sanity it is referenced. So
add vdev null sanity check to prevent NULL pointer dereference.

Change-Id: Ie2d480108118d9b83373a450aecabee57675c41d
CRs-Fixed: 2507067
2019-08-13 16:23:39 -07:00
Mohit Khanna
698987c896 qcacmn: Send GRO flush indication at end of dp_rx_process
In case of TCP packets being processed by dp_rx_process, send out GRO
flush indication to the thread.

CRs-Fixed: 2500152
Change-Id: I4f464456d423e4680955992c0acf0ed5f4e618b8
2019-08-13 16:23:36 -07:00
Rakshith Suresh Patkar
0375108ffa qcacmn: Cleanup dp_clear_peer [PEER_ID_PHASE1]
Cleanup dp_clear_peer to be peer mac address based
from local peer id based.

Also, modify the API cdp_clear_peer with addition argument
for peer mac address.

Change-Id: I1bd3fab1b9510b5f1d4476e11b617fcb6417f2c4
CRs-Fixed: 2503774
2019-08-13 04:17:32 -07:00
Ruben Columbus
4319493562 qcacmn: ring backpressure handler
rxhost ring backpressure:
identifying rings causing rx backpressure after being notified
by FW message. Adding logs to be able to see at what state
the ap was after a backpressure event was triggered.
Adding radio stats (261) as well as napi stats for better
state description.
Change-Id: I395450be6faaf959f91729516a7b229c5b3396ce
2019-08-12 16:18:24 -07:00
Varsha Mishra
06b91d3db8 qcacmn: Make send_msdu_single a non-static function
send_msdu_single is required in other files, hence making it
non-static.

Change-Id: I7cf876fe7a940c90aeafce15b0112bbe93a8760b
2019-08-11 14:09:34 -07:00
Nandha Kishore Easwaran
5d3475b985 qcacmn: Initial changes for pine
Add device ID change and target type checks for pine.
Also remove memory war added for Hk emulation.

Change-Id: Idf531a48a03202d4fb241a92a1d671ee2b94cfbd
CRs-fixed: 2453899
2019-08-11 02:11:41 -07:00
Sravan Kumar Kairam
1e8591a2a0 qcacmn: Dont destroy rx_tid lock for peer reuse
In case of peer reuse case rx_tid locks are destroyed as
part of peer cleanup and are not initialized again. So while
deleting this peer as part of unref delete peer cleanup is done
which again tries to destroy the rx_tid locks which were already
destroyed. This leads to assert complaining destroying lock with
out initialization. So dont destroy the rx tid locks in case of
peer reference reuse.

Change-Id: I860de558950009cae6f62385dd665badfe9964e0
CRs-Fixed: 2504973
2019-08-11 00:47:32 -07:00
Chaithanya Garrepalli
1f89b97be2 qcacmn: Read 256 fcs_ok bitmap from user ext TLV
Read extra bits of fcs okay bit map from
RX_PPDU_END_USER_STATS_EXT TLV and use the same
to send first fcs okay packet in case of M COPY

CRs-Fixed: 2499150
Change-Id: I1a25971ea789dd7fddddb312af8a18a4cccdc178
2019-08-10 05:10:36 -07:00
Rakshith Suresh Patkar
9e02e1e104 qcacmn: Cleanup dp_register_peer [PEER_ID_PHASE1]
Cleanup dp_register_peer to be peer mac address based
from local peer id based.

Change-Id: Ifc0166b8ace5aabd7c287941476df47c806e8663
CRs-Fixed: 2503680
2019-08-09 07:38:01 -07:00
Rakshith Suresh Patkar
b3bc8abbd6 qcacmn: Add peer mac address in struct ol_txrx_desc_type
Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.

Change-Id: I3a141d0a1e549fcbb587373f1e0d57dfd031911f
CRs-Fixed: 2503144
2019-08-09 07:37:57 -07:00
phadiman
797a49bc7d qcacmn: Fix incorrect access to mon buffer ring
Map mac_for_pdev appropriately for both MCL & WIN,
since MCL have multiple monitor buffer rings and
WIN just has one mon buffer ring, below API helps
identify accurate monitor buffer ring for both cases

CRs-Fixed: 2502051
Change-Id: I3929f3f7717d795850a41f4148397d87b0415118
2019-08-09 02:50:24 -07:00
Gyanranjan Hazarika
e8047269ee qcacmn: data-path changes for dynamic hw-mode config
This feature enables user to change HW mode dynamically
from DBS to DBS_SBS mode and vice-versa. Currently, HW
mode configuration is only possible through INI setting
requiring a subsequent reboot.

Relevant DP changes are:

1. Add API cdp_txrx_handle_pdev_status_change to pass
pdev 'up' or 'down' status to DP module
2. Add pdev-status check in dp_rx_process_invalid_peer
3. Add pdev-status check in dp_tx_comp_handler to free
buffer and release descriptor

Change-Id: I74b144abb1b0dc41a26a18ad28f872e6457e9653
CRs-fixed: 2490212
2019-08-07 16:22:32 -07:00
Sumeet Rao
c4fa4df717 qcacmn: Add a new feature to support tagging of IPv4/v6 flows
Tags are programmed using wlanconfig commands. Rx IPv4/v6
TCP/UDP packets matching a 5-tuple are tagged using HawkeyeV2 hardware.
Tags are populated in the skb->cb in the REO/exception/monitor data
path and sent to upper stack

CRs-Fixed: 2502311
Change-Id: I7c999e75fab43b6ecb6f9d9fd4b0351f0b9cfda8
2019-08-07 11:28:21 -07:00
nobelj
1453164d24 qcacmn: add per user RX stats in Rx PPDU struct
1)Add per user RX stats in Rx PPDU struct
2)Add per RU size counters in wifistats/iwpriv txrx_stats 10
3)Modified RX ppdu indication structure.

CRs-fixed: 2458732
Change-Id: Id8f3d6cce97503c0529642c4f5d66f3bbc59785d
2019-08-05 23:27:05 -07:00
Venkata Sharath Chandra Manchala
5ee6efde61 qcacmn: Avoid shadow register access when link is down
When the scheduler thread initiates the WMA_SET_BSSKEY_REQ
we send CMD_UPDATE_RX_REO_QUEUE to REO srng. This is done by
posting a descriptor to the reo command ring and then we
update the HP so that the HW can consume the descriptor.
Avoid accessing HP shadow address when we are in runtime
suspend state. Perform a hif_pm_runtime_get to resume the
link and access the shadow register and once done initiate a
hif_pm_runtime_put to allow device to go into runtime
suspend.

Change-Id: I24c3e046a5769f03a0f1969360cccdbe55b81d45
CRs-Fixed: 2495720
2019-08-05 18:53:08 -07:00
nobelj
7b0e27336e qcacmn: Fix OFDMA stats counter
user info with delayed ba stats are stored and stats are updated later
on receiving BAR.

Change-Id: I574dd94d5a7db2160953b5d5d302eff18f4f8648
2019-08-05 16:46:06 -07:00
Mainak Sen
9550273ede qcacmn: Rx Sw Descriptor allocation should be configurable
To make Rx Software descriptor allocation configurable for each radio,
new ini variable is added.

Change-Id: Ifc5683629747a6fe8238c18448695abe91876ec5
2019-08-05 16:45:59 -07:00
Ankit Kumar
1c69ca1112 qcacmn: Added rx errors and dropped stats
Rx dma error and reo error are accumulated at pdev level.
Rx error consists of:
 - desc_alloc_failure [No free desc available]
 - csum error [IP/TCP_UDP]
 - mic_err
 - rx_dma_error
 - reo_error
Rx dropped consists of:
 - msdu_not_done
 - mec
 - mesh_filter
 - wifi_parse
 - non_rx_drop
 - non_radiotap_update_err

Change-Id: I4166a32ce94630e8a3ccad7a2551eedf9493e292
CRs-Fixed: 2499563
2019-08-05 09:31:50 -07:00
Varun Reddy Yeturu
8119e1236e qcacmn: Do not setup peer reorder queue if roaming in progress
Do not send the WMI command WMI_PEER_REORDER_QUEUE_SETUP_CMDID
to target if roaming is in progress, as there is a discrepancy
in peer information between the host and firmware when roaming
is in progress

Change-Id: I8e91635b56257bb29972898a29c454123f7cdb8e
CRs-Fixed: 2490238
2019-08-05 06:13:05 -07:00
Jinwei Chen
752e4917f1 qcacmn: add DMA address validity checking for TX data
HW access to MSDU link Ext descriptor with NULL address,
whie from host MSDU Ext pool and related ring entry history,
not find NULL address recorded. In case the MSDU Ext descriptor
has been overwritten before issue happened, add DMA address
validity checking in MSDU Ext descriptor filled from TSO
segment fragments and also buffer address in ring entry.

Change-Id: I11dc1d0211530a5f01b515473b2458df15a5f4cc
CRs-Fixed: 2498359
2019-08-05 06:13:01 -07:00
Varsha Mishra
1530697064 qcacmn: Define new lock to access special peer list
Define new lock to access special peer list and make
a function static.

Change-Id: If2ddfc4ad3384a78c96618f79bebfd9f6192f50c
2019-08-02 00:43:53 -07:00
Aniruddha Paul
f4ab426805 qcacmn: Skip the Host Tx desc allocation for single offloaded radio
This changes takes care of the below issues.
1. Skip the host allocation of software Tx descriptors
   for single band NSS offloaded radio configuration.
2. Reset the reo frag destination to alternate select
   for single band offloaded radio configuration.

Change-Id: I3930f266ff9d81d876dda437b29b1ca83d542e12
2019-08-01 00:02:29 -07:00
Kai Chen
93f7e1be90 qcacmn: Add support for OFDMA UL per user info
Add support for OFDMA UL per user info such as
nss, mcs, ofdma RU start and ofdma RU size

Change-Id: Ibb4397f262d1a5df5b01d80a8a741a9b193168e7
2019-07-31 19:43:56 -07:00
Varsha Mishra
6e1760c2c4 qcacmn: Handling vlan tagged frames for multipass phrase feature
1. Remove vlan tag in tx and enqueue to hardware.
2. Add vlan tag in rx after peer-vlan_id lookup.

Change-Id: I932202540ac03cabdd20ffd4849fe759ea8a7abb
2019-07-29 09:55:41 -07:00
Prathyusha Guduri
abac9eedad qcacmn: Add tx sw internode queue ini config
Add tx sw internode queue ini config that is used by NSS offload mode

Change-Id: I8236a289aa33aaa6bfd1af2ff326438042636139
2019-07-29 04:31:13 -07:00
Prathyusha Guduri
f1f12acb9c qcacmn: Add tx desc device limit
Limit the total number of tx descriptors allocated using tx_device_limit
ini configurable parameter.

Change-Id: I00b4aa089b235e45bc6c445c57ce32b977d872c3
2019-07-29 04:31:09 -07:00
Prathyusha Guduri
aed67e197c qcacmn: Add tx device limit
Add tx device limit configurable from INI.
This is used to limit the overall tx descriptors used in the device

Change-Id: I51e9611ca14bdc146de914317b38b98329130c9f
2019-07-29 04:31:05 -07:00
Prathyusha Guduri
36ce817b7e qcacmn: Add dp_tx_desc_limits ini config
Add dp_tx_desc_limit for 5G high, 2G and 5G low to limit the
number of software tx_desc to be allocated.

Change-Id: If97e858b73aafaed0e21fc8f6e0337e467ce0ecc
2019-07-29 04:31:01 -07:00
Ankit Kumar
b5029b0a9c qcacmn: Add rx_errors stats
Update rx error stats. It is a summation of below failures:
 - desc_alloc_failure [No free desc available]
 - csum error [IP/TCP_UDP]
These failure stats are updated at pdev level and no need
to aggregate this.Directly add at pdev level and export.

Change-Id: I0a5fa8f972babf092163f3cb2d0093547ded4877
CRs-Fixed: 2496037
2019-07-29 02:22:50 -07:00
Manjunathappa Prakash
9713759668 qcacmn: Deliver nbuf list with NULL terminated
Handle only single nbuf in dp_rx_deliver_to_stack_no_peer. Make sure to
terminate nbuf->next = NULL before delivering it.

Change-Id: Icec76da3b5c5cfd2682489db51cd115e8bc9b830
CRs-Fixed: 2497966
2019-07-28 12:38:32 -07:00
Yue Ma
e92fe029df qcacmn: Do runtime pm sync resume when printing ring stats
Printing ring stats from requesting txrx stats needs access PCIe link
so make sure it is resumed by doing a sync resume if it is runtime PM
suspended. Also response of h2t_ext_stats_msg from FW is not guaranteed
so tag it properly so that in HTC layer, corresponding "put" API will
be called right after sending the packet.

Change-Id: Idc5797b38557ed5779d920c72200b9d28769ab58
CRs-fixed: 2487521
2019-07-27 18:21:26 -07:00
Akshay Kosigi
8eda31cab3 qcacmn: Remove void ptr usage in HAL
Add code to replace usage of void pointers from
HAL layer and instead use appropriate opaque pointers

Change-Id: Id950bd9130a99014305738937aed736cf0144aca
CRs-Fixed: 2487250
2019-07-27 13:43:07 -07:00
Akshay Kosigi
a870c6181a qcacmn: Change to clean up of void pointers
Add code to cleanup usages of void pointer usages
in DP code.

Change-Id: I0736bcc0a547d858ed02f1ee59084a44e5fe4bec
CRs-Fixed: 2487249
2019-07-27 13:43:04 -07:00
Akshay Kosigi
4002f765f1 qcacmn: Change to remove void pointer usage for HIF handle
Add code to remove void pointer usage for hif_handle
and use opaque pointer hif_opaque_softc and also use
cdp_soc for opaque DP soc handle

Change-Id: I2896f7704ffb809214c5b08756c4b8673307fd9e
CRs-Fixed: 2487247
2019-07-27 13:43:00 -07:00
Akshay Kosigi
67c8bb9e06 qcacmn: Remove void ptr usage in DP cal client
Make change to remove void pointer usage in DP cal client
instead use cdp opaque pointers.

Change-Id: Ie966ebb7b6bb937d4ee1d6dce3b040804e61ac37
Crs-Fixed: 2484412
2019-07-27 13:42:56 -07:00