نمودار کامیت

4031 کامیت‌ها

مولف SHA1 پیام تاریخ
Ananya Gupta
789b303c02 qcacmn: Clear number of users per ppdu in monitor mode
Currently, when a new ppdu is received, num_users per ppdu is
not getting cleared after every ppdu is processed. Hence, in OFDMA
cases the number of users increments for each ppdu and asserts when
number of users exceed the OFDMA_NUM_USERS.
To fix this, clear num_users when the ppdu is processed from status
ring in monitor mode.

Change-Id: If2598486338650342b83d65f2d5410a73c38c006
CRs-Fixed: 3664999
2024-03-19 15:06:36 -07:00
Amit Mehta
03f346bc1e qcacmn: Add changes to distinguish between LPC and STA+MON
Currently there is no way to distinguish between
Local Packet Capture and STA+Mon mode as both mode
uses same monitor interface. So to distinguish between
two mode in local_packet_capture enable case use
mon_flags which can be passed during monitor interface
add time. If "flags otherbss" is passed during
monitor interface add driver will consider current mode
as STA+MON mode, LPC otherwise.

Change-Id: I56a724697bb187d0b809b6c43c7b5bf4b7d15ca7
CRs-Fixed: 3739438
2024-03-18 01:57:08 -07:00
Amit Mehta
0d61faf9e7 qcacmn: Add changes to store monitor interface flags
Currently STA+Mon mode is not supported in LPC case
as both mode uses monitor interface to capture
packets. So to distinguish between two different
monitor modes add changes to store monitor interface flags

Change-Id: Ied43fa50adac200bed47a4044245baca4d6cc84f
CRs-Fixed: 3739291
2024-03-18 00:36:58 -07:00
Amit Mehta
117e50a841 qcacmn: Reset monitor mon filters to init state
Currently during local packet capture filter reset
mon_pdev monitor filters are not reset to default init
state, which can result in issue in STA+Mon case as
packets will not be routed to monitor rings.

So to fix the issue reset mon_pdev monitor filters
to init state on LPC filter reset.

Change-Id: I45c354381405427ef28eee6a31fae4f54c4ab5ab
CRs-Fixed: 3739278
2024-03-11 09:08:53 -07:00
Amit Mehta
f4dda761c5 qcacmn: Add changes to log peer unmap event count
Currently host does not maintain peer map and unmap
event count, due to which its difficult to check
if host has received peer unmap events for all peer map.

To fix the issue maintain peer map and unmap count and dump
stats in case of duplicate peer map event.

CRs-Fixed: 3707115
Change-Id: I8881cc35646ba4abcc9897b71ed462a5e2c3dfb4
2024-03-05 23:21:02 -08:00
Yu Tian
60d9ef02ec qcacmn: Add verbose log for RX frame dropping
Now only error counter is present in normal
datapath RX frame dropping. This change add
verbose log for easy debug.

CRs-Fixed: 3706290
Change-Id: Iae2fb9f6100109173921c4f1d43258a0722dc0de
2024-02-19 20:15:26 -08:00
Ananya Gupta
e6b555af3c qcacmn: Rate limit desc sanity failure log
A crash was observed as the desc sanity failure log
exceeded 500 logs per second.
Rate limited the ring descriptor log to fix this.

Change-Id: Ic0d13bc48d05bfb3e2b715e4881e0e8b0329f572
CRs-Fixed: 3715208
2024-02-14 23:12:16 -08:00
Rakesh Pillai
e406fb3ff4 qcacmn: Fix TID arg passing to dp_peer_rx_reorder_queue_setup
dp_peer_rx_reorder_queue_setup accepts a tid_bitmap as argument,
whereas the API dp_peer_rx_init_reorder_queue is passing only TID value.
This leads to rx_tid setup failure and thereby the BA window size is
set to 1 resulting in lower wlan throughput.

Fix this by passing the tid_bitmap to dp_peer_rx_reorder_queue_setup.

Change-Id: Ic8ab5615e0d2650e3077ed3a26ee68193ddc9787
CRs-Fixed: 3702382
2024-02-12 22:22:55 -08:00
Manikanta Pubbisetty
7e58813e0e qcacmn: Optimize force free logic in dp_find_missing_tx_comp()
Currently during runtime suspend, in dp_find_missing_tx_comp(),
TX descriptors are freed forcefully if the TX completions for
those descriptors do not arrive within 60 seconds.

