Commit Graph

107 Commits

Author SHA1 Message Date
Yeshwanth Sriram Guntuka
4dc955351e qcacmn: Move prealloc DP descriptor types to QDF
Move prealloc DP descriptor types to QDF so that
the macros can be used in HIF layer.

Change-Id: I3de60876735e5aa37d80e9e698a86503b18574c1
CRs-Fixed: 3502615
2023-05-26 16:06:57 -07:00
Srinivas Girigowda
c953dbb12d qcacmn: Avoid array out of bound access
Avoid array out of bound access by validating monitor channel band value.

Change-Id: I3b9c272e1fcf0d83a8d08884037af1eeed0a87ce
CRs-Fixed: 3501636
2023-05-20 04:03:37 -07:00
Srinivas Girigowda
48cf24b446 qcacmn: Remove trailing newline from the DP Logs
Remove trailing newline from the DP Logs.

Change-Id: Iaf54e57fb44cf7c15d82bd5c0ffb3fc7c3d04a2b
CRs-Fixed: 3492501
2023-05-18 18:42:08 -07:00
Srinivas Girigowda
08ea5c2b80 qcacmn: Add support for local packet capture running
Add support for local packet capture running.

Change-Id: Id954c57a32210c180a8e0f9107e2469f96491173
CRs-Fixed: 3415816
2023-05-10 11:51:09 -07:00
Srinivas Girigowda
13554f0cdc qcacmn: Add support for local packet capture stop
Add support for local packet capture stop.

Change-Id: Ib12574f5b418ea009ec35ef85e170bc8c592c86f
CRs-Fixed: 3415812
2023-05-10 11:50:54 -07:00
Srinivas Girigowda
5d8e550bb7 qcacmn: Add support for local packet capture start
Add support for local packet capture start and relevant changes.

Change-Id: I709e41e0be09cf73e93694efc59bfefbf51fe359
CRs-Fixed: 3415788
2023-05-10 11:50:28 -07:00
Jeevan Kukkalli
794367b541 qcacmn: Return missing link and mon desc and free associated buffers
It is observed that in some corner cases msdu count received
in montior destination ring descriptor is unreliable as a
result some of the link descriptor and associated monitor buf
descs are not returned. This change return such missing link/buf
descriptors and free associated buffers.

Change-Id: Iaad476b8e7a0372122981fd29c1f6e4685137817
CRs-Fixed: 3483157
2023-05-04 04:35:03 -07:00
Amit Mehta
5cfdbdb306 qcacmn: Force flush monitor destination ring
In the monitor mode case if some entry status entries are
not received then after the next monitor interface up host tries
to process pending old destination ring entries. As host drops
1 destination entry after processing 16 status entries if the entry
is not present in the status ring. which in case there is a high
number of old entries in the destination ring will result in the
destination ring getting full.

To fix the issue force flush monitor destination ring
during vdev delete.

Change-Id: Ie23a57add7b5bd372ab66f801e29e55cfacb5d4d
CRs-Fixed: 3411943
2023-04-27 21:29:30 -07:00
Sushant Butta
aad187e304 qcacmn: Use monitor pkt tlvs and buffer size for monitor
Use monitor pkt tlvs size and monitor buffer size
instead of data pkt tlv size and data pkt buffer size.

Change-Id: I3099f6526aa11b353c8a5178de450d48f141a461
CRs-Fixed: 3406962
2023-04-18 12:10:42 -07:00
Jeevan Kukkalli
34bcece450 qcacmn: Move cfr mon filter cdp func ptr to mon ops structure
Move cfr monitor filter cdp func ptr to cdp mon ops structure.
cfr monitor filter cdp function is different for 1.0 and 2.0
hence moving the func ptr to mon ops structure ensures that
func ptr is initialized appropriately.

Change-Id: I82b9c85e96f2f219521ae6ed908ade120081c748
CRs-Fixed: 3428791
2023-03-29 01:17:22 -07:00
Jeevan Kukkalli
5b2792536c qcacmn: Move smart monitor cdp func ptrs to mon ops structure
Move smart monitor cdp func ptrs to cdp mon ops structure.
Smart monitor cdp functions are different for 1.0 and 2.0
hence moving the func ptrs to mon ops structure ensures that
func ptrs are initialized appropriately.

Change-Id: Ic827b44f36d76349f397e5b72dec0a127f90aa7a
CRs-Fixed: 3428778
2023-03-22 10:29:56 -07:00
Santosh Anbu
d20a5a657c qcacmn: York Scan radio monitor mode bringup
Initial changes for York scan radio bringup in monitor mode.
Update monitor filter settings.

