Commit Graph

2412 Commits

Author SHA1 Message Date
aloksing
b158abe417 qcacmn: API renaming for monitor module
Add prefix dp for all monitor APIs
Add mon_debug/mon_info/mon_err for logs

Change-Id: I71d49f6bcacd77f5695269817fed83337169227b
CRs-Fixed: 3006497
2021-08-12 05:32:47 -07:00
lihual
bde0001eed qcacmn: Fix a memory leak during soc attach
hif_ext_group and soc->intr_ctx[i].lro_ctx are allocated
but not free while fail to register parts of ext_group in
hif_register_ext_group, which cause memory leak. Fix is
to detach according resource before return.

Change-Id: I03ecc37437d09bf9275f128b1f2b320124a7df64
CRs-Fixed: 2988891
2021-08-11 15:50:50 -07:00
Subrat Dash
9a6927e4ed qcacmn: Add check to discard multicast echo packets
The bridge forwards the multicast packets to all the
interfaces attached the bridge.

When the STA network interface receives such packets
from bridge and send it to the AP, it is echoed back
from the BSS.

These packets are not intended for the bridge as it
will lead to looping.

Add a check to detect and drop such packets when
received back from the BSS.

Change-Id: I5a4a2a3e015df2b9c78de405d7d917216baed051
CRs-Fixed: 2997189
2021-08-10 15:39:32 -07:00
Harsh Kumar Bijlani
43da5b8892 qcacmn: Add API for unmap with physical and virtual addr of nbuf
Tx data transfer in host mode with nbuf map_unmap debug frmwk
enabled and enhanced stats disabled results in an assert.
This is because on Tx completion path, nbuf unmap is done using API
qdf_mem_unmap_nbytes_single which takes physical address of nbuf
for unmap and does not remove nbuf from map_unmap tracking list and
when nbuf is freed, it results in assert as the tracking list still
contains that nbuf entry.

In order to fix this, define a new API for nbuf unmap passing physical
and virtual address of nbuf as arguments. Physical address is passed
as an argument in order to avoid cache miss in per packet path which
eventually helps in improving the KPI.

Change-Id: I77ab6ac3ac98556b9caff8aa3ee82bc23cd26de7
CRs-Fixed: 3006671
2021-08-09 22:25:29 -07:00
Pavithra R
4a84bdb2ad qcacmn: Add dp_update_msdu_to_list function to dp_mon_ops struct
This patch adds the function dp_update_msdu_to_list to dp_mon_ops
struct. This is needed for supporting tx capture module in NSS
offload.

Change-Id: Id36aa6d1442eed4112585807e8798fc28ccdc424
2021-08-09 15:37:16 -07:00
Jeevan Kukkalli
1665e7c8e5 qcacmn: Scan radio special vap stats support
-Add flag to inidicate special vap configuration
-Add frame type counters while processing tlv
 WIFIRX_MPDU_START_E
-Add function to update special vap rx stats
-Add dp pdev param to enable/disable special vap
 stats reset
-Add function to reset special vap stats
-Add fucntion to get special vap stats
-Add CDP function to retreive special vap stats

Change-Id: Ia5de6743e472dc86c9e66b9e789c909a57025e35
CRs-Fixed: 3005425
2021-08-07 11:31:43 -07:00
Jeevan Kukkalli
2536fbaf5c qcacmn: Add function to reset mon interrupt mask
Add function to reset monitor interrupt mask.

Change-Id: If40093cc87dc02432645ec687b00fe856894238d
CRs-Fixed: 3007273
2021-08-05 08:29:02 -07:00
Rakesh Pillai
2ee6da1686 qcacmn: Disable CP Stats for BE emulation
Disable CP Stats for Beryllium emulation environment. These stats are
invoked heavily by userspace and need to be retrieved from the FW.The
userpace is holding the rtnl_lock while invoking these stats. This
prevents any additional commands to be sent while a stats command is
pending. Since in emulation environment, the turnaround time is quite
high, no iwpriv/ifconfig/iw command can be sent while the CP stats are
pending, making the driver in accessible from command line.

Hence, disable CP stats by simply returning 0 to the caller in emulation
environment.

CRs-Fixed: 2984362
Change-Id: I80aee6ce2bed1c37b964dd5e7194a66287301355
2021-08-05 08:28:58 -07:00
Mohit Khanna
47a165fe8e qcacmn: Config edits for multiple TX rings in HMT
The following configurations are changed
- Change numer of WBM2SWRELEASE rings from 7 to 8
- Use configurable RBM value when enqueuing packets for TX. This is needed
since WBM release ring numbers do not have an easy mapping to RBM values
for HMT1.0.

