Currently the debug log for NULL peer, just gives
the REO error code info, which may not be relevant
if the error source is not REO.
Dump both REO and RXDMA push reason and error code
if NULL peer is encountered in WBM error handler.
Change-Id: I95dabb8c9de1bf95081ccb389805d3ef3376915a
CRs-Fixed: 3374313
In case of fast_recycled is set we can avoid invalidating
the complete buffer as it would have been invalidated
by tx driver before giving to recycler.
But we need to still invalidate rx_pkt_tlv_size as this
area will not be invalidated in TX path
Change-Id: I9e5202d8b251a5d59117609a705a311e499d05b0
CRs-Fixed: 3332713
Currently the mdpu_desc_info from the msdu buffer tlvs,
for 2K-jump or OOR errors, if its the first-msdu-in-mpdu.
But if this flag is incorrectly indicated, there is a chance
of decoding garbage data and accessing invalid/NULL memory area.
In order to mitigate the above mentioned issue, add a sanity
check to determine if the first-msdu-in-mpdu has been processed
once and process/drop subsequent msdus based on this flag. This
flag also helps in handling cases, where first-msdu-in-mpdu
is indicated incorrectly for multiple msdus in an mpdu.
Change-Id: I990301d5a101dc7aa71303420bf49ab6fcee27c6
CRs-Fixed: 3325334
Ideally in MLO, Rx buffers should be routed to error
rings of the SOC which owns the RX buffer or link desc
incase of any error or fragment
But in case of HW issue if the packets are routed to
partner soc. Handle gracefully instead of assert
Change-Id: Ia56188808dfd034e960e1c1345de8f760e4b05f1
CRs-Fixed: 3327959
Use rate limit print for BAR frames to in avoid of
slow processing when BAR flood happens.
Change-Id: I92063787501c8f6467a211bd2695108a9fe42724
CRs-Fixed: 3325043
Forward the 4 addr eapol packets received in
dp_rx_process_rxdma_err() to osif stack instead of network stack.
Change-Id: I1d8ff065096844ebe61974329754e54fc9d28640
CRs-Fixed: 3323480
On REO error ring only fragments should be
received and for MLO case fragments are not
supported we should not see any entries from
partner soc
Hence adding the assert to catch this case
Change-Id: I908b2dec88ec7f23fcd963d0c71515dee8865b71
CRs-Fixed: 3317715
Adding compact tlv support for QCN9224, As part of this change
Rx tlv size will reduce from 384 bytes to 128 bytes.
Change-Id: I3f42a781e42b2e696a5b25d9c5f333c8cc83b7fe
CRs-Fixed: 3274152
Currently the mpdu level flags/values are obtained
from the MPDU_START tlv of each msdu, when processing
in the RX error path.
The MPDU_START tlv is valid in an msdu only if it is
the first msdu-in-mpdu and will not be valid for all
the subsequent msdus-in-mpdu.
Accessing and using the incorrect values from the
MPDU_START tlv leads to unwanted exception/behaviour.
To fix the above mentioned issue, cache the mpdu level
information from the tlv when processing the first
msdu-in-mpdu and use it for the processing of the
subsequent msdus from the same mpdu.
Change-Id: Ic0b47716d3d428bb0b536c4ee23c1392f183d1fe
CRs-Fixed: 3306327
The rx tid setup function is called from multiple contexts.
Acquire lock before calling that function to avoid race condition.
Change-Id: I7a0443e5e09a068301de171afeb4d400bf54b1c8
CRs-Fixed: 3291079
Raw mode mpdus in REO end up resulting in NULL_QUEUE_DESCRIPTOR error.
Raw mode mpdus are not expected in REO, free them without further
processing.
Change-Id: Ica920caecf90a1107ce17836051e1019c9dfc994
CRs-Fixed: 3282836
In order to handle raw frames in mesh mode pass the valid
txrx_peer to dp_rx_process_rxdma_err()
Change-Id: I24c697c8e55533ecc6ff1992c0da7bf101c8d6cc
CRs-Fixed: 3281431
In some conditions REO error ring may have RX flood, but
there is no force break scheme for that ring process. This
leads to starvation of RX refill buffer ring and then FW
crashes due to no refill buffer. Change is aimed to force
break of ring processing and refill buffers in small batch
count.
Change-Id: I3c543ebb16bd1709e782be759c9063a356a96562
CRs-Fixed: 3262685
In QCN9224 fetch the peer meta data from the msdu end tlv
instead of MPDU start
Change-Id: Icd9420cd83e06abe5e54e9e05cc8cbf8d8312ae1
CRs-Fixed: 3245626
Currently while sending nbuf to rx fate logs
we are not removing rx tlv before sending nbuf
to logger which is causing issue of incorrect
packet type issue.
To Fix issue make changes to make sure that
rx tlv is removed and nbuf length is set
Change-Id: Ib56c8e009398b3410c43be910feb4048bfb06b54
CRs-Fixed: 3241828
Currently, the PN error message is logged with
QDF_TRACE for every occurrence of PN_CHECK_FAILED
or PN_ERROR_HANDLING_FLAG_SET. This causes a crash
due to excessive logging when there is a high number
of PN errors. Hence rate-limit this message.
Change-Id: I57bc3401ba8239151f0791040c649d372ec0a953
CRs-Fixed: 3236492
-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.
Change-Id: I443da8d7f5e1771dceb3386c4458b0da6a5e9476
CRs-Fixed: 3218236
Currently the sw_cookie is validated in RX error path
using the pool_id logic, which is not valid for KIWI target.
Kiwi target has a different logic to assign rx sw_cookie, as
compared to other legacy chipsets.
Hence this sanity of sw_cookie fails always for RX error
packets on KIWI target, and these corresponding buffers are
never released/replenished back. Eventually as more RX error
packets are received, the device runs out of buffers in the
refill ring and induces a backpressure.
Hence disable this sanity check for sw_cookie in rx error
path for KIWI target.
Change-Id: I320fcb268c1fe24695daeb4677af6cc0cbc445ed
CRs-Fixed: 3228792
Add packet logging support by registering
Rx and Tx callback functions for packet logging of
initial 32 Tx and Rx packets.
Change-Id: I91b59b7c5f65f505e3ee730c497347be28955128
CRs-Fixed: 3224881
There is a possibility where host can receive invalid SW cookie
in wbm internal error path which causes invalid rx descriptor
access.
Add a sanity check on received SW cookie to prevent the invalid
rx descriptor access. Also, add sanity check for the duplicate
rx descriptors.
Change-Id: I6400cb1fc067f4bc474f2768c18c8f7ce587fbbe
CRs-Fixed: 3220371
Currenly pool id retrieved from the sw cookie is used in rx buffer
replenish for both buffer type and link desc type in wbm internal
error handling.
In case of wbm internal error with link desc type, pool id can't be
used for rx buffers replenish because pool id notion of rx desc is
different from link desc and this could cause out of memory access
issue.
Fix this issue by using the pool id retrieved from the msdu sw cookie.
Change-Id: I7184571e1f6a67c7266335154121b345fa12b4ab
CRs-Fixed: 3214867
There is possibility of receiving invalid SW cookie
which maps to invalid rx descriptor access, to avoid such
issues validate the SW cookie before using it for fetching
rx descriptor
Change-Id: Ib90a398865c5e0afedd5804615d6df6ad5ee77f6
CRs-Fixed: 3214570
Add changes to check if current descriptor which
is being process is not already reaped. In case
if the descriptor is already process and yet to
be replenished drop the descriptor and continue.
Change-Id: I2c46b7f4e50a27e2566f0ce2d9708cecb26c38e4
CRs-Fixed: 3177257
For QCN9224 target, All the MIC failures are reported
as decrypt error from FW.
So, added changes to handle MIC failures for QCN9224
target .
Change-Id: I32e616e01e3cd6e76ef105d73fd8a87ce2c81cb9
CRs-Fixed: 3192749
Drop 3 address multicast packet on rx when vdev is
has drop_3addr_mcast enabled.
Change-Id: I726bdc9383ea6e5a052a5d754e8f48c98f9ce874
CRs-Fixed: 3163011
Currently, in STA+Monitor mode, the first MSDU in MPDU is
unmapped and goes down. This MSDU is now processed as rxdma
err packet and crashes due to double unmap as rxdma err ring
is configured as monitor dest ring in monitor mode.
To fix this, validate rx descriptor unmapped flag in rxdma
err processing.
Change-Id: Ic503aa18e2269d8bda6aaf9b349c1ad8be11dcff
CRs-Fixed: 3175972
Even if HW cookie conversion is enabled on KIWI, there is some
case HW cookie conversion might not be done by HW, check the cookie
conversion done bit and get Phy Address accordingly.
Change-Id: I4ee7ed9776086812774637f07da1e4504898c3c4
CRs-Fixed: 3153433
Few APs are sending bar frame right after sending a
packet but the packet is not received and its retry
is received with the same sequence number. As SSN
is moved ahead due to bar frame, this packet is being
dropped.
To fix this, allow all frames to get delivered to stack.
Change-Id: I17f7126c8d318415e88b037b72563cf53cb14066
CRs-Fixed: 3151908
Currently pn-check logic for OOR frames does not take into account
the security mode. For open mode case, BE hardware does not populate
current and previous pn_numbers. Hence a PN-check comparison may yield
incorrect results.
Check for secure mode, before checking for PN numbers.
Change-Id: I398872d467058bc1ee1d04c811818ea20c5aec7e
CRs-Fixed: 3129986
Initialize txrx_ref_handle for whunt bypass,
Which is complaining use of uninitialized txrx_ref_handle,
as it is not able to detect that txrx_ref_handle is
populated from another API.
Change-Id: I0f69cf4c8442a5655559622a5825d7af35b9ae5e
CRs-Fixed: 3127788
WAR for wrong length in first msdu in wbm rx error path while
handling scatter gather buffers. Get the msdu length from the
last buffer instead.
Change-Id: I869391ef5ca7005dce972013679c2143be836ecb
Move the stats parameters from the dp_peer which are used
in per packet path to txrx_peer
Change-Id: Ieb68b6950740791b37bbd2bfdc4815c3d7bc4834
CRs-Fixed: 3095637
EAPOL packets on MLO are destined to MLD mac address of the VDEV. So
we have to accept these packets as well, in case of MLO
Change-Id: If424d145341073806ba313f415e88a738360214d
CRs-Fixed: 3121164
simple Alloc is being used in RX path which avoids
certain debug logic. during free of nbuf we should
avoid this debug logic else it will report it as
double free, this will be triggered only when debug
is enabled
Change-Id: Iadb40071fb733cc4de3291784df5075d5a099a8e
Send only eapol packets to stack and drop other packets
when found in rx err path when either REO or RXDMA push
reason is set to ROUTE type.
Change-Id: If1f43426adf21f7d00f17d369cd7fde7f7f85866
CRs-Fixed: 3114312
In qcn9224, NAWDS Learning repeater mode will receive packets
with reason as HAL_RXDMA_UNAUTHORIZED_WDS.
Change-Id: I6fe8428a5f8e2bac0e1db45b87169db0bd4cc271
Multicast support for MLO
1. Following functions are newly added.
dp_rx_igmp_handler()
dp_tx_mlo_mcast_handler_be()
dp_rx_mlo_mcast_handler_be()
dp_mlo_get_mcast_primary_vdev()
Change-Id: If215f843369e6e2621ef302b924e524c86f0d30b
Following peer stats are updated in per packet Rx path:
to_stack
multicast
broadcast
In BE architecture, HW provides the support for basic vdev stats and
hence per packet stats updation of above parameters can be done only
when enhanced stats is enabled or HW vdev offload stats is disabled.
Avoiding per packet stats updation reduces CPU load and improves KPI.
Change-Id: Id7c11c025a8464951b615a7f7b006ce61db487fc
CRs-Fixed: 3067843