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
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
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
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
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
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
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
Excessive logging when dp_get_peer_state() is called is causing
power performance issues. Change log level from info to debug
in order to reduce excessive logging.
Change-Id: I752b0bd443ad6bc4431c8f25a0c483729bebaa37
CRs-Fixed: 3631190
Currently host is not printing peer info in
dp_get_peer_state, due to which its difficult
to check for what peer state is returned for
which peer.
To fix the issue print peer info in dp_get_peer_state
and print additional peer info in dp_peer_mlo_setup
and dp_peer_state_update
Change-Id: Iccaf46f1eb778c42e5039da14499b82502508727
CRs-Fixed: 3620093
Add arch ops for dp_mlo_chip_id to avoid access
of dp_soc_be struct for LI platforms
Change-Id: Idc7612ef3c517aa62668fe15e51b5e5ec74bb253
CRs-Fixed: 3582795
Currently, ast entry is not found when VDEV ALL
is there. Change is finding the ast entry when
particular vdev is passed and, also when vdev
all is passed.
Change-Id: Ib71b843c74b9a64cb15f221577ee8e2d30614973
CRs-Fixed: 3575721
peer find by mac function is getting used by
many components. so, Movng that to common path.
Change-Id: I390b86af73618661857ed80d478fe4f48bee9fe1
CRs-Fixed: 3563204
Delete and add ast entry during PTQM migration for current and new primary
peer respectively.
Change-Id: I4a640f84a5778aeff19057e027b3aae9e939487a
CRs-Fixed: 3536670
add multiple history array to keep track of mem allocation and
deallocation for qref table.
Change-Id: I9fa97fbe5a5c36509cbb5a458851a152200318a5
CRs-Fixed: 3475981
In the case of mode1 target recovery a single soc can go down,
as part of obj_map detach clear the peers if any exists.
Change-Id: I977a152eafe6659b951018f19cf2afc2431e7713
CRs-Fixed: 3512361
Call ol_peer_unmap handler when AST_OFFLOAD_SUPPORT
is enable, so that client_disconnect event can be
sent to IPA.
Change-Id: I85efb432f94310c847aeda22a99bd999957c32d7
CRs-Fixed: 3495890
Currently the code to support Multipass on SAP is
present along with the code to support WDS. Hence with
the code in its current state, we will not be able to
enable Multipass support without enabling WDS.
Move the multipass support code out of the WDS support
code, to be able to enable Multipass for chipsets which
do not use WDS.
Change-Id: Id17035f1ada9bde56ca2c61fd4688fa3454b0b11
CRs-Fixed: 3479991
Currently the code to support Multipass on SAP is
present along with the code to support WDS. Hence with
the code in its current state, we will not be able to
enable Multipass support without enabling WDS.
Move the multipass support code out of the WDS support
code, to be able to enable Multipass for chipsets which
do not use WDS.
Change-Id: Iaafa8dc4f16314d9e3e160fe01251c3684adbf67
CRs-Fixed: 3468548
Add change to manage host ast entry only if peer is found for the given
peer mac address.
Change-Id: I07bdb1e1b6db33b50f4e32896d2fcbb6aa87ecab
CRs-Fixed: 3472995
Get peer_id from peer structure to a local variable and pass to hal api
in order to avoid race condition between peer delete and peer unmap.
Change-Id: Ib6a89f1defcfc8f66c1146a330a373a760520aa7
CRs-Fixed: 3444998
As of today, dp_peer.c has the peer management and rx_tid
functionality(create/setup/remove) which is used by the REO HW.
WCN6450 does not have REO HW and dp_rx_tid functionality is not
required for WCN6450. Hence, separate out dp rx tid functionality
from dp_peer.c so that we can avoid compiling unnecessary code
for WCN6450.
Change-Id: I322823704f38ff72e485f050941be6b1254bad09
CRs-Fixed: 3383330
Call ol_peer_map handler when AST_OFFLOAD_SUPPORT
is enable, so that client_connect_ex event can be
sent to IPA.
Change-Id: I688cb95dec43180133a8948573fbd45af3cb9f33
CRs-Fixed: 3419264
Add HMWDS rem-addr support to delete AST WDS mac entries in
Beryllium chipsets.
Change-Id: I5623bac02b326d1d668ad5e1fdcfc3a9f8cbbb9c
CRs-Fixed: 3397961
In scenario where assoc peer soc id is different from
primary soc id, reset the soc to point to primary psoc.
Since unmap is received on primary soc, the map should
also add ast on primary soc.
Change-Id: I85c6ba72a217eb5350ccc072d56b36b111af4d58
CRs-Fixed: 3410916
The kernel-doc script identified a large number of documentation
issues in dp/wifi3.0/dp_peer.[ch], 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: I996764f93addfa270ef7aaedd2e23c71be287f77
CRs-Fixed: 3373168
REO_FLUSH_CACHE cmd
- flush_q_1k_desc as 1 – This will flush Queue, Q1k and QEXT in one go.
we need not give 11 cmd for each tid of the peer.
- forward_all_mpdus_in_queue to 1 in FLUSH_CACHE_CMD.
With this we need wait for aging threshold time.
Change-Id: I695ab48a50968872eb22024ba5c770f0e5a74a09
CRs-Fixed: 3384665
Changes to implement the HW recipe to flush LUT cache
before freeing REO queue in SW
Change-Id: I0168a0e8aef8245f3d2b86b601226f97c376f484
CRs-Fixed: 3384508
Add history to record the config/control events
e.g. peer create/delete/unref-delete, vdev attach/detach
in datapath.
Change-Id: Ic3c8122fca9124e41931ec445946aec5e8863434
CRs-Fixed: 3371899
Currently in dp_peer_find_id_to_obj_add while adding peer to soc
peer_id_to_obj_map list, if peer entry is already present for the
peer_id due to no umap event for older peer, driver calls QDF_ASSERT
and returns, As QDF_ASSERT is NOP it results in older entry still present
in the table. which results in peer leak issue as while doing peer unamp
driver gets peer from soc peer_id_to_obj_map table based on peer id,
Since older entry is still there older peer will be freed and new peer
unamp will not happen.
To fix the issue call qdf_assert_always if peer entry is already present
for peer id which will always assert and add additional logs to print
peer information.
Change-Id: Ic777e9c7881fcbc67f54002bd619a8e6d52de126
CRs-Fixed: 3369736
set rx_reo_queue_desc_addr_31_0 and rx_reo_queue_desc_addr_39_32 to 0
in hal_reo_shared_qaddr_write_be
Change-Id: Ib92775e0883b68f49c27e606e762384239bae955
CRs-Fixed: 3339043