Change-Id: Ib9468f11b71d0439d0bd63526f64f454ed6b5b4d
CRs-Fixed: 3421412
2023-03-15 22:38:56 -07:00
Amit Mehta
4a4820f85a qcacmn: Fix monitor filter config
For beryllium target in monitor mode host only subscribe
to MSDU end and MPDU start tlvs, but during monitor mode
up as part of monitor filter reset host is subscribing to
all the tlvs.

To fix the issue only subscribe to MSDU end and MPDU start tlvs
on target basis

Change-Id: I1599559b1af0b5121a7c361db403da857988cc01
CRs-Fixed: 3429044
2023-03-14 10:37:33 -07:00
Rakesh Pillai
9374de2500 qcacmn: Fix monitor status ring history
Currently for the monitor status ring history,
the event type is not being logged.
Fix the event type logging in the monitor status
ring history.

Change-Id: I43f07bf9a4232a203b7a996db6038a081249ffc9
CRs-Fixed: 3425325
2023-03-10 19:42:04 -08:00
Kenvish Butani
bad3898323 qcacmn: Ini and Config command Support for MLO Link Peer Stats
Add support to enable/disable MLO Link Peer stats through
ini and cfg80211tool enable_ol stats command

Change-Id: Id1229a149befa416d060e1b07eee150e6b295abf
CRs-Fixed: 3397721
2023-03-08 07:43:00 -08:00
Aniruddha Mishra
589dcb8b89 qcacmn: Fix check for the pointer to next TLV
The pointer to next TLV in status buffer is considered
as valid, only if atleast the TLV header size is available
within the status buffer.

Change-Id: Ic222bfab4790853ee012de4b0a860ab037972ff5
CRs-Fixed: 3378058
2023-02-10 12:21:48 -08:00
Sushant Butta
42be95a6df qcacmn: Word mask TLV support for monitor
Word mask TLV support for QCN9224.

Change-Id: I9e5d6cbb32cc7469dc367f6fc4bca4ce8adc9da8
CRs-Fixed: 3368626
2023-02-08 22:56:03 -08:00
Aniruddha Mishra
099d29726b qcacmn: Add Advance monitor filter support
Added advance monitor filter support for mon v2
in cfg80211tool.

Change-Id: Iee0a3c10f4281dd6d7f9b59efa7a5807c0fb234e
CRs-Fixed: 3380845
2023-01-27 00:20:54 -08:00
Jeff Johnson
f2c2770849 qcacmn: Fix dp/wifi3.0/monitor documentation
The kernel-doc script identified a large number of documentation
issues in dp/wifi3.0/monitor, so fix those issues. In addition,
there are a number of instances where public functions have their
implementation documented instead of having their interface
documented, so move that documentation.

Change-Id: I27e14544ef88193bbfe6ee409fe58c59d6b5bea2
CRs-Fixed: 3373167
2023-01-25 23:16:08 -08:00
Aniruddha Mishra
73ff25850d qcacmn: Add m_copy wrapper in cfg80211tool
Added lite_mon wrapper for m_copy in
cfg80211tool.

Change-Id: I699f34b9eba2b547f13147e4757ccea42d60f656
CRs-Fixed: 3380811
2023-01-25 23:15:59 -08:00
Jinwei Chen
95eec89597 qcacmn: fix incorrect length setting for jumbo RX monitor MPDU
Currently for jumbo RX monitor MPDU, it will spread across multiple
RX buffers(N). host set length 112 bytes for (N-1) skbs(not include
the last skb), while the expected length should be (2048 - 400
- 112) = 1536 bytes for them, this lead to last skb length
calculation incorrectly, which will be total MPDU length -
112 * (N - 1), this will be over boundary of skb buffer room
easily.

Set length 1536 bytes for (N-1) skbs to fix it.

Change-Id: I4e73673887d5d8197cf64bed5da34a3751df1e33
CRs-Fixed: 3381528
2023-01-20 22:12:12 -08:00
Mukul Dhiman
882a13a0ce qcacmn: remove unused var in dp_rx_mon_status_1.0.c
remove unused var and declarations in
dp/wifi3.0/monitor/1.0/dp_rx_mon_status_1.0.c