In certain rare corner cases, there is a chance of TX buffer (that is
in the enqueue path) getting freed in the TX completion path due to
delayed completions. This results in NULL pointer dereference.
Following is the sequence of events for such a case,

1. dp_find_missing_tx_comp() frees a TX descriptor
2. Different buffer gets attached to the same TX descriptor
3. Delayed completion for the previous TX arrives and frees
   the buffer in point 2.

Defer the free in dp_find_missing_tx_comp() when there is a delta in
HP/TP for the TX/COMP rings. If HP & TP are not same, then there is
high chance of processing the delayed completion beforehand, thus
avoiding the aforementioned race.

Change-Id: Ia835928f85ea0f79d0187a55333cb8959d0a72e9
CRs-Fixed: 3721341
2024-02-12 05:21:10 -08:00
Dolly Kumari
24cd0c2bae qcacmn: Update no. of DWORDs for htt_tx_msdu_desc_ext2_t
This change is to update no. of dwords for htt_tx_msdu_desc_ext2_t
as new dwords have to be added by FW to pass
rx buffer address info to support opt_dp_ctrl.

Change-Id: I3edb0a32a1e340d715c00776254ab50aca93c4e0
CRs-Fixed: 3717471
2024-02-07 11:24:29 -08:00
Karthik Kantamneni
7e541922fe qcacmn: Wait for all the txrx tasks completion after rings drain
After draining txrx rings there is possibility of reg work
getting triggered to update rings write pointer, this
might cause the reg work to execute later after suspend
complete and cause allow suspend and prevent suspend count
to go out of sync. So make sure all the txrx dependent
tasks are complete after drain.

Change-Id: I30b0696cef4499cc1e92b4556488b58037520184
CRs-Fixed: 3717885
2024-02-06 03:35:13 -08:00
Manikanta Pubbisetty
e6fec28c32 qcacmn: Allocate memory from heap for NBUF references
Currently a fixed size array of 2K is used to hold the NBUF pointer
references for RX refill thread NBUFs. Since the queue length of the
NBUF queue is a compile time config, any length change beyond 2K
would result in overflow errors.

Allocate the memory for NBUF references dynamically instead to avoid
such overflow conditions.

Change-Id: I20680768faf20d7688ce33f68ce2aa2be2079be0
CRs-Fixed: 3707803
2024-01-19 12:22:19 -08:00
Yu Tian
9ae6559c96 qcacmn: Separate Peer state get call from fast path
Peer state could be queried from both fast path and
slow path. Change separates this call and allows log
print from slow path call.

Change-Id: Iad2cc209e15fe95366cd606c5daa6233f2c5535e
CRs-Fixed: 3700370
2024-01-17 00:37:50 -08:00
Rakesh Pillai
a5c5711971 qcacmn: Add vdev delete notify callback
Add vdev delete notify callback for DP vdev, which
is called when dp_vdev is freed. This will notify
the osif/non-cmn dp layer upon dp_vdev delete.

Change-Id: I22110ebd048066e84644c04b4903c50dd61c61a4
CRs-Fixed: 3696638
2024-01-17 00:37:37 -08:00
Yu Tian
be177477de qcacmn: Check RX rings empty after received WoW ACK
After received WoW ACK from FW, there should be some RX packets
coming and IRQ delayed, if these packets are not got processed,
FW UMAC will crash. Change adds an explicit check and abort suspend
if rings are not empty.

Change-Id: I758e1b71d0f5fc9be8cab1bea0f3db20c1698ecc
CRs-Fixed: 3693657
2024-01-15 00:33:16 -08:00
Karthik Kantamneni
743218686f qcacmn: Fix uninitialized mon status desc pool lock issue
Currently Mon status ring resources allocation and cleanup
is not in sync, during cleanup we are freeing more than allocated
for single MAC solutions like QCA6750.

Fix this by cleaning mon status ring resources properly for single
mac QCA6750.

Change-Id: I8c8564d106fda29f7a6a36f887aa3adee9dc1edf
CRs-Fixed: 3693448
2024-01-08 01:33:28 -08:00
Yu Tian
803410c7fc qcacmn: Avoid using smp_processor_id when preemptible
Use qdf_get_cpu() as it takes care for disabling preemption.