Change-Id: Idcf9e48e00b7039331fc1837bb1e900b12f19eb3
CRs-Fixed: 2984362
2021-08-05 08:28:52 -07:00
Mohit Khanna
c75f9cc178 qcacmn: Support multiple TX rings in DP interrupt handler
In dp_service_srngs, the current logic assumes that WBM2SWRELEASE ring
number as obtained from interrupt_ctx->tx_mask matches the index of
soc->tx_comp[] array. However this may not be true, esp for HMT.
Add logic to fix the same.

Use a separate macro to enable use of single TX ring.

Change-Id: I1bee27b800ad4e4ab1a1fe5e2b01b5b43acfe1f7
CRs-Fixed: 2984362
2021-08-05 08:28:43 -07:00
Jinwei Chen
a33021b028 qcacmn: add WCN7850 target type in dp_mon_soc_cfg_init
add WCN7850 target type in dp_mon_soc_cfg_init

Change-Id: Ifa521974681f4c548787fa9acdc1f26f82339b7f
CRs-Fixed: 3006940
2021-08-05 06:18:53 -07:00
Chaithanya Garrepalli
386738a312 qcacmn: fix the tx desc leak issue
Fix the tx desc leak issue in case of hw enqueue failure
with ME and TSO

Change-Id: Id142a3522ec6c9e25d2cc19f373e1a92de425e5a
2021-08-04 18:04:28 -07:00
Chaithanya Garrepalli
d7637a443d qcacmn: Add handling for rxdma_rx_flush and invalid psh_rsn
In WBM error path, add handling for packets received with
rxdma_psh_rsn as rxdma_rx_flush. Also add assert for packets
received with an invalid push reason.

Change-Id: I4e445d52f00bbbdca358225aef488da0e8dccaa7
CRs-Fixed: 2978262
2021-08-03 04:36:34 -07:00
Amit Mehta
e1bfd2dbdc qcacmn: Acquire lock while accessing rx tid in rx defrag store fragment
Currently, we are Flushing fragments for peer as part of rx defrag
clean up. There is the possibility that frag flush is called while
we are accessing frags in rx defrag store fragment path in parallel.
Which will cause access after the free issue.

Adding lock in rx defrag store fragment path to avoid any
parallel flush while accessing the frags.

Change-Id: Ic27caab58429d776449f4b774eb7163ffa6215ac
CRs-Fixed: 2995156
2021-08-02 10:56:55 -07:00
Shikha Bakshi
6494ed4e55 qcacmn: PN check bypass required in WEP mode as welil
There is no consecutive PN number for fragments in
open/WEP security mode so no point of dropping such frames

Change-Id: If75a99cb89c6b0997e9b07afc582c4141c277bb8
2021-08-02 01:59:19 -07:00
aloksing
c60b9619a3 qcacmn: Conditionally compile monitor related features and issue fixes
PATCH[7/7]:
This patch consists following changes:
 -Conditionally compile all monitor destination ring related code
  Macro used QCA_MONITOR_PKT_SUPPORT
 -Add QCA_ENHANCED_STATS_SUPPORT macro to conditionally compile
  enhanced stats support
 -Use QCA_MCOPY_SUPPORT and QCA_TX_CAPTURE_SUPPORT macros
  to conditionally compile MCOPY and Tx capture features
  respectively
 -Use QCN_IE macro to conditionally compile BPR
  feature
 -Use QCA_ADVANCE_MON_FILTER_SUPPORT macro to conditionally
  compile advance monitor filter feature
 -Fix vdev attach issue for special and smart monitor vap
 -Fix status ring initialization issue.

Change-Id: I0deaa28a9a54bf34b0f41e6dd510fdd8d4992db2
CRs-Fixed: 2983780
2021-07-30 21:51:26 -07:00
aloksing
53fe7000ba qcacmn: Move monitor related fields from soc/pdev to mon_soc/mon_pdev
PATCH[6/7]:
This patch consists following changes:
 -Move monitor related pdev variables to struct dp_mon_pdev
 -Move monitor relted soc variables to struct dp_mon_soc
 -Move cookie to monitor link desc va to monitor file
 -Add APIs to access monitor related variables
 -Add dummy APIs to build without monitor support.

Change-Id: I032a480b1383d061f984cee3ba6b10ac7a0ff350
CRs-Fixed: 2983781
2021-07-30 21:51:21 -07:00
aloksing
c4796962ca qcacmn: Monitor vdev and peer attach/detach
PATCH[5/7]:
This patch consists following changes:
 -Monitor vdev context allocation while vdev attach and free
  while vdev delete
 -Monitor peer context allocation while peer create and free while
  peer delete
 -Move monitor vdev timer function to monitor file
 -Move monitor reap timer handler function to monitor file
 -Move monitor timer related variables to monitor file
 -Add timer init/deinit and start/stop in monitor file.