CRs-Fixed: 3284798
Change-Id: Iea3f8e2213fef9d10fe20c90c2ac0017f7d17692
2023-01-08 23:18:26 -08:00
Mukul Dhiman
8a2b9325e6 qcacmn: remove unused var in monitor/1.0/dp_rx_mon_dest_1.0.c
remove unused var and declarations in
dp/wifi3.0/monitor/1.0/dp_rx_mon_dest_1.0.c

CRs-Fixed: 3284798
Change-Id: Ibfeaca928fe43e6f0cc5b52a2114708810c09805
2023-01-08 23:18:16 -08:00
Mukul Dhiman
625715ade0 qcacmn: remove unused var in monitor/1.0/dp_mon_filter_1.0.c
remove unused var and declaration in
dp/wifi3.0/monitor/1.0/dp_mon_filter_1.0.c

CRs-Fixed: 3284798
Change-Id: I289aac6ae32c22539c98d02673b9af9a48d46192
2023-01-08 23:18:04 -08:00
Mukul Dhiman
daea04e025 qcacmn: remove unused var in dp/wifi3.0/monitor/1.0/dp_mon_1.0.c
remove unused var and declarations in dp/wifi3.0/monitor/1.0/dp_mon_1.0.c

CRs-Fixed: 3284798
Change-Id: I4c4fadba6a9af9ec6fb5c886fd014bc4ebcb26d9
2023-01-08 23:17:55 -08:00
Yeshwanth Sriram Guntuka
34d893df39 qcacmn: IOMMU map and unmap RX buffers to LPASS SMMU CB
IOMMU map and unmap RX buffers into LPASS SMMU context
bank for LPASS to access RX buffers in direct link
usecases.

Change-Id: Ie72a008309e3abdf3fbc7198bb5d3af5e9497180
CRs-Fixed: 3356568
2022-12-22 00:45:12 -08:00
Rakesh Pillai
95dad4fa46 qcacmn: Add support to drop monitor destination ring entries
Currently, in case of station+monitor mode on KIWI target,
we are not attempting to drop the entries received in the
monitor destination ring, when no channel has been
configured for the monitor interface. This leads to the
monitor destination ring full condition and an eventual
backpressure on the ring.

Fix this issue, by dropping the entries in the monitor
destination ring, which have been received before the
monitor channel has been configured.

Change-Id: Ic9c432b438d0a5dce2d2bb38053c31ce508c27f5
CRs-Fixed: 3332327
2022-11-25 14:33:09 -08:00
Adwait Nayak
8775c73843 qcacmn: Enable hybrid mode for QCN9224
Enable hybrid mode specific handlers

Change-Id: I764c56c217b951424d699d6861ef8771496dd592
CRs-Fixed: 3339154
2022-11-23 04:42:49 -08:00
Santosh Anbu
c6fd7ded28 qcacmn: Enable monitor mac filter for special vap
Add change to enable mac based filter for monitor special vap.

Change-Id: Ib189071443d5a98a84d160e7043e9bc4faf189c5
CRs-Fixed: 3317599
2022-11-16 07:55:33 -08:00
Nidhi Jain
2e2003d54f qcacmn: Changes to enable CFR on special vap
This change enables CFR captures on special vap.

Change-Id: Ifdaeccf7cc2211af5a2b82feae3a0b3ee45b617a
CRs-Fixed: 3308460
2022-11-07 00:44:52 -08:00
Rakesh Pillai
559514f2b7 qcacmn: Code cleanup for one MPDU drop in monitor mode
Cleanup up duplicate code for one MPDU drop in
monitor mode.

Change-Id: Ic2f06192ec0ac27c78b5161f1d2c20b757f3b6be
CRs-Fixed: 3323287
2022-11-02 11:32:29 -07:00
Santosh Anbu
938ddb0956 qcacmn: Add mon dp ops to set monitor filter
As part of mac address filtering feature for scan radio in special
vap mode, on addition of first NAC entry or deletion of last NAC entry
the corresponding monitor filter needs to be set or reset

Add change to support ops callback function required to set or reset
monitor filter settings are runtime.

Change-Id: I916c0b246bb180363f1a181ef49618af763b261d
CRs-Fixed: 3317409
2022-10-31 13:38:08 -07:00
Rakesh Pillai
6271fe1a98 qcacmn: Fix the use of the incorrect rx pkt tlv length
Currently the monitor mode processing assumes the
rx pkt tlv to be consisting of RX_PACKET_HEADER tlv.
This assumption is incorrect in case of sta+monitor
mode, where the RX_PACKET_HDR tlv has not been subscribed.