Change-Id: I5ddbfd6f75b1659a193238858056937df36db86d
CRs-Fixed: 3691399
2023-12-27 11:42:07 -08:00
jinbao liu
cf8f844d0c qcacmn: Fix an array index out of bounds issue
Sometimes when the stats of MLD_PEER is requested, Access
Violation may occur because peer_stats[1], which does not
exit, may be accessed. This change fixes this issue by
aggregating the stats of all link_peer into peer_stats[0].

Change-Id: Ib8138d4b95bef39b084756dd9f9ffae67967100a
CRs-Fixed: 3678284
2023-12-20 18:30:54 -08:00
Yu Tian
efc1a90bed qcacmn: Add handler for REO HW queue map failure
When REO HW queue DMA maps failure, there is no
log output. Change will give more retires for such
map failure and output error log at last.

Change-Id: I11d6439b74fd4423441f3e0ce0ce18a4ee762e4b
CRs-Fixed: 3671197
2023-12-20 12:40:18 -08:00
Yu Tian
2a709c7cec qcacmn: Add parameter to support drain RX rings only
Add a parameter to support drain RX related rings only.

Change-Id: Id30e92646698bd6b409468c98934a1716763d1e3
CRs-Fixed: 3675835
2023-12-11 00:04:31 -08:00
jinbao liu
b4f2073ac3 qcacmn: Optimize rx reorder queue setup
This change optimizes rx reorder queue setup by using
tid_bitmap, which contains a group of tids, to set up
multi tids at a time instead of one tid after another.

Change-Id: I161b0c812c436ef79d2d1db693b8d0ac41505878
CRs-Fixed: 3661593
2023-12-08 15:22:17 -08:00
Venkateswara Naralasetty
958e0db9af qcacmn: fix out-of-bound issue in scattered list setup
Fix out-of-bound issue in scattered list setup.

Change-Id: I8a0c419227de3613d70229e1b6364d7e46dfbf7b
CRs-Fixed: 3664082
(cherry picked from commit 754a729a834a4a1661afaf38ca19be3161fcfd6f)
2023-12-06 06:58:03 -08:00
Rakesh Pillai
d149d2a2e8 qcacmn: Do not unmap buffer if MSDU done is not set
Currently if the msdu_done bit is not set in the
rx_pkt_tlvs, the buffer is unmapped and freed.
There was an issue seen where hardware accessed a
buffer address, which probably was delivered to driver
without DMA of data to the buffer (thereby unmapped
and freed before hw attempted second access). This
results in unwanted recovery.

Based on the above hypothesis, add a workaround
to skip the unmap-and-free of any buffer for which
the msdu_done bit was not set in the rx_pkt_tlv.
Also mark the corresponding rx_desc as in_err_state.

The rx_desc corresponding to such aforementioned
msdu_done failure msdus are stored in a rolling
list, where the old entry is force unmapped & freed
when a new entry needs to be added. This force
unmap-and-free of the oldest buffer gives an uncertain
amount of delay between it being reaped from rx ring and
actual unmap-and-free.

Change-Id: Ibf8f3c886118d532af818466cb46218d88146271
CRs-Fixed: 3667674
2023-11-28 04:08:22 -08:00
Rakesh Pillai
5ffa24be87 qcacmn: Record msdu done fail buffers history
Record history of all the buffers where msdu_done
bit was not set.

Change-Id: Ibfe985cc8ecfed57eae2db26ef337c95ca4233c8
CRs-Fixed: 3662200
2023-11-27 08:55:05 -08:00
Rakesh Pillai
f7d4e2a300 qcacmn: Do not re-init rx_tid for non-first link peer
As per the current design, the rx_tids are shared across
all the link peers belonging to the same MLD. The rx_tids
are allocated and referenced from txrx_peer, which is common
for all the link peers.

But during the peer_setup, which happens during the initial
connection or during link switch, these rx_tids are being
initialized(or reinitialized) every time for each link peer.

This leads to a situation where:
1) The rx_tids may get re-initialized during the 2nd/3rd/subsequent
link peer setup, even after the BA session has been established via
the first link, thereby setting incorrect BA window size and other
BA parameters for all the non-first link peers. Even the BA session
status will be reset, which can lead to issues for fragmented packets
aggregation.