Change-Id: I9c7910671d3678c53ca9ec44a57bc10e892008d9
CRs-Fixed: 2983994
2021-07-30 21:51:16 -07:00
aloksing
e7cc727374 qcacmn: Move core monitor and monitor dependent feature func
PATCH[4/7]:
This patch consists following changes:
 - Move core monitor and monitor dependent feature functions
   to monitor file
 - Move enhanced stats functions from htt to monitor file
 - Move vdev set monitor mode rings function to monitor file
 - Create and initialize relevant funct ptrs
 - Initialize cdp monitor related ops.

Change-Id: Iac1ab43eb1c4b98bd21bbb8a5741ee53034da2f1
CRs-Fixed: 2984635
2021-07-30 21:51:12 -07:00
aloksing
f20f31dc10 qcacmn: Move cdp_mon_ops initialization to monitor file
PATCH[3/7]:
This patch consists following changes:
 -Move struct cdp_mon_ops to dp monitor file
 -Add new function for dp monitor soc cfg initialization
 -Move full monitor mode function to dp monitor file
 -Move vdev set monitor mode function to dp monitor file
 -Move config debug sniffer function to dp monitor file
 -Move set advance monitor filter function to dp monitor file
 -Set monitor delayed replenish entries for target types

Change-Id: If8dac4eedc0c8eb4e956df34c7c3adae8712c840
CRs-Fixed: 2983939
2021-07-30 21:51:07 -07:00
aloksing
420c5b3e6f qcacmn: monitor soc/pdev attach and detach
PATCH[2/7]:
This patch consists following changes:
  -Allocate monitor soc context and initialize monitor ops
   for pdev attach/detach and init/deinit functions.
  -Move monitor rings alloc/free/init/deinit to dp monitor file

Change-Id: I97c24f28cfdad10fa1c22e5978224db196bbdd74
CRs-Fixed: 2983970
2021-07-30 21:51:01 -07:00
aloksing
f2cde4cf1e qcacmn: Move monitor files to monitor directory
PATCH[1/7]:
This patch consists following changes:
 -Add new directory for monitor.
 -Move monitor related files to monitor directory.

Change-Id: I260cd6853d72f664324c2631a1d1bb7e67eb0bce
CRs-Fixed: 2983782
2021-07-30 21:50:57 -07:00
Amit Mehta
58023bfff8 qcacmn: Compilation issue fix
Fix for compilation error unknown type name 'htt_tlv_hdr_t'

Change-Id: I8d01d6f2059599b34539b7d254fa90a98ef3a8d3
CRs-Fixed: 3003861
2021-07-30 07:12:24 -07:00
Jinwei Chen
9008f98623 qcacmn: disable WBM2SW1 HW cookie conversion
Disable WBM2SW1 HW cookie conversion as this ring is for FW usage,
FW does not expect HW cookie conversion for ring descriptor.

Change-Id: Ic4e813a21c6bb0f89d56581941e3c7ab8e3cad54
CRs-Fixed: 2994029
2021-07-29 11:49:55 -07:00
Ananya Gupta
f2851b458b qcacmn: Affine rx_err srng to all CPUs except 0
IPA and rx_err ring are processed in same CPU resulting
in low Tput.
To fix this, not allow processing of rx_err ring in
CPU 0

Change-Id: Id53a03c9290607beb1a595c84bfb0fd8d9f5d105
CRs-Fixed: 2949569
2021-07-27 01:00:14 -07:00
Linux Build Service Account
45988d32cc Merge "qcacmn: Provide free_buff to SON using WDI event" 2021-07-23 05:10:23 -07:00
Linux Build Service Account
c8b371848e Merge "qcacmn: Fix assert for flush rx ptk when vdev deleted" 2021-07-23 05:10:22 -07:00
Neha Bisht
5e326b7934 qcacmn: Provide free_buff to SON using WDI event
Provide free_buff to SON using WDI event. It is applicable only for
pre-lithium case.

Change-Id: I14fa956b06cf2d27982964865bc235f8d796d55c
2021-07-23 01:55:35 -07:00
Jianmin Zhu
8008ac5bac qcacmn: Fix assert for flush rx ptk when vdev deleted
When vdev deleted and interface down, there are pending pkts in nbuf
queue of dp rx thread in cornel cases, when flush cmd comes, even vdev
is not found by vdev id, rx stack callback isn't set to NULL, pkts are
still delivered to kernel stack, but rx queue is invalid now, assert
will happen when GRO flush happens.
Fix by setting rx stack callback as NULL when vdev isn't found by vdev
id.