Due to the above incorrect assumption, a certain portion
of the actual payload is being discarded, when the
rx_pkt_hdr tlvs are stripped off from the received buffer.

To mitigate this issue, use the rx_pkt_tlv length based
on the tlvs which are enabled, and configured to the
rxdma for reception.

Change-Id: I8f29db85bbd50316e3c2073ae9a2e79fd724be05
CRs-Fixed: 3318038
2022-10-28 04:58:54 -07:00
Rakesh Pillai
f533809136 qcacmn: Drop mpdus received on non-monitor PMAC
Currently the monitor mode filter settings are set
for both the PMAC. Hence it is possible that the
non-monitor PMAC (the PMAC on which monitor vdev
is not running), can receive packets and forward them
to the monitor destination ring.

The above scenario will lead to a ppdu_id mismatch
when reaping the monitor status ring and comparing
the ppdu_id in status ring with the one in monitor
destination ring, since monitor status ring will
have ppdu_id from the PMAC on which monitor vdev is
running, whereas monitor destination ring will have
packets from both the PMAC.

In order to mitigate the above issue, detect the
packets in the monitor destination ring, which are
not from the PMAC where monitor vdev is running, and
drop them.

Change-Id: I32392ceeadffd9cb7a4dd76336004a9dcbb99404
CRs-Fixed: 3318036
2022-10-27 21:11:35 -07:00
Subrat Mishra
92fc6fa7c1 qcacmn: Add control frame stats accounting support
Add control frame stats accounting support.
Accumulate both per peer BAR and NDPA counts in Tx and Rx per PPDU stats
path. Accumulate per peer RTS success and failure count only in per PPDU
Tx stats path.

Change-Id: I78fb3546cd831559e208a7330feb2eb67b9a28de
CRs-Fixed: 3313435
2022-10-20 10:55:12 -07:00
KARTHIK KUMAR T
ea38e7997e qcacmn: update RSSI specific parameters in mon pdev
Before we are updating RSSI params directly into mon_rx_status
this structure will reset every PPDU this breaks iwconfig,
wlanconfig and monitor packet RSSI values.
Fix added to storing the values in the mon_pdev.

Change-Id: I9f8fa776c65cbad84fac5e8c2f65b3fce1386e20
CRs-Fixed: 3276503
2022-10-17 16:22:51 -07:00
Rakesh Pillai
27f5c5e7b8 qcacmn: Fix mpdu re-stitch failure for fragmented wifi frames
When the length of a 802.11 frame is more than the
size of the posted receive buffers, it is split across
multiple buffers, which have to be accumulated before
submitting to network stack.

For all-but-last buffer which are used for the above
mentioned large 802.11 frame, the MSDU_CONTINUATION
flag will be set indicating that remaining data of the
same msdu has been DMA'ed to the next buffer.

The current implementation in monitor-1.0 works for
legacy chipsets, where MSDU_START tlv is available and
hence the aforementioned information was available in
all the buffers containing the large 802.11 frame.

For kiwi target, there is no MSDU_START tlv, and hence
a lot of information eg: mpdu_len_err, decap_format and
l2_hdr_offset are not available in the buffers where the
msdu_continuation flag is set. This leads to an attempt
of mpdu_restitch using incorrect data from tlv, and hence
the mpdu_restitch fails for such large 802.11 frame.

Fix this issue for kiwi target, by gathering all these
information which are available in the last buffer and
are used to process/accumulate the entire 802.11 frame.

Change-Id: I1c4fc9fd574c1c5fabc845407aa6f2d990c60906
CRs-Fixed: 3261494
2022-10-09 06:51:07 -07:00
Jeff Johnson
ebfbc0d927 qcacmn: dp: Fix misspellings
Fix misspellings in dp/...

Change-Id: I6ef7a19ee03104ae38a8a77e229b90aa80329592
CRs-Fixed: 3304682
2022-10-07 22:42:22 -07:00
Amir Patel
0fe7f4446b qcacmn: Optimize monitor mode memory utilization
a. Optimize ppdu_info memory
b. Use kmem cache for ppdu info allocation

CRs-Fixed: 3265620
Change-Id: Ieee040aa703aef8c5eee5e5a34a52ef18300b696
2022-09-06 10:23:43 -07:00
aloksing
c31daef130 qcacmn: fix compilation issue without monitor support
Compilation is failing when Monitor support is disabled
Moved monitor related API and structure to monitor header files.