2) After link switch, when the new link peer is setup, it will be
setup with a default BA window size of 1, when the actual BA window
size has already been established earlier, thereby indicating
an incorrect BA window size for the switched-in link peer.

In order to mitigate the above mentioned issues, the full setup
of tids will only be done for first link peer. For all subsequent
link peers, only the re-order queue setup (wmi notification to fw)
will be done. Also, during the re-order queue setup for all the
non-first link peers, the BA window size will be updated from the
rx_tids in txrx_peer (if the BA session is active).

Change-Id: Ia3f7516ba6efd1014648ead1730712834f450c42
CRs-Fixed: 3657693
2023-11-27 00:31:55 -08:00
Chaithanya Garrepalli
4620e06006 qcacmn: Handle race between WDS add vs peer delete
In case where WDS ast entry is added and next hop
peer is deleted even before PEER map for ast entry
is received free the AST entry

Change-Id: Id65a5649665588e98f85fd0f363bc7d114c56828
CRs-Fixed: 3650748
2023-11-14 12:11:31 -08:00
Neha Bisht
1dfef842a7 qcacmn: Remove prefetch of nbuf data and nbuf length
Remove prefetch of nbuf data and nbuf length since impacting KPI

Change-Id: If4dd3259394dfe37294324a6b66ebbae1ce3eeda
CRs-Fixed: 3657800
2023-11-12 15:23:43 -08:00
Jia Ding
813e5ff2ec qcacmn: Ring IPA TX doorbell with HW HP value
Ring IPA TX doorbell with HW HP value to avoid out-of-sync
scenarios between WLAN and IPA after IPA pipes are disabled
and then re-enabled.

CRs-Fixed: 3479426
Change-Id: Ia88c0228759e241722fe31fd1a252e70484684e9
2023-11-12 15:23:31 -08:00
Rakesh Pillai
a7fe389b77 qcacmn: Fix local_link_id assignment for link peers
Currently the local_link_id is assigned to each
link peer, during peer setup, with an incremental
number, based on the number of peer setup being
done for the link peers corresponding to the same MLD.

The above logic does not handle the link switch case,
where any particular link peer can be created and deleted
multiple times, thereby leading to 'n' number of peer
setups, each assigning an incremental number as the
local_link_id to the link peer. Due to this the local_link_id
value will exceed the MAX_MLO_LINKS ceiling value, and
when this local_link_id is used to set the frequency band
it leads to an out-of-bound array access.

In order to fix the above mentioned scenario, maintain
a mapping of link peer mac address to local_link_id inside
the txrx_peer (common for all link peers) and use this mapping
table to get the local_link_id. This will make sure that during
any link re-purpose, the link peer being setup will regain the
local_link_id which it was assigned during the first time it was
setup.

Change-Id: Ia78413efe328c81bab74b3a048214d3807b6c6c4
CRs-Fixed: 3658539
2023-11-10 02:48:05 -08:00
Kenvish Butani
74e7f3c660 qcacmn: Fix 3addr mode Ping failure
Ping fails if the AP VAP is not a  part of
bridge as it missed the DA Peer checks
Fix is to move the check of MLO dev ctx
after DA peer validation

Change-Id: I3386bd6a4c9a3574893bc836278d9fb02254645b
CRs-Fixed: 3653128
2023-11-10 02:47:52 -08:00
Ripan Deuri
4f68328df1 qcacmn: WDS AST entry cleanup in host
Host can disable AST indication from FW for WDS peer.
In that case there will be a mismatch in AST entries deleted
by host and by FW. Add check to print mismatch when AST
indication is enabled.

Change-Id: If0fb6dce58a95403a0d67db8ca8cf94946455002
CRs-Fixed: 3654166
2023-11-10 02:47:40 -08:00
Rakesh Pillai
b9881b700b qcacmn: Fix nbuf sanity failure handling in wbm error path
Currently when processing the WBM error entries, if there
is an nbuf sanity check failure, i.e. paddr in the srng
entry does not match the paddr from the rx_descriptor, then
the rx_desc flag "unmapped" is being set, without the nbuf
being unmapped and the rx_desc is getting added to the freelist.
This results in the rx_descriptor being replenished with a
new buffer, and the existing nbuf is leaked (without being unmapped).

