Currently legacy thermal throttle level can support to
THROTTLE_LEVEL_3 at the most. Per new thermal mitigation
requirement, it's needed to add extra implementation
for TX off processing and target shutdown. So extend
throttle level to THROTTLE_LEVEL_5.
Change-Id: I87c583d2828572605ea91a6ac318a58f20054028
CRs-Fixed: 3413666
The kernel-doc script identified a large number of kernel-doc issues
in the dp/inc folder, so fix them.
Change-Id: I6213164d2209cc4de9684ae66281ee2999f82672
CRs-Fixed: 3375078
Currently, bandwidth and corresponding MPDU retry threshold was
taken from tx packet status in per packet to update peer stats.
With this change, set bandwidth and MPDU retry threshold
during peer registration.
Change-Id: Iffd06968246d0b86b26716ae6672e2cd23360c67
CRs-Fixed: 3225479
Currently, data stall detection is without control over
individual data stall events.
INI variable, gEnableDataStallDetection is converted from
boolean to unsigned int which provides control over events
across FW and host with each bit corresponding to different
data stall events.
Bit 0: Enable all data stall events if set.
Bit 1-30: mapped to data stall events. Used when Bit 0 is 0
Bit 31: Enable aggressive timeout for WLM Mode.
Change-Id: I4656520accd1589e77d5054eaa0a3cb8e63b14b2
CRs-Fixed: 3174906
Due to DP flow control network queues are stuck in
paused state and not getting reset even after new connection.
This is causing DHCP packets to be dropped and resulting
immediate disconnection after every connection.
Fix this by properly pausing and unpausing the AC flow control
based network subqueues during disconnection/connection events.
Change-Id: I280e704d5a01b19d180c32aaa272c0cb731f8c0e
CRs-Fixed: 3078745
In dp_service_srngs, the current logic assumes that WBM2SWRELEASE ring
number as obtained from interrupt_ctx->tx_mask matches the index of
soc->tx_comp[] array. However this may not be true, esp for HMT.
Add logic to fix the same.
Use a separate macro to enable use of single TX ring.
Change-Id: I1bee27b800ad4e4ab1a1fe5e2b01b5b43acfe1f7
CRs-Fixed: 2984362
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
Add INI to modify the HW checksum capability advertisement.
Add hook to update enable/disable of HW checksum for vdev.
Change-Id: Idd0bad1d39c8411c7b4ef19483aa2c75a756791b
CRs-Fixed: 2732099
Currently there is a single INI item tcp_udp_checksumoffload to enable
or disable this feature for all the adapters. In some cases, we want to
be able to enable this feature selectively for NAN mode.
Add nan_tcp_udp_checksumoffload ini item to enable or disable checksum
offload feature specifically for NAN mode. If
nan_tcp_udp_checksumoffload is 'true' and tcp_udp_checksumoffload is
false, hardware checksum offload will be enabled only for the NAN
adapter and not for other adapters.
CRs-Fixed: 2693638
Change-Id: I6e255ce68ddc7b01ebdefe4e5e8d2c985388fefe
Memory optimization of unused TX rings by not configuring rings that are
not being used. Configure 2 rings for host in the case of IPA, instead
of configuring 3. If IPA is disabled then configure only 1 set of TX
rings for host.
Change-Id: I251606c728f3020a13e45e8c8386970c8a641f0a
CRs-Fixed: 2530572
Currently in lithium FW is not always in datapath. As a result
can not provide all the wlan vendor extended stats. So as part
of this host provides some of the extended stats.
Change-Id: I876b6e905f7e25b7088f80f07e55e26a7a409241
CRs-Fixed: 2594797
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
Add logic to queue and bundle packets before
giving it to scheduler to ensure predictive HTC
bundling for improvement in TX throughput.
Change-Id: Iab5066a46235ce7e41fd29c44a2ce0cfb04b1505
CRs-Fixed: 2574530
MDNS packets if forwarded for a NAN vdev can lead to potential flooding
of the air interface. Hence donot forward them.
Change-Id: Idfdedfb0b5b553745440587448230013f3b56a7d
CRs-Fixed: 2503360
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.
Change-Id: I3a141d0a1e549fcbb587373f1e0d57dfd031911f
CRs-Fixed: 2503144
This macro ENABLE_DP_HIST_STATS is needed for histogram information in
DP layer for both TX and RX. Add support for this macro.
Change-Id: Iffcb93c5e19d667bae35ce562c7ef12d063fb659
CRs-Fixed: 2492090
Use same stop_th and start_th as QCA_LL_TX_FLOW_CONTROL_V2 for
QCA_LL_PDEV_TX_FLOW_CONTROL which allows pausing/unpausing
netif queues to avoid frame drop in driver.
Change-Id: Ifa649e31a41d1bf89eadc8cc7e9520f0e27b9fe4
CRs-Fixed: 2466999
qcacld-2.0 to qcacmn propagation
This change adds support for driver supported TCP
delayed ack to increase TCP RX performance in
third-party platform which don't support kernel
TCP delayed ack feature.
TCP delayed ack is dependent on count and timer
values. Whatever is achieved first will trigger
sending TCP ack.
This feature can be controlled through ini values.
gDriverDelAckTimerValue - timer value in ms
gDriverDelAckPktCount - delayed ack count
gDriverDelAckEnable - enable/disable feature
Change-Id: I8105bbb90965295b5a4aefeb00d344a90155974d
CRs-fixed: 2414231
Add stop_th and start_th for QCA_LL_TX_FLOW_CONTROL_V2 disabled
platform, which is pdev based tx_desc pool. Change pdev tx_desc pool
size from 1056 to 900, default stop_th is 15% start_th is 25%, this
setting is exactly same as QCA_LL_TX_FLOW_CONTROL_V2. Pause netif tx
queues for all vdevs when stop_th reached instead of dropping frames.
Reduce pdev pool size could significantly reduce firmware wmm drop. Both
of host and firmware frame dropps lead to bad TCP throughput.
Change-Id: I77daf8c9fdef624f8ec479885b7705deb1fef142
CRs-Fixed: 2437471
When the status is FLOW_POOL_ACTIVE_PAUSED, all queues are expected to
be paused. Still some on the fly packet can make it to the driver. In
such a case, the function dp_tx_desc_alloc takes a default action of
WLAN_WAKE_NON_PRIORITY_QUEUE. This is incorrect, since it will wake all
non priority queues, when they should be paused.
Make default action as WLAN_NETIF_ACTION_TYPE_NONE. If this is the
action to be taken, donot call the pause_cb from dp_tx_desc_alloc.
Rate limit log levels in case dp_tx_desc_alloc fails.
Change-Id: I1ef3018e90576d2c3aaa0d10d56e9b155681271b
CRs-Fixed: 2421813
There is race when unamp_timer_work and peer is deleted. Hold the
reference to peer while handling the peer_unmap_timer_work.
Add new peer debug_ID for unmap_timer_work.
Change-Id: Ibfd5de602883d3219d1e634ef74ff04e7914efb4
CRs-Fixed: 2383778
Add the basic infra for legacy DP CFG items and the APIs to be used from
other components.
Change-Id: Iec1718f0a93fcb91061892b96ae6ae88174df9ee
CRs-Fixed: 2328481
Implement per access category flow control. Make sure lower AC
traffic, such as BE, will not starve higher AC, such as VI and VO,
traffic inside a single vdev.
This change is part of FR49094
Change-Id: I6aa15832eb48e8f3ada00eb29a7bc00999edaafd
CRs-Fixed: 2304436
Add more debug IDs to narrow down further funciton who is holding peer
reference. Reduce the peer debug dump log level to avoid side effects of
console logging.
Change-Id: I9820c72bcde8a0c2b0e779cf322e1133ef8a43e6
CRs-Fixed: 2303069
Currently there is no callback for MCL DP to do further action
when receiving data with invalid peer, add it for further processing.
Change-Id: I07c93b5119f0c1a46abba587b6b18c7b691683c7
CRs-Fixed: 2299489
Add PEER_DEBUG_ID_WMA_CCMP_REPLAY_ATTACK, to be used during
ccmp replay detection to get the peer ref count.
Change-Id: I6159556db959f447edcf75a5f64d398cbe544a80
CRs-Fixed: 2264963
ol_txrx_tx_flow_control_fp and ol_txrx_tx_flow_control_is_pause_fp are
redefined dp/inc/cdp_txrx_mob_def.h, original definition is in
dp/inc/cdp_txrx_cmn_struct.h. Remove duplicate redefinition.
Change-Id: I2c2af59d8b24360cd09efeb12ea19c0340771bb8
CRs-Fixed: 2215678
Update WLAN-IPA WDI-2 datapath for DMA buffer sharing with SMMU
Stage 1 translation support. When SMMU Stage 1 is enabled DMA
APIs return IO virtual address(IOVA) instead of physical address.
This IOVA need to mapped to physical address by IPA module
before accessing them.
Change-Id: I33082bc74760b0f12c348238c6f48f5ce5750172
CRS-Fixed: 2072953
* Wrap ol_txrx_vdev_peer_remove_cb, so that upper layer can invoke it.
* Remove roam_synch_in_progress from ol_txrx_vdev_peer_remove_cb.
roam_synch_in_progress is a parameter of ol_txrx_vdev_peer_remove_cb,
But invoker cannot pass value to it. And it is concept of wma, it's
improper in cdp.
Change-Id: I6fa6c1b2df4919ad34ec931c4217bec0eefb2eac
CRs-Fixed: 2176165
The existing peer API cdp_peer_find_by_add does not maintain any peer
references. So a peer which is returned by the API may get deleted in a
different context. This may lead to access to a already deleted memory.
Fix the issue by introducing new APIs "peer_get_ref" and
"peer_release_ref" which make sure the peer is valid until it is
"released" (peer_release_ref is called).
Change-Id: Id04d13bc6a1b8a55c1ae9246077f64ffb86de3d8
CRs-Fixed: 2146742
ARP packets will not get chance to be transmitted if
netif queues are paused due to low tx descriptor availability.
Send ARP packets from HI PRIO queue so that it can be transmitted
in noisy environment.
Add netif action type for HI PRIO queue.
Change-Id: If3fea405bed07823f11b505f9a6627a3f14c343a
CRs-Fixed: 2083277
When hdd_get_tx_resource is called, if free Tx desc is lower than low water
mark, vdev->os_q_paused will be set as 1 and WLAN_STOP_ALL_NETIF_QUEUE will
be triggered after a while. Before WLAN_STOP_ALL_NETIF_QUEUE is triggered,
if ol_tx_flow_ct_unpause_os_q is called, WLAN_WAKE_ALL_NETIF_QUEUE will be
triggered and vdev->os_q_paused will be set as 0. In such case there will
be no flow control unpaused forever.
Tx should be paused by flow control when Tx desc is lower than low water
mark, and unpaused when Tx desc is bigger than high water mark or Tx is
already paused by flow control.
Change-Id: Ib60139fd94a4fb88c92a7f8aaf886ae9d3ca4c75
CRs-Fixed: 2090475
Adds support for flow control on convergence branch.
Allocate Tx descriptors dynamically when vdev comes up.
Tx queue is paused and unpaused internally in host based on the
stop and start thresholds.
Changes are added under compilation flag QCA_LL_TX_FLOW_CONTROL_V2.
Change-Id: I0ccb80b0099f39efad52ccd7d47f2709fdee2a93
CRs-Fixed: 2040457
Currently NAPI stats are retrieved as a part of iwpriv getStats command.
The buffer available for this command is limited and NAPI stats get
trucncated.
Add a new dumpStats parameter (9) to dump NAPI stats.
Change-Id: Iaf52a3dcecac2f7b24fde2f8220fbfddc767965b
CRs-Fixed: 1076563
qcacld-2.0 to qcacmn propagation
Add below four keys to allow user to tune WRR TX scheduler params.
Each key is mapping to one AC defined in data path module through
OL_TX_SCHED_WRR_ADV_CAT_CFG_SPEC.
gEnableTxSchedWrrBE
gEnableTxSchedWrrBK
gEnableTxSchedWrrVI
gEnableTxSchedWrrVO
Change-Id: I5c34b604297d83673ea065243cc58c3f2180ff3e
CRs-Fixed: 1020141