Multipass init is called from vdev attach and
multipass deinit is called from tx vdev detach
To maintain symmetry between init and deinit
move multipass deinit to vdev detch
CRs-Fixed: 2840338
Change-Id: I18657497b9e09ec5cc75d245765f6d0fd7d061fd
rx_mpdu_missed statistics used by CNE records instances
of BA hole happens, not duplicated frames instances.
Fix this field with correct value to avoid incorrect
VOLTE switching.
Change-Id: I815b9a4caeb6eedf36be66f8650ca98d00542c60
CRs-Fixed: 2848460
In security mode, allow only EAPOL frames in receive path
when peer is not authorized. This feature is enabled per VAP
based on vdev flag and will be applicable for all peers in that
VAP
Change-Id: Ic5dea09c2083f31e8cd301a0cdc3565f247b735c
Reduce excessive data path logging to kmsg during roaming and
change the logging level for such prints to debug/info
high.
Change-Id: I1e6506de83e59a31304234905a3dd38f6d8b03f3
CRs-Fixed: 2848624
Currently the rx rings history is allocated dynamically
on load time. The memory requirement for saving these
history are more than a page (order 5 to 6 allocations).
Such big memory allocation can fail due to various
reasons, one of them being memory fragmentation.
Fix this by pre-allocating the rx ring history memory.
Also allocate the rx reinject history memory when the
HW accelerated path is used.
Change-Id: Id957cd5df91a2ca7f182dea691a0557b4e386f55
CRs-Fixed: 2844388
When runtime power management is enabled, until the system is fully
resumed, we do not post any message to CE, instead they will be queued
in HTC. Once the device is fully resumed, all HTT messages in the queues
will be downloaded to CE at once. In some corner cases, it is found that
too many FSE caches flush messages getting queued during the runtime
resume; once the device is fully resumed, all these would be downloaded
to the FW/HW at once causing unintended crashes.
Avoid posting FSE cache flush messages until the device is fully resumed
to fix the issue.
Change-Id: I2be21406e8c7a9dcd86df3e93c2568797defcad0
CRs-Fixed: 2843541
In existing implementation, for monitor mode below allocation
are done at pdev attach and init time.
a. 64 monitor buffer allocation for RxDMA monitor buffer ring
b. Link descriptor memory allocation for monitor link descriptor ring
This memory is waste of memory for customers not using monitor mode and
low memory profile.
To optimize this memory, allocate all buffers and link descriptor memory
at monitor vdev creation time.
Change-Id: I873c76d2f625a782532a101037915b0353928a5b
CRs-Fixed: 2829402
scenario:
FISA new FST entry is initialed, host will start one timer to
send HTT MSG DP_HTT_FST_CACHE_INVALIDATE_FULL to FW in 5 ms,
WOW suspending happened in the same time, PCIe bus get suspended.
5 ms later, HTT msg sending will try to prevent PCIe L1 to update
CE SRNG HP register, hit assert as PCIe bus suspended already.
suspend and cancel the FSE cache flushing timer when dp_bus_suspend,
resume it when dp_bus_resume.
CRs-Fixed: 2843214
Change-Id: Ie2bc115a0de068335d6c46749f52d205cc21f5a3
Low memory profiles like 256M and 16M profiles support
only NSS Wi-Fi offload mode and HOST data path APIs are
not used in NSS offload mode
Disable HOST data path APIs which are not used in both
NSS Wi-Fi offload mode and in HOST mode (in NSS offload mode)
CRs-Fixed: 2831478
Change-Id: I6895054a6c96bd446c2df7761ce65feef662a3cc
As part of monitor mode init, add check for null monitor vdev before
accessing vdev_id in case prevous cleanup of monitor vdev still ongoing.
Change-Id: I0165684c8aa2abea73fa8c0d1692dac789fb20f6
CRs-Fixed: 2835758
During interrupt mask initialization, bitmap of tx ring
mask and reo dest ring mask are filled in host mode based
on the number of rings.
When NSS offload mode and dynamic HW mode are enabled,
interrupt reset is done based on modified ring count.
This is causing invalid hal_srng access for interrupt
context which are not reset.
So, resetting tx ring mask and reo ring mask based on host
mode ring count. Also reset when mask value is non-zero.
Change-Id: I6e3ef2df7a1f71aa17ebf8499467b39bc84f88bf
Change the alternate indication_0 to WBM instead of
REO2TCL. This is done such that, WBM takes care of
the of the de-linking of the link descriptors and
release the buffers to the respective WBM rings.
WBM should take care of the NULL entries if present
in link descriptor as WBM internal errors.
Change-Id: Ie084e54861bb4611a45cd724bb32d211c62f4f21
Add CDP API to dump the SW head pointer and tail pointer
of a few important srngs. This can be used to debug or
get a direction when the device doesn't dump ram info.
dp_print_ring_stat_from_hal is not being used, since without
device force wake recipe in place, reading hardware hp/tp
value can lead to NOC errors.
Change-Id: Ib0381acb007f1b4431f6a02cd9762e461d6393e8
CRs-Fixed: 2826084
RX error stats from REO2TCL ring is just for RX 2K jump/
OOR frame, host should not count them as rx_mpdu_error
stats for user space which will think wifi connection is bad
easily in noise environment.
Align this part logic with Helium that count TKIP/MIC error
frame, for HST/HSP, use error counted from RXDMA instead.
Change-Id: I2e488bedaed166ce410c53eb7e9710d7933c2717
CRs-Fixed: 2821147
Number of DP rings used in HOST mode and NSS offload mode differ
and in current scenario the rings are allocated unconditionally.
Allocate only required number of rings based on the HOST mode and
NSS Wi-Fi offload mode and based on the number of radios supported
per SOC.
CRs-Fixed: 2790504
Change-Id: I20ce1908da47c197ea3b406f8704b964f3d8f7d1
Add cfg_dp_sg_enable to get ini key dp_sg_support by cdp_cfg_get.
And add some comments for CFG_DP_SG to clarify more.
Change-Id: I34de242eacbdcf55398afe64b91f5534f205fa22
CRs-Fixed: 2822536
Use sizeof instead of REG_BAND_UNKNOWN to fix buffer overflow written
in the dp_soc_interrupt_detach.
Change-Id: Iffad59346c487e34632f1c60b2c88e635f6e83a0
CRs-Fixed: 2822433
Currently the rx tids are getting setup for the
self peer in monitor mode. This leads to sending
commands to the reorder-hw and the hardware generates
its responses.
In Monitor mode, none of these rings are reaped, since
the reorder-hw is not used. This opens up a possibility
of backpressure on the reorder-hw rings.
Skip setting up the rx tids for monitor mode
self peer, since they are not used.
Change-Id: I37bade9ef5c8bd536a01371cc059ebbcfb85ee5a
CRs-Fixed: 2815866
As monitor mode is not supported on LM256 profile,
disable rxdma1 functionality on same
Change-Id: I64e5de02d56801bfd46e32a6c64a1286e4d7ecb0
CRs-Fixed: 2819904
While in mission mode, add support for monitor mode to be created as
another interface to support STA + monitor mode. Create a new
mon_vdev_timer to be started during vdev_attach and calling
dp_mon_vdev_timer to reap monitor rings while in this mode.
CRs-Fixed: 2815653
Change-Id: I631deb5121d7997cded524befd11883079a23aaf
Currently, we decrement active_work_cnt in a while loop in delayed
register worker and later on make a "allow_l1" call to enable L1ss.
The bus suspend routine depends on the value of active_work_cnt to
determine if any register writes are pending. In case there are, bus
suspend is rejected.
As a result its possible that when bus suspend happens, the
delayed worker while processing the last remaining enqueued
write, makes the active_work_cnt to 0. This will allow the bus suspend
routine to continue to disable the bus, even before the
delayed-reg-worker has called allow_l1 and run to completion. This may
lead to a NOC error while calling "allow_l1" API from
delayed-reg-worker.
Hence, move the decrement of active_work_cnt to the very end in
hal_reg_write_work function.
Change-Id: Iec602f97c953df1c6a018310fd02ab458547ce3a
CRs-fixed: 2813733
This change fixed compilation error about implicit-fallthrough and
pointer to in cast.
Change-Id: Iea2c25d97d8a039ed0f8083078427a8f8de70cd1
CRs-Fixed: 2814658
Delayed register write work needs to be flushed before bus suspend to
make sure there are on pending writes after driver's bus suspend routine
exits. In case delayed work context is not able to finish before the bus
(PCI) is suspended (DRV), it may lead to a NOC error.
Change-Id: I40cbcec5d23ddd75ec87aed69ac45d95510fa880
CRs-Fixed: 2813733
In monitor mode, as part of VDEV delete, we are reaping
monitor rings to avoid backpressure from RXDMA2SW ring.
Looks like the ring continues to grow even after reaping,
reset the monitor filters before reaping to avoid
ring backpressure.
Change-Id: I0d9dde61b62648f8ce11c15ba23612fc8491fff2
CRs-Fixed: 2807482
We need to set pdev->target_pdev_id after mode switch so that the
correct target_pdev_id will be used for monitor mode ring configurations
Change-Id: I0c79d0e69f8d28f8a7c8823a1010baf317571c20
CRs-Fixed: 2803005
Add a ini control field to control rx frame pending check
logic in WoW case. In some cases, power consumption is more
important than rx frame ping loss, so add a control flag
Change-Id: I8c4d3725edddb82a0f06dc70c22a8dd5243209f2
CRs-Fixed: 2806786
In monitor mode, as part of VDEV delete, monitor mode
poll timer is stopped; it is good to reap the monitor rings
once after timer stop to avoid crashes that arise due to
RXDMA2SW ring backpressure.
Change-Id: Ib15b3398087073ad053616c6aa68e295eaebdd17
CRs-Fixed: 2796608
mcopy mode uses monitor destination ring to sniff mgmt frames,
send enable/disbale full monitor mode by sending HTT msg to FW
when configuring mcopy.
Change-Id: Ie9510bda223861c13054abac640b2c879c4d334d
In monitor mode, if channel is initially configured from 5G
band and then moved to channel from 2G band, packets are still
received on MAC-0 RXDMA2SW ring since IMPS is disabled for both
MACs. Since driver reaps only MAC-1 RXDMA2SW ring, ring full
condition is hit for the MAC-0 ring causing ring backpressure.
Fix is to drop packets received on the non-monitoring MAC
ring.
Change-Id: I49cb276827f4a06791183ee3fe8c88ba84df085d
CRs-Fixed: 2791341
A htt message arrived after ipa context is freed as part of
deinitialization which was dereferenced by event handler
assigned to pdev->ipa_uc_op_cb, resulting in crash.
To fix this, during deinit pdev->ipa_uc_op_cb is deregistered
and assigned NULL before freeing up ipa context.
Change-Id: I8125cb104a538e88cda93960f7443129fabd850a
CRs-Fixed: 2793295
Compiling with gcc 9.3 will cause many implicit-fallthrough
compile errors.
Fix is to add keyword fallthrough to resolve such compile error.
Change-Id: I2e7dd1525861d951e3be44f6665e149499f0f5d6
CRs-Fixed: 2785178
Add API to do IPA Tx buf SMMU-S1 unmapping and register it
with cdp ops for Hastings, also assert if map/unmap failed.
Change-Id: I4071b5fccd84c3c97b9dccc40c6f798d70993189
CRs-Fixed: 2792170
In teardown API update logical delete state to peer
before deleting AST entries of peer. Also in delete
AST API use __dp_peer_get_ref_by_id to get the peer
Change-Id: I6db227a284cf3726cc241ebc98386230eca58fcf
Add a new cdp datapath ops - mscs_ops for Mirrored
stream classification signalling feature. This function
will be invoked from ECM flow acceleration manager
Change-Id: I749623846395057b6ea8328c881efa8733700b0e
This change fixes the below issue.
1. Clear the histogram statistics per peer.
2. Separate out the Tx/Rx histogram prints.
Change-Id: I5fc51f6bca14dc4c615c5501441e1a6b28bb0f02
Add support to configure REO ring threshold through ini
for WLAN_DP_PER_RING_TYPE_CONFIG feature.
Change-Id: I02a14adcf243905ab25c2af12cb9499f32ff453f
CRs-Fixed: 2789147
Deinit of HTT stats debugfs files from dp_pdev_detach to prevent
deleting of files after 'wifi".
CRs-Fixed: 2782235
Change-Id: I77d86225762063af16bc8c2b716ca834698f1520