In order to fix this issue, do not modify any fields of the
rx_desc, since it will be moved to err_state, due to the
sanity failure. Also this rx_desc will not be added to the
freelist, since it should not be replenished due to err_state.

Change-Id: I394cbf884488e75423ada2ad69087c5280bc0ab0
CRs-Fixed: 3656509
2023-11-07 19:05:33 -08:00
Amit Mehta
40d1805fce qcacmn: Add changes to update band info in txrx_peer NULL case
Currently if txrx_peer is NULL in Tx completion or rx process
band update will not happen, which will result in invalid band
issue during connectivity logging.

To fix the issue maintain local link id and use link id to
find link peer and update band information in nbuf cb
based on peer frequency.

Change-Id: Ia5a6001fbc167a497660dc7be39a3e641dd28896
CRs-Fixed: 3654696
2023-11-03 10:10:11 -07:00
Pavankumar Nandeshwar
c71f2aaf75 qcacmn: Clean up global desc pool during Umac reset
Make sure that the global dp tx desc pools are cleaned
up only once during MLO umac reset.

Change-Id: Id6e0ac6532b11ffb9ea190b6ab4d481fb486d853
CRs-Fixed: 3647660
2023-11-03 10:09:59 -07:00
Amir Patel
136b01ad6b qcacmn: Introduce monitor 2.0 packet processing flag
QCA_MONITOR_2_0_PKT_SUPPORT is introduced for packet
processing code.

Change-Id: Ib4de57e3e74ca9161d0cb7e3507f9c28d06b8654
CRs-Fixed: 3647037
2023-11-03 10:09:48 -07:00
Rakesh Pillai
ab914e6f3e qcacmn: Handle stale entry in tx completion ring
Currently SW writes a magic number in the tx completion
ring descriptor after reaping from the ring. This magic
number is used to determine, if the HP of the srng has been
updated without the contents of the ring descriptor has been
written.

There were cases of such stale entries observed and as a SW
workaround, add a logic to wait for a specific timeout for
the contents of the ring descriptor to be updated before
moving on to process subsequent ring entries.

Change-Id: I17c0dc0ac55ca81dee3c0825ce934d60ccb1a720
CRs-Fixed: 3648443
2023-11-03 10:09:13 -07:00
Rakesh Pillai
8f913be763 qcacmn: Save paddr of the prev buffer attached to rx descriptor
One instance of an issue was observed, where there's an
SMMU fault due to an access to paddr, which has been unmapped,
but is shown as active/mapped from the rx_desc data.

Save the paddr of the previous buffer attach to the rx
descriptor to aid in debug. This is to confirm if the
paddr has got updated after the last replenish.

Change-Id: Ib8318883b273be8b722cefec16d18b45daf679a7
CRs-Fixed: 3642902
2023-11-03 10:09:01 -07:00
KARTHIK KUMAR T
18f8a249da qcacmn: Flush the reo rings before cache flush
Flush the reo rings before cache flush during primary tqm change

Change-Id: I99e705a42411b14ed2e28d8ae96aa7c8b4d2a3d1
CRs-Fixed: 3592386
2023-11-03 10:08:36 -07:00
Jinwei Chen
ed6975b47a qcacmn: Reset Mon RX PPDU status at the end of Mon status processing
Scenario:
STA connected to AP and another monitor interface is up,
monitor status ring filter will be configured. If TLV TAG
WIFIPHYRX_GENERIC_EHT_SIG_E is reported in monitor status
buffer, each single status buffer processing will add 1 to
ppdu_info->rx_status.num_eht_user_info_valid, but it never be
reset to 0 in this case. once > 4 times this kind of monitor
status buffer is processed, num_eht_user_info_valid will be
OOB of array ppdu_info->rx_status.eht_user_info.

Reset PPDU RX status when finished processing PPDU RX status.

Change-Id: Ie58e45b3a39b7b88b0f72df2ac3076ddf659147b
CRs-Fixed: 3649604
2023-11-03 10:08:25 -07:00
Srinivas Girigowda
a9395459c0 qcacmn: Fix for missing M2/M4 connectivity log
Issue is: During roaming when tx completion status for M2/M4 frames
are received before peer_id mapping is done, opmode is left to its
default value QDF_MAX_NO_OF_MODE. Because of this opmode value
connectivity log is skipped.

