Currently in dp_rx_wbm_err_process, we donot handle
HAL_REO_ERR_BAR_FRAME_2K_JUMP and HAL_REO_ERR_BAR_FRAME_OOR REO errors.
Add support for the same.
Change-Id: I22147fcd2d531c1e08214626796994593ffeb3a6
CRs-Fixed: 2580876
Reset ba_status to inactive irrespective of tid update status to make
sure the ba_status reset successfully.
And also use pe_err_rl instead of pe_err to avoid excessive logging.
Change-Id: Ifc6adc166b5093742b34dd7d74924f9d54146ea4
CRs-Fixed: 2577663
Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.
Cleanup local peer id usage from DP APIs.
Change-Id: I930e1c6a09092a373c093239632d6f310fee18e2
CRs-Fixed: 2529041
Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.
Cleanup unusued DP APIs which are based on local peer_id.
Change-Id: Idd95bc640ca7e36a427be7202935034d4ed58979
CRs-Fixed: 2529026
Remove pdev and vdev control path handles from data path.
Instead send pdev_id and vdev_id along with opaque soc
handle in ol_if_ops.
Change-Id: I6ee083f07e464f283da0d70ada70a4e10e18e1b2
Memory leak fixed in dp_rx_tid_delete_wifi3 in the case
where update cmd send fails. Add the desc to the front of
free desc list and set a flag to ensure that the update
cmd is resent from delete rx_tid callback. In the same
callback ensure that the update cmd desc is sent out first
and then proceed to free other descs by sending out the
flush cache cmd for each of those descs.
If the flush cache cmd is not sent successfully to REO,
add the REO descriptor back to the free desc list and
defer the deletion to the callback function. This update
is made under MCL feature flag REO_DESC_DEFER_FREE.
Add a soc level stat to indicate the reo send cmd failures.
Change-Id: I4e4cf47223d5325a53f2df22571895489d033ba3
CRs-Fixed: 2551028
Add debugging infrastructure to record every event posted to reo
command ring. The infrastructure maintains the record of the last
64 events posted to the ring.
Change-Id: Id56fc352050eb664a64b0abb767f3b4a6b4c3aa3
CRs-Fixed: 2552822
Currently we do not update svld with 0 on receiving
delba or during a teardown. This change sets update_svld
and resets svld flag to 0.
Change-Id: Ic5eb5732946c47d7c20230f225fbb1bf54621506
CRs-Fixed: 2514183
Rx defrag waitlist was not getting cleared during dp_peer_rx_cleanup in
the case of STA mode even though the tid was getting deleted. This
created a scenario where the next time dp_rx_defrag_waitlist_remove was
called, it was trying to access now invalid memory. If a vdev was
disconnected in the middle of receiving traffic, then the tid would be
deleted but the rx frag waitlist would not. Upon reconnecting, the
reception of the next frag would cause a crash due to the now invalid
memory in the waitlist.
Change-Id: I5bb1a31f38fa45128d0f35fafaddaf729c99489d
CRs-Fixed: 2538879
Fix to avoid race conditions between two locks
a) soc->peer_ref_mutex
b) soc->ast_lock
Right order to for these two locks is to first
acquire a) and then b)
But in ast create path these locks are acquired in
reverse order leading to deadlock.
This change helps in fixing deadlock
Change-Id: I02f802fa12d5f4e4ae3f584cdffe36c9bf717f84
Degrade log level from INFO to INFO_HIGH in function dp_get_vdevid,
this is to prevent console log output which may impact spinlock lock
/unlock time.
Change-Id: Ic1ecb2f0e2c5fcf5d15766921326a8cd80e67103
CRs-Fixed: 2522041
While draining the pending reo cmd's during wifi down,
the tid array from the peer structure is used in debug
statement.However,the peer is freed much before
the drain operation.This leads to use-after-free access.
Change-Id: Idf92ccd0fe4eba3eed8a97ac83485de8fccb0f24
Cleanup dp_get_vdev_by_sta_id to be peer mac address based
from local peer id based.
Also, modify the API cdp_peer_get_vdev_by_sta_id with additional
argument for peer mac address.
Rename cdp_peer_get_vdev_by_sta_id to cdp_peer_get_vdev_by_peer_addr.
Change-Id: I889538b5ea7ebac8973dcaaa5ebdad1ac495e791
CRs-Fixed: 2504569
Cleanup dp_clear_peer to be peer mac address based
from local peer id based.
Also, modify the API cdp_clear_peer with addition argument
for peer mac address.
Change-Id: I1bd3fab1b9510b5f1d4476e11b617fcb6417f2c4
CRs-Fixed: 2503774
In case of peer reuse case rx_tid locks are destroyed as
part of peer cleanup and are not initialized again. So while
deleting this peer as part of unref delete peer cleanup is done
which again tries to destroy the rx_tid locks which were already
destroyed. This leads to assert complaining destroying lock with
out initialization. So dont destroy the rx tid locks in case of
peer reference reuse.
Change-Id: I860de558950009cae6f62385dd665badfe9964e0
CRs-Fixed: 2504973
Cleanup dp_register_peer to be peer mac address based
from local peer id based.
Change-Id: Ifc0166b8ace5aabd7c287941476df47c806e8663
CRs-Fixed: 2503680
Do not send the WMI command WMI_PEER_REORDER_QUEUE_SETUP_CMDID
to target if roaming is in progress, as there is a discrepancy
in peer information between the host and firmware when roaming
is in progress
Change-Id: I8e91635b56257bb29972898a29c454123f7cdb8e
CRs-Fixed: 2490238
Add code to remove void pointer usage for hif_handle
and use opaque pointer hif_opaque_softc and also use
cdp_soc for opaque DP soc handle
Change-Id: I2896f7704ffb809214c5b08756c4b8673307fd9e
CRs-Fixed: 2487247
Add code to remove void pointer usage for dp_soc
and use original dp_soc structure inside htt_soc
Change-Id: Icdc26ecdb33d565c43dbc101584069808b31c1a0
CRs-Fixed: 2484403
Make change to remove usage of void pointers for
ctrl psoc in DP and instead use a opaque pointer
struct cdp_ctrl_objmgr_psoc.
Change-Id: I9fac21db1156378fc10b95cf10517afa4364da00
CRs-Fixed: 2484411
Delete WDS AST entry if the hw_peer_id is invalid in peer map
in cases where the HW exceeds the max hash skid it can support
the AST entry will not be added and as an indication of this
the host will receive a peer map event with hw_index as 0xffff
Host has to check for this type of hw_index and appropriately
delete the AST entry from the HOST table.
Change-Id: I9a135517440b9b20edd3ffd990d89876b7e34047
CRs-Fixed: 2460116
For newly created AST entry do not send AST update until
we get the MAP event for create
Change-Id: I840ef62825d4537439a4020a8a5a5547b575a664
CRs-fixed: 2468833
Add feature flags DP_FLOW_CTL for DP flowctl ops,
DP_PEER_SUPPORT_OPS to support peer handling in DP,
DP_POWER_SAVE for power saving ops in DP, DP_CON_MON DP_MOB_DEFS
DP_INVALID_PEER_ASSERT DP_PRINT_NO_CONSOLE and DP_INTR_POLL_BOTH.
Change-Id: I01dafadf6578c0b5f36ab3ef56624912fb66b100
CRs-Fixed: 2467170
Add callback to get the roaming status and do not honor addba
response Tx failure.
Change-Id: I148542fc3c629749fc08623f5041f6ca76fee298
CRs-Fixed: 2439721
Move WDS feature specific APIs out of common code
as these features are WIN specific. Keep the usage inside
common code under feature specific flags.
Change-Id: Id907a5e22c27fc47e8314449e154525684a27e85
Peer delete request and response stats has been moved to per vap
stats. The time info on assoc, disassoc and deauth was already
cleaned up, but members in the dp_peer struct weren't removed.
Change-Id: Ie4a1b171178d8ad03abd76069cc0777802814993
CRs-Fixed: 2451766
basically tried reading peer_id from peer structure
to avoid 1 cache-line miss per pkt and access mac address
from frame data for WDS only if WDS condition is valid.
The other optimization is to avoid accessing queue_mapping
field of skb for skb received which is at 140 offset
This again helps to avoid i cache miss.
Another place is to do a memcpy only when we intend to
add an ast entry.
Change-Id: I7e328060c505bc21419d045e77329c2cda9e3644
CRs-fixed: 2388857
1. Move statistics API's to dp_stats.c
2. Move DP_TRACE_STATS to DP_PRINT_STATS
as it is implemented based on target.
Change-Id: I62f3076a51ca35f0e12cdb0ff0230ea87c2baaf7
CRs-Fixed: 2453443
Identify the WIN/MCC specific features. Move the features under feature
specific flags. Get rid of WIN/MCC specific code.
Change-Id: Iaf4e5befd7d574a20bea5c078201adbeac3b762c
1. Set BSS peer for AP during peer-create and for STA in peer-map handler
2. Set Self peer in STA mode
3. Avoid tid cleanup in STA mode
4. Remove redundant selfmac checks in Rx
5. In MEC event handler add a check to ignore MEC events
when STA is not connected.
Change-Id: I2a34b4742d9dedaa0709c1f4c87f3a06b794f36b
Currently, if BA session for a tid is active, we tear down
current session and do not send an addba response. Clients are expected
to send new addba req. But this is not happening, therefore
we accept new addba req after flushing tid queue and then setup
queue with latest addba request values.
Also change is made to not update ssn to 0 so that old sequence
can be continued to use.
Change-Id: I129ce74d7414c3255d5a4360f39fec9ed3d7650f
CRs-fixed: 2428837
Add target specific HW header for ipq6018 compilation.
Remove the 8074 header dependencies for 6018 compilation.
Change-Id: I8e45e3e039a4596c6722538405dcd381918fa6b1
Currently frames will be dropped if it arrives before
peer is registered with data path module by control path.
So cache rx frames and flush them to the upper layer when
peer is registered at data path.
Change-Id: I086122fffdcf33e25ba57774ef944550cdd2fa20
CRs-Fixed: 2329308
Refactor the code to move the serialization of
rx reorder queue setup wmi command to target-if
layer.
CRs-Fixed: 2431099
Change-Id: I6b383f5e875fec55c3586dfee576894f6eb35f73
Currently vdev deletion happens as a part of last
peer's unma and vdev creation happens in a different context invoked
by the upper layer in dp_vdev_attach_wifi3.
In a scenario when the old vdev is being deleted and a new one is being
created, with the same vdev id (e.g. P2p -> SAP transition), its
possible that the old and new vdevs co-exist in the pdev->vdev_list
at the same time. In such a case, the API (get_vdev_from_vdev_id) can
return the old stale vdev, even when a new vdev has been created. This
is not the expected behaviour.
Check for "delete.pending" flag before returning the vdev. If the flag
is set, skip that vdev.
Change some logging to dp_ logging functions.
CRs-Fixed: 2432430
Change-Id: Icadd84059dfbab12910678e5b24007010c15b6a8
Add a CDP function which processes the peer delete response
and deletes the static ast entry for the peer
Change-Id: Id646979ed07bd82609ca08e7ef3201382d07b1de
CRs-fixed: 2385115