Change-Id: Iad3b71dbc86563a4f8b5369474b2a901cdf8b325
CRs-Fixed: 2995694
2021-07-22 23:38:30 -07:00
Jianmin Zhu
9975a180cf qcacmn: Mark vdev as delete in process before rx flush
Mark vdev as delete in process after flush out the packets in rx thread
queue currently.
If rx packet received after flush and before mark vdev as delete in
process, the packet is enqueued into rx thread queue and not flushed after
vdev deleted physically and net interface down. After that, if flush
pkts after interface down, assert will happen.

Fix:
Mark vdev as delete in process before flush out the packets in the rx
thread queues.
If the vdev is marked as delete in progress, then the
packets received on that particular vdev should not be
enqueued to dp rx thread any more.

Change-Id: If651a9e97b8501efc26400079194570ba6407f13
CRs-Fixed: 2996534
2021-07-21 21:09:00 -07:00
Jia Ding
9304c2d00e qcacmn: Add support to calculate uplink delay
Add support to calculate uplink delay on a per vdev basis.
The delay calculated excludes bus delays, where packet
enqueueing time and complete time are fetched from HW release
ring.

Change-Id: I4bbcbf28b197f7a87cb822a841f1f957ebcf063b
CRs-Fixed: 2958833
2021-07-21 21:08:48 -07:00
Yeshwanth Sriram Guntuka
04f9725d81 qcacmn: Skip MSI cfg for monitor sts ring in MISSION mode
In MISSION mode, MSI address and data are still
configured for monitor status rings even though MCC
uses only polling mode for this ring.

Fix is to skip MSI configuration for monitor sts
ring in MISSION mode for MCC.

Change-Id: If295a5afc6731bbec1ad7182590e0015f3a911ba
CRs-Fixed: 2992167
2021-07-20 11:09:16 -07:00
Yeshwanth Sriram Guntuka
f14c5c6593 qcacmn: Avoid possible double skb_pull in no peer stack delivery
skb_set_len and skb_pull operations are done in both
dp_rx_deliver_to_pkt_capture_no_peer and
dp_rx_deliver_to_stack_no_peer. Due to this, in the
issue scenario, EAPOL frame gets dropped in roaming
scenario since qdf_nbuf_is_ipv4_eapol_pkt returns
false.

Fix is to do a skb_push_head operation in
dp_rx_deliver_to_pkt_capture_no_peer API before
exiting.

Change-Id: I071a5248f9f8577c8a21547f67ec53d707dee0be
CRs-Fixed: 2982188
2021-07-18 04:57:13 -07:00
Mainak Sen
4c655bacbd qcacmn: Separate UL and DL specific latency parameter
Mesh latency implementation should have DL and UL specific
latency parameters

Change-Id: Ib780a23503220f5f6e628cd61a032a8515d3a50e
2021-07-17 06:06:56 -07:00
Nandha Kishore Easwaran
a7c7531e90 qcacmn: Allow all raw frames without any check
Allow all raw frames to the upper layer without checking
for port authorisation. All checks in raw mode has to be performed
by the controller in case of raw mode.

Change-Id: Ica6df24b359790fcadc9bb7bbb4d7b5084930170
2021-07-17 03:57:36 -07:00
Jinwei Chen
2eb6b6ab69 qcacmn: check number of page desc during pool de-initialize
Add number of page desc check for TX/RX desc_pool de-initialization,
avoid unexpected assert in case SPT page_desc_list is not
initialized like SSR case.

Change-Id: I970f0e09a0631260e1cb0d1de23a1de3e8d13f24
CRs-Fixed: 2991334
2021-07-15 14:34:02 -07:00
Harsh Kumar Bijlani
0dcfff9b90 qcacmn: Define cdp interface struct and API to fetch dp soc stats
Define a new cdp interface structure and API for soc stats for use
by upper layers to fetch dp soc stats.

Change-Id: I314e952546551003da2ca7f69b2e1aa23c126e66
2021-07-14 15:32:16 -07:00
Manoj Ekbote
190ff6c23e qcacmn: Retrieve BSS color from TLV
In Tx monitor code, BSS color needs to be retrieved
from the PPDU TLV so that it matches the value in
transmitted packet.

Change-Id: I6e1dce3992264ebea2db37b2d9c8f156a23df028
2021-07-11 02:15:44 -07:00
Ramanathan Choodamani
ed652bf38b qcacmn: Receive SCS parameters for building peer database
This change will receive SCS procedure based parameters from
the control path and the peer will start building it's database
for traffic classification using SCS procedures.