Fix is: In tx completion status path, if peer is NULL then derive
the vdev from the tx descriptor vdev_id, extract and set op_mode.

Change-Id: I4a15b01e792bf26276f529e64c67b0ba3ea5c9ac
CRs-Fixed: 3646119
2023-11-03 10:08:13 -07:00
Amit Mehta
92aea0f061 qcacmn: Fix band info update issue in error case
Currently during error process band is updated if txrx_peer is valid.
but in current logic txrx_peer was retrieved later which will always
result in condition failure and will cause band not to be update.

To fix the issue move getting txrx_peer part before band update.

Change-Id: I3ebec6d695e25c2a19304e11ec780215a26dd016
CRs-Fixed: 3648441
2023-11-03 10:07:49 -07:00
Sai Rupesh Chevuru
dbff0444e6 qcacmn: Use wrapper API to fetch the peer in multipass TX
In the case of MLO sta connection existing API won't be able
to find the mld peer resulting a traffic failure.
Use wrapper API to fetch the peer in multipass TX processing
which will search for both legacy and mld peer.

Change-Id: I161502aba224806914e54a3a04a06b75e52d65bb
CRs-Fixed: 3650259
2023-11-01 04:47:13 -07:00
Chaithanya Garrepalli
06d48f99c7 qcacmn: do not allocate TCL credit ring for BE
As BE chipsets already have 4 TCL_DATA rings
do not allocate TCL credit ring to re-purpose as
TCL_DATA ring

Change-Id: Idf3adbd6394c1a07e48418484083a6aa8946f318
CRs-Fixed: 3636230
2023-10-29 19:50:35 -07:00
Amir Patel
768fbdfce9 qcacmn: Fix assert in TxMON reap path
Avoid logic to detect duplicate cookie in TxMON

Change-Id: Ib3296aff72b016adababb9eb2818420ec49fbb79
CRs-Fixed: 3648225
2023-10-29 03:33:31 -07:00
Shivani Soni
8d4e888c77 qcacmn: Update ppe_vp profile during bank update
Update ppe_vp profile during bank update

Change-Id: I2dff11bfa66ddf3c65ff974cb42da87c78ca8bad
CRs-Fixed: 3646206
2023-10-27 07:38:10 -07:00
Jinwei Chen
e8d518c82c qcacmn: fix TX completion ring NULL pointer dereference issue
If IPA is enabled, index 1/2 in array soc->tx_comp_ring[] will
not be initialized, but initialize index 3/4 instead, if access
to index 1/2, NULL pointer dereference issue appeared.

use soc->num_tcl_data_rings as number of TX completion ring
wlan host interested, it differs between IPA enabled/disable case.

Change-Id: I92b4e2c9971f93136a9f4e60ae3de32140aa2477
CRs-Fixed: 3647677
2023-10-25 23:29:34 -07:00
Himanshu Batra
7dbcea96f9 qcacmn: MLO 3 link simultaneous tx transmission
MLO 3 link simultaneous tx transmission.

Change-Id: I1f92e49a5ea634f99e354dd02737c74bae20c483
CRs-Fixed: 3634563
2023-10-25 09:39:58 -07:00
Anirban Sirkhell
b69c6a113c qcacmn: Round-up average utilization of clients
Client utilization is computed as percentage. Round it
up to the closest integer value.

Change-Id: I324370db447fae8a462a146357b6a50510c7e0b7
CRs-Fixed: 3623584
2023-10-23 15:55:13 -07:00
Mukul Dhiman
90b7cc1e6f qcacmn: remove CONSTANT_EXPRESSION_RESULT with the constant value
remove CONSTANT_EXPRESSION_RESULT with the constant value

Change-Id: Iac209ffd93f415fff22383cb25863c73bd3be6a9
CRs-Fixed: 3631794
2023-10-23 05:59:17 -07:00
Aman Mehta
d4bf137aa0 qcacmn: Update optimization flag for rx avg rate
Update the branch prediction compiler optimization flag for
rx avg rate calculation from unlikely to likely.

Change-Id: I0abe10d27070292995e07914e75b9a137c6c91b7
CRs-Fixed: 3628056
2023-10-20 08:00:19 -07:00