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
In dp_tx_fast_send_be() fix issue while updating
hlos_tid_override bit in TX descriptor
Change-Id: I470d5140585ad3abefcb1345b52dc0caa3cf6fe4
CRs-Fixed: 3631006
Free nbuf_clone before returning from dp_tx_mlo_mcast_multipass_send.
Since this API is allocating nbuf_clone, it has the responsibility
of freeing it.
Change-Id: I7a1334a1d941ec352533e788a65596a1b12ae08a
CRs-Fixed: 3628989
Legacy SCS uses skb mark field to specify the priority i.e TID.
This feature is to be supported independent of SAWF framework.
Therefore change the order of SAWF enabled conditional check.
Change-Id: I445f697395c8140b3b9fd7f877dfa8d057f0eaa8
CRs-Fixed: 3630722
Set fast_tx when ol_stats are disabled in
ultra_fastpath to avoid Tx completion overhead.
And also includes following fixes:
cdp support to get jitter stats
cdp support to set/get vow stats
cdp support to get Sojourn Stats
Change-Id: I8bdb176edbdf210b4dedfaa117f058f57bd17241
CRs-Fixed: 3604215
Add pdev checking when processing the htt completion messages to avoid
NULL pointer dereference both in the dp_tx_process_htt_completion and
dp_tx_comp_handler.
Change-Id: I9e8129cfa297d4f2e180550c50ad8a4f1be20ee0
CRs-Fixed: 3583893
Use vdev list present in MLO device context structure to find
MLO Partner vdev.
Change-Id: I6660ab91b27474dbe80562cc763417f07a7a2776
CRs-Fixed: 3583614
Avoid asserts in data path which related to HW interactions
and instead use work arounds.
Change-Id: I86089d21c5be23784f8a077b085f3f3b8a2308e4
CRs-Fixed: 3564940
Move multicast sequence number field from
dp_vdev_be to MLO device context struct.
Change-Id: I28c3a9f4480a5da5b622f9dd2a070ac25b9b6e5b
CRs-Fixed: 3586918
Optimize tx completion processing in fastpath by adding the list of
tx descs to the free list directly instead of individually accessing
each descriptor and adding it to free list. This gives advantages of
not taking descriptor pool lock for each descriptor and rather takes
the lock only once when appending the whole list of descs to the
free list.
Also removed unused member shinfo_addr from tx_desc structure. Removal
of this member enables increase of flags type from u16 to u32 without
increasing the size of tx_desc structure. These changes improved peak
KPI by 2% in SFE mode.
Change-Id: I995de9cc08c866ad6e1cd1efc76ac2a35d40fb7c
CRs-Fixed: 3584578
Currently in htt tx completion for MLO connection
host is not converting peer id into ml peer id.
Due to wrong peer_id host is not able to find txrx_peer
due to which stats are not getting updated.
To fix the issue in case of MLO connection convert
received peer_id into MLO peer_id.
Change-Id: I2e90104053d59a319d46a2628c4e9cdcb32832a0
CRs-Fixed: 3574182
handling multicast packets in the case of proxy arp
along with MLO MCAST.
1. stamp the host inspected bit for GSN based packets.
2. trigger dp_tx_proxy_arp from the reinject handler.
Change-Id: I8aea1e4fd4e61f4cc6a5dd6d8b5151c1a9bf2fac
CRs-Fixed: 3465975
With the convergence of SCS and SAWF, do not override the TID
for legacy SCS case. Retain the value obtained using DSCP in
this case.
CRs-Fixed: 3460620
Change-Id: I19502d09f5f37376bac08eb05fcf770c71331e1c
As we are using index_look_up_overwrite field in TX
descriptor with WDS_EXT need to reset this field in
FAST TX API even in AP mode
Change-Id: I6027a2d99be715973af5f8091755f0a4a9256010
CRs-Fixed: 3450922
Add DP API to evaluate if TX ILP needs to be enabled,
it is only enabled if following two conditions are met,
(1) INI for TX ILP is enabled
(2) htt msdu index to qtype mapping table index 3 value is
HTT_MSDU_QTYPE_LATENCY_TOLERANT
Change-Id: I4d0c1103941b8b12b8441762dc6b45d28ee1df21
CRs-Fixed: 3447096
Add support to handle the extended Tx completion
statistics during direct switch mode.
Change-Id: If1b6906d5d2b3156ead8ef039524f47e763cb543
CRs-Fixed: 3431840
WCN6450 is a chip based on Rhine architecture. Unlike LI/BE targets,
chipsets based on Rhine (RH) do not have host facing UMAC HW blocks.
Their corresponding SRNG interfaces are also removed. The functionality
of these UMAC HW blocks is replaced with a software implementation in
the firmware. Communication between the driver and firmware will happen
over copy engine (CE).
Although there are no host facing UMAC HW blocks, the CE hardware used
in WCN6450 expects the host driver to use the TX descriptor (HW) format
of LI targets during TX packet enqueue. Therefore it is required to
create a new pool of TX descriptors (HW) pool for WCN6450 that is used
during TX.
The logic to create/free/init/deinit these descriptors is specific
to WCN6450/Rhine, therefore it is implemented in architecture specific
Rhine code.
Introduce new APIs in struct dp_arch_ops {} to allocate and free
arch specific TX descriptors. These ops will be no-op for LI/BE
architectures.
Also for Rhine targets, allocate/free other TX descriptors like TX EXT &
TSO descriptors as part of the arch APIs.
Change-Id: I452ac69143395881ab8580355a0f75571dc3e929
CRs-Fixed: 3381711
Reuse the tx descriptors released in tx completions
without releasing the associated skbs to reduce
the cpu utilization in direct switch mode.
Change-Id: I4ab3ac58977a626344877b8a818a4dbc4864aaf3
CRs-Fixed: 3393968
The kernel-doc script identified a large number of documentation
issues in dp/wifi3.0/be, 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: I15c8570aa1832ed053fa38f536fa36b2ca0aa56b
CRs-Fixed: 3373157
Incremented an counter when wifi FW drops the packet in DS mode
with reason as FW2WBM_TX_STATUS_DROP and we can dump it
via 260 output
Change-Id: Ieb52b0af6dca66732f34cc7f1cfba5c467e9507f
CRs-Fixed: 3383509
If TX data is TCP ACK, configure TX flow index 3 in
SW2TCL data cmd ring descriptor.
Change-Id: Ibd08b13ba8f0481aa11cd9c3dc54a49cd73674fb
CRs-Fixed: 3368303
Currently HTT_TX_FW2WBM_TX_STATUS_DROP and HTT_TX_FW2WBM_TX_STATUS_TTL
are mapped to HAL_TX_TQM_RR_REM_CMD_REM which results in the wrong Tx
status print in case HTT_TX_FW2WBM_TX_STATUS_TTL where No ack is received.
So to fix the status log issue map HTT_TX_FW2WBM_TX_STATUS_DROP to
HAL_TX_TQM_RR_REM_CMD_REM and HTT_TX_FW2WBM_TX_STATUS_TTL to
HAL_TX_TQM_RR_REM_CMD_TX to log correct Tx Fail Status.
Change-Id: If125313f6b831ce5ca0f7eec9e8e3f1a03229f16
CRs-Fixed: 3362679
Currently, we record TX musdu number and packet length, which falls into
three categories: from stack, from host and successfully transmitted. In
TSO mode, the msdu from stack will be divided into several fragments and
each of the fragment will be transmitted as an individual msdu. This change
will take TSO into account when it comes to the 3 forms of TX statstics.
Change-Id: Ie11cb7541b4e109609bf3104739a5e19f51dcc13
CRs-Fixed: 3361412
Special frames like EAPOL should not be dropped as it would cause
failure in connection. To prevent the dropping of higher priority
special frames, reserve a set of descriptors from the tx descriptor
pool.
Check the regular soc or pdev limit for the allocating tx descriptors
for the regular packets and use the reserved set of descriptors
only for the special packets.
CRs-Fixed: 3331359
Change-Id: I15532fb5e325ba6ad997090008bda8c52707a05b
1. Change the names of parameters and functions related
to direct switch feature from ppe to ppeds
2. Remove the unused ppe_release_ring
Change-Id: I5a95b1273e338f354903af98158578ac65758a8a
CRs-Fixed: 3345097
1.Add check in Tx completion path to handle
mcast packets from all ML partner vdevs
2.Handle cases where a ML mcast vdev can be
deleted and started as NON-ML vdev and
viceversa by adding reset ML mcast conf.
3.Optimized Register configurations for Mcast
at Init/Delete and Start/Stop AP
Change-Id: Iab8a5a081e2e0377509574d362754d32c5b83df2
CRs-Fixed: 3350350
Suspect HW update WBM2SW ring HP, but the ring entry contents are
not updated accordingly which then host will fetch one stale ring entry,
this makes other TX packet are freed unexpectedlly.
Add change to detect this situation earlier, if HW cookie conversion is
done, then invalidate 2nd dword for upper 32bits of VA, so next time when
reap this ring entry contents to know if this desc is updated by
HW or not. if HW cookie conversion is not done, then compare the PA in
buff_addr_info with PA in current TX desc to check.
Change-Id: I351eb4f860216fc618ff28736d4832fcec45dcc5
CRs-Fixed: 3345935
Add ring id info in TX HW descriptor event history,
this helps to map history event to corresponding HW TX
ring in multi TX queue enabled case.
Change-Id: I82dcece76b1342f4086d489ba489da7c20ea6cad
CRs-Fixed: 3294177
bank id is newly added in TX descriptor for BE chipsets. As such,
with IPA Offload enabled, IPA needs the bank id information to do
offload WLAN TX.
From WLAN perspective, bank id is designed to be used on a per-vdev
role basis. E.g. STA vdev and SAP vdev have separate and different
bank profiles.
However from IPA perspective, bank id needs to be on a per TX ring
basis, because IPA GSI FW is not able to identify STA or SAP vdev
role on a per-packet basis.
Hence initialize last HOST owned bank id profile for IPA usage.
Change-Id: I0cf71b638f5999905069aff0551d8ebeb5477e17
CRs-Fixed: 3289558