Change-Id: I4fd7db595e0645285a95d0561eb46343238fa337
CRs-Fixed: 2970408
2021-07-09 01:56:53 -07:00
Jinwei Chen
7caa52178d qcacmn: skip HW cookie conversion initialization for FTM mode
skip HW cookie conversion initialization for FTM mode

Change-Id: I890dcf270bb42fff87b15c491d7485ef0c9660e9
CRs-Fixed: 2983003
2021-07-08 23:34:02 -07:00
Harsh Kumar Bijlani
2d5c0e2880 qcacmn: Use correct frag index in monitor restitch path
While adding amsdu padding in last buffer (in case of msdu split
across multiple buffers) or single msdu buffer, address of frag at
0th index and size of the current frag index are considered currently.

Instead the address and size at current frag index are to be taken
into consideration. Make change to use correct frag index for amsdu
padding.

Change-Id: I3c5ac11cbdb67bc5264bc62425825583158269a0
CRs-Fixed: 2907489
2021-07-08 11:38:23 -07:00
Yeshwanth Sriram Guntuka
5246cc0bf2 qcacmn: Assert only when unmapped is true in rx_desc
The existing assertions for unmapped variable in
rx descriptor results in an undesired bug_on since
the unmapped value is 0 for active descriptors.

The fix is to modify this assertion so that bug_on will
be triggered only if the unmapped value is 1 in rx
desc.

Change-Id: I03b27e0e42ce3c42b9fa148da9258063b0209b08
CRs-Fixed: 2985248
2021-07-08 00:11:22 -07:00
Vinay Adella
d86a4a60a2 qcacmn: Move NAPI stats to workqueue
When back pressure event comes from FW print NAPI stats in worker
theread to avoid cascading the issue by causing more latency in
processing the CE rings, due to the prints.

Change-Id: Ic846e06ae4b47f8ad46b269c8a175db7ed46b9bf
2021-07-06 11:55:17 -07:00
Shikha Bakshi
ebadbe6b7f qcacmn: Fix format specifier
Replace %pk with %pK.

Change-Id: Iefc1ae6de8a744bdec5a7fdbb749f8580f2c0457
CRs-Fixed: 2900997
2021-07-06 11:55:13 -07:00
Vevek Venkatesan
723721e67f qcacmn: add CDP reason code support for send_delba
Add CDP reason code support for sending DELBA request,
so protocol layer can make decisions for special cases.

Change-Id: I4e4b2e7f7232a8ab12d4c7838f97908f481dc787
CRs-Fixed: 2983553
2021-07-06 02:16:09 -07:00
Ruben Columbus
1be92c16c8 qcacmn: correct tid boundaries on error
add >= sign on values of tid where DP_MAX_TIDS is missused

Change-Id: Ib50f65705835f69ff3ca5c2b2a3edb7f8064adeb
2021-07-02 11:44:12 -07:00
Vevek Venkatesan
f49df07dae qcacmn: add support to clear the consumed HW descriptors
Add support to clear/reset the consumed HW descriptors
to zero.

Change-Id: Idccb120afa448c4f958a3177f27cab9b1197ac3e
CRs-Fixed: 2978850
2021-07-02 07:24:54 -07:00
Chaithanya Garrepalli
6332137696 qcacmn: DP init changes for QCN9224
Changes to initialize DP for Target type QCN9224

Change-Id: If9b69b79946060dd802eb0554280813186de1f7a
2021-07-02 05:02:52 -07:00
Jinwei Chen
f6d5584698 qcacmn: Refine HW cookie conversion
(1)naming change in HW CC related function
(2)refinement for cookie ID generation regardless of
SPT page address 4k aligned or not
(3)move CMEM size check under cookie conversion macro

Change-Id: Ib32d802f5512e5facfa4130826406943fb3d27f1
CRs-Fixed: 2977304
2021-07-02 00:33:58 -07:00
Karthik Kantamneni
8c19a927bf qcacmn: Skip sending WMI REORDER_QUEUE_SETUP for BAR frames
When host receives BAR frames with OOR/2K jump in sequence
number it updates REO HW with new starting sequence number
and requests F.W to setup peer reorder queue. But REORDER_QUEUE_SETUP
is already requested to F.W as part of initial add BA in host.

So while handling OOR/2K jump BAR frames don't send
REORDER_QUEUE_SETUP to F.W

Change-Id: Idc3657e901dc792f699b53c45e4ae5133d286891
CRs-Fixed: 2981280
2021-07-01 22:18:37 -07:00