CRs-Fixed: 3257872
Change-Id: Ie1b3dc16b38c88bfd73fc89aaa395d4b57a61e5c
2022-08-31 16:04:27 -07:00
Pavankumar Nandeshwar
67de6bcbfd qcacmn: Handle Umac post reset at host
Handle Umac post reset and post reset complete
events from firmware.

Change-Id: I76ac1b96f01f026535d31edcbd245b3643ecf6ee
CRs-Fixed: 3267222
2022-08-21 00:37:46 -07:00
Amir Patel
4720a30038 qcacmn: Optimize branch predictions in monitor path
Optimize branch predictions in monitor path

CRs-Fixed: 3265307
Change-Id: I7536a2fb94b350a678c123d7e0cfcd187816c96d
2022-08-12 13:49:05 -07:00
Jeevan Kukkalli
2b76805c5a qcacmn: Handle FPMO filter configuration
Handle FPMO mode filter settings configured
from lite_mon tool.

Change-Id: I9bfe70101bae7c8f55c6db95d9c36f4c1d308e95
CRs-Fixed: 3235935
2022-08-02 05:16:18 -07:00
Harsh Kumar Bijlani
eb56570ae1 Revert "qcacmn: Use qdf flex mem to allocate rx ppdu info"
This reverts commit I2318f6c5f33e5337f6398263d6717da698be7c92.

Change-Id: Ia60fe6ddb66623761c11398d89d6039c66994b66
CRs-Fixed: 3235962
2022-07-08 19:47:28 +05:30
KARTHIK KUMAR T
0365423471 qcacmn: update RSSI specific parameters in mon pdev
Update RSSI specific parameter from beryllium
specific path to common path as part of
extending feature for lithium also.
RSSI calibration parameters are received as part
of WMI event from FW, update these parameters to
monitor pdev via CDP interface.

Change-Id: I4e35d873db6d1ad03d86694a8d36decffe409a0e
CRs-Fixed: 3231120
2022-07-08 01:20:55 -07:00
Shwetha G K
56d67b3e32 qcacmn: Configure monitor ring for CFR on Waikiki
Changes to configure the rxdma ring for CFR. Move existing
API of legacy chipsets to dp_mon_1.0 and add Waikiki
specific API in dp_mon_2.0.

CRs-Fixed: 3231265
Change-Id: Id7276bb7bb7f58461c7e10a0695c3e78a1c39b0c
2022-07-05 03:18:57 -07:00
Amir Patel
59b643e25f qcacmn: Use qdf flex mem to allocate rx ppdu info
To avoid fragmentation, use qdf flex mem framework
to allocate rx ppdu info

CRs-Fixed: 3230970
Change-Id: I2318f6c5f33e5337f6398263d6717da698be7c92
2022-07-04 01:14:15 -07:00
Rakesh Pillai
d5536dade3 qcacmn: Add history to track monitor status buffer
Add history to track the monitor status buffer entry.
Currently the below 3 events are added:
- Monitor status buffer reap from ring
- Buffer enqueue to a local list
- Buffer dequeue from local list for parsing.

Change-Id: I7c17070ffee25a9a9dc4af0b48bfa8808e18887d
CRs-Fixed: 3225647
2022-07-01 16:24:22 -07:00
Nandha Kishore Easwaran
7f485d5e89 qcacmn: Split tx and rx buffer add function
Split tx and rx monitor buffer add function so that
they can be indivudually called when lite monitor mode is enabled.

Change-Id: I9996d0261f1912237bd6fa45058d410698b9fa28
CRs-Fixed: 3206170
2022-06-14 01:37:47 -07:00
Yu Wang
a9461beb20 qcacmn: refine the APIs for reap timer of monitor status ring
Since more than one components depend on reap timer of
monitor status ring, add bitmap to record the trigger
sources of the timer and refine the APIs/calling functions
accordingly.

With this change:
When a new start request comes, if the source is
CDP_MON_REAP_SOURCE_ANY, skip bit set, and start timer
if any bit has been set in the bitmap; while for the
other sources, set the bit and start timer if the bitmap
is empty before that.

When a new stop request comes, if the source is
CDP_MON_REAP_SOURCE_ANY, skip bit clear, and stop timer
if any bit has been set in the bitmap; while for the
other sources, clear the bit and stop timer if the bitmap
is empty after that.

Change-Id: Idaa7837c4b93b247ff2236aa5072d309fa9548c2
CRs-Fixed: 3190347
2022-06-13 22:54:46 -07:00