Post link switch the order of VDEV to link info in OSIF
changes and for the next connection, need to restore the
order. This restore currently happens when there is set
MAC address update before every connect, but however if
set MAC address is not received then the unrestored order
of VDEV will be used during connect which can be undesirable
in certain cases.
To avoid going ahead with connection with unrestored VDEV
mapping, make sure this is reset to proper order via
notifying HDD once assoc VDEV connect request becomes active.
Change-Id: Id3ba542820f7c2bc9c721a49735738df00b6e5d5
CRs-Fixed: 3827913
Currently, when Rx monitor mode interface is coming up, STA is
not disconnected causing RXDMA ring to be used as both error ring
and destination ring. This is causing backpressure in RXDMA ring.
To fix this, issue disconnect for STA when Rx monitor mode is
being added.
Change-Id: I95e73edd80472a8aae9092ebdbce5e514b1cd531
CRs-Fixed: 3799325
If 3 SAP virtual iface are created first, then up, 3 MLD is
created during 3 vdev created, but 3rd failed to added to
g_mlo_ctx->ml_dev_list for WLAN_UMAC_MLO_MAX_DEV limit, when the vdev
deleted, assert will happen when remove MLD from g_mlo_ctx->ml_dev_list.
To fix it, need avoid the active number of SAP interface exceed
QDF_MAX_NO_OF_SAP_MODE, need add check when up SAP interface.
Change-Id: I0ba78d589dfc3c6351b48d4790e15c7d9da4961c
CRs-Fixed: 3795974
Certain countries have dot11mode restrictions such as no
11be mode support, in which case the regdb updates the
phymode and sends to Host.
Add support to use this value to limit and update the
internal dot11mode to allow connection in corresponding
phymode.
Change-Id: If7dd8c261fbe61e96c7749dd1457713502409fa6
CRs-Fixed: 3747811
Currently, host driver sets beacon protection flag in the vdev
during SAP bring up and send it to the target with beacon template.
But while SSR, driver destroys vdev and hence beacon protection
flag is reset and after SSR, driver does not set the beacon
protection flag. Thus, target does not enable beacon protection
and does not send MIC IE in the beacon frame.
So, to fix this, set the beacon protection flag in the vdev while
restarting the SAP.
Change-Id: I14f64463ed0d2e66a305160dcc7c810012dde2fb
CRs-Fixed: 3636385
Optimize Ml link state updates to reduce frequent communication from
firmware, preventing unnecessary runtime resume and minimizing power
penalties.
This change is to introduce cached ML link state data, ensuring
efficient communication until the expiration of ML link state cache.
CRs-Fixed: 3650673
Change-Id: I3fb742ed18fa7e364f25fa9ed10092d3a372391b
Add necessary changes for deprecated kernel APIs and other changes
in kernel code in order to compile on LTS 6.5 kernel.
Change-Id: I55175fd0f3a4fe1a00b7682bfceeb705397090a0
CRs-Fixed: 3663879
This commit adds the following change to fix the compilation error
observed with upstream kernel:
1) Include <linux/qcom-iommu-util.h> based on ANDROID_COMMON_KERNEL macro.
2) cpuidle_governor_latency_req API is not exported in upstream
kernel, so protect its usage based on ANDROID_COMMON_KERNEL macro.
Change-Id: I60fc8d331dbbd1595dc9a095464b2baea9b4e4d5
CRs-Fixed: 3681640
Currently after link switch powersave conifig is not sent to firmware
resulting in STA not entering BMPS.
Set the powersave config to firmware after link switch
Change-Id: I60864b03144900edac2861348375280507b9e25c
CRs-Fixed: 3680566
In LA by default, the max supported SAP interface number -
QDF_MAX_NO_OF_SAP_MODE is 2. In third party framework or using
command line to add SAP interface, the active number of SAP
interface may exceed the number of QDF_MAX_NO_OF_SAP_MODE.
To avoid running into unexpected scenario, add check the active
SAP interface number with configuration of macro QDF_MAX_NO_OF_SAP_MODE
when adding virtual interface.
And in MDM we support 4 SAP, so make the QDF_MAX_NO_OF_SAP_MODE
configurable by Kbuild.
Change-Id: I7b64ae8f580d2b11ab5bd46c9346567f4ceabc39
CRs-Fixed: 3673518
Driver cache all links channel bandwidth config from user space,
when link switch happened, and connect complete, send bandwidth
of the link id to fw.
CRs-Fixed: 3625801
Change-Id: I7d4a13075b62c9c8928d2c33bd309e9c5b085171
To improve p2p connection set up performance, don't delete and re-create
p2p vdev, just update p2p device mac dynamically during UP state as
following steps:
1. Delete self peer, send WMI_PEER_DELETE_CMDID to F/W
2. Delete DP peer
3. Delete self peer from OBJ manager
4. Receive DP peer unmap event
5. Receive WMI_PEER_DELETE_RESP_EVENT, delete DP vdev
7. Send WMI_VDEV_UPDATE_MAC_ADDR_CMDID to F/W
8. Receive WMI_VDEV_UPDATE_MAC_ADDR_CONF_EVENT
9. Create DP vdev with new MAC
10. Create DP peer with new MAC
11. Send WMI_PEER_CREATE_CMDID with new MAC to F/W
12. Add new self peer to OBJ manager
To fix race condition issue that new DP vdev is created before old DP vdev
finished cdp_vdev_detach, don't create new DP vdev until
WMI_PEER_DELETE_RESP_EVENTID received and handled.
Change-Id: Ie39d385f79a1ec636b8e5fb660fa44e9623afca2
CRs-Fixed: 3658819
Userspace can dynamically modify association BW and as part of
disconnect need to reset the BW to original value, if not the
next connection will might happen with downgraded BW.
Currently the restore is happening on deflink VDEV instead of
actual disconnecting VDEV.
Fix this by changing function argument to accept link info
pointer in HDD adapter of that corresponding VDEV.
Additionally, the driver capability for 6 GHz-320 MHz is not
properly restored and further connections to 320 MHz are
happening on 160 MHz.
To fix the 160 MHz downgrade, use original EHT capabilities in
global MAC context instead of using modified EHT cap where
320 MHz support got reset on userspace dynamic BW update.
Change-Id: If2badb0a234f45d57dc186729bc529137d7a5131
CRs-Fixed: 3628940
Based on the new requirement, host driver needs to send the audio
transport switch request from host driver to user space, to
support this requirement, register os_if callback function with
bearer switch state machine
Change-Id: Ib94ff4d9876e79d984401262253602c975b0fb1e
CRs-Fixed: 3626952
Trigger a cds_recovery as a error handling mechanism if
wlan suspend resume fails.
Change-Id: I36cfbc6c1e7820be1b60a73006f93e8a2926c98c
CRs-Fixed: 3632605
Add support to configure Power save enable/disable on
specific MLO links based on the link ids.
Change-Id: I63bc332d2afb7e63417b8191dd463f9caa659270
CRs-Fixed: 3616677
Currently pre CAC command is failing as host is trying
to start an ML SAP as part of pre CAC. As ML SAP + ML
SAP concurrency is not supported and the first SAP is
an ML SAP, it's not possible to start another ML SAP
for pre CAC.
To address this issue create a non-ml SAP as part of
pre CAC.
Also take RTNL lock for hdd_open_adapter and
hdd_close_adapter because vendor command tool doesn't
take RTNL lock but cfg80211_register_netdevice
and cfg80211_unregister_netdevice API's expect RTNL lock.
CRs-Fixed: 3627785
Change-Id: I84ac7674cbb0911258736b2aa7886b74bc9c8714
Change to parse wpa_cli command to set wifi configuration for attribute
QCA_WLAN_VENDOR_ATTR_CONFIG_COEX_TRAFFIC_SHAPING_MODE and send traffic
shaping mode to FW with WMI WMI_COEX_SET_TRAFFIC_SHAPING_MODE.
Change-Id: I3965dfc6b63f55e568aed34e0091b95a21fae88f
CRs-Fixed: 3625180
The third party framework sets p2p0 with powersave enabled, our driver
saves the powersave enable flag to vdev.
Then framework creates p2p0 as GC by changing p2p Device type to p2p
Client type. Our driver will delete vdev and create the vdev again.
The powersave enable flag will be lost in this case.
Fix by cache the user powersave flag to adapter and restore it after
vdev created.
Change-Id: I5be2d2df0583b6c1bf6b7cdd31a1a0b89ceb1901
CRs-Fixed: 3625403
The structure ieee80211_eht_operation is not present in older kernels.
So, add a kernel version check to avoid compilation failure in targets
which use older kernels.
Change-Id: Id5e5d80e06e783258374465514246cfde9d86177
CRs-Fixed: 3627213
Channel bonding is enabled wrongly after sta disconnected for max channel
width is larger than 20 MHz even gChannelBondingMode24GHz=0.
To fix it, when restore max channel width after sta disconnected,
restore to ini gChannelBondingMode24GHz value.
Change-Id: I72cae0360bf51a2c914d1bfec069abae6a03b337
CRs-Fixed: 3618677
Upon an update of the policy_mgr connection table, added logics
to get max bandwidth among all the available connections. The
max bandwidth is passed to HDD IPA component via policy_mgr DP
callbacks, which in turn is used to decide proper IPA perf levels.
Change-Id: I20b3e01b433db566bec2a315a76f3015869fc176
CRs-Fixed: 3609165
From the kernel, it is expected to hold the mutex lock while
channel switch notify.
Below are the cases:
1. As of now, in case of SAP, driver did not acquire the lock
hence kernel assert happened during channel switch notify.
2. In case of STA CSA, driver tried to acquire the mutex lock
and before that NB disconnect come and nl80211_disconnect is
holding dev->ieee80211_ptr->mtx during disconnect path and
waiting for disconnect completion, at the same time from
scheduler thread callback driver can’t acquire the same mutex
again since its already held by nl80211_disconnect.
The NB operation is dependent on scheduler to complete the
operations which is resulting into deadlock, as both are
waiting for each other to get completed (scheduler waiting
on the lock, while NB waiting on scheduler).
To fix it, as work queue is independent thread (No NB
operation depending on it), driver will not have this
deadlock and NB operation can complete its operation via
scheduler thread and release the lock, which then will
be acquired by WQ, which was waiting on the lock, to
continue its operation.
CRs-Fixed: 3618311
Change-Id: I7606ca51801ccca0aa464ec98dc9428af2ac5dd8
If the monitor_mode_concurrency ini is set to 1 and SAP/P2P/NAN is trying
to come up when STA + connected monitor is running, then because of
this ini setting, SAP/P2P/NAN bring up is terminated.
Fix this issue by allowing the SAP/P2P/NAN to come up by terminating the
monitor interface if connected monitor is running.
Change-Id: Ic37d97522c1a1e72a8a1614d6eab2c411ab46f3e
CRs-Fixed: 3610132
Add support to enable SR feature for 6750
target and return failure for SR commands if
SR feature is not enabled instead of returning
Success.
CRs-Fixed: 3619084
Change-Id: I5e19ffd758d0325e0fa26b61473b0192e110ce60
This change is one part of patch series to address IPA TX pipe
selection on sdxpinn platform, which is attached with 11BE/WiFi-7
capable chipset. One of the typical user scenarios are the SBS/HBS
configuration supported by the WiFi chipset.
From WLAN point of view, a pipe stands for a pair of TX and TX
completion ring resources. Starting from DBS capable chipset on
SDX platforms, two pipes are allocated for IPA usage, which are the
primary pipe and the alternate pipe. By design, the primary pipe
is used for 5 GHz/6 GHz connection while the alternate pipe is
for 2 GHz connection. Due to different throughput requirements
between two bands and memory saving considerations, two pipes are
initialized with different ring sizes as well as number of buffers
available, where the primary pipe has larger ring sizes as well as
number of TX buffers.
Starting from 11be/WiFi-7 chipset, SBS/HBS features are supported.
Take SAP-SAP concurrencies for instance, SAP1 can be configured to
run with channel 36 on 5 GHz while SAP2 can be configured to run with
channel 149 on 5 GHz or even in the 6 GHz band. With legacy DBS solution,
both SAP1 and SAP2 will use the primary pipe, which in turns TX
starvations are observed on the SAP which has higher phyrate.
To resolve such TX starvation issue, this change is to properly
select TX pipes for interfaces that are possible to be run
on 2 GHz/5 GHz/6 GHz bands but with below considerations being
considered as of the implementation time.
a. 3 home channels are not possible.
b. at same time, only two bands are possible.
c. two 11be SAP concurrencies are not possible.
d. 11be 320 MHz is only possible for single STA or single SAP.
This means that at one time with a maximum of 4 interfaces,
there must be two interfaces with same frequency.
Hence this change properly selects the TX pipe between the
primary pipe and the alternate pipe for all concurrencies that are
supported.
Change-Id: I60453ce0dae5a67f1af9304beeebaab9189c6896
CRs-Fixed: 3599453
Currently if STA connected in 11BE mode, EHT Operation IE is not
getting updated in big data stats.
Add support to update EHT operation info while sending big data
stats to supplicant.
Change-Id: Ib61d69b3b5f2f902d16bdf0feaab450cecb2115b
CRs-Fixed: 3598646
Update channel bandwidth value enum in nl80211_chan_width which
described by vendor attribute QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_WIDTH.
CRs-Fixed: 3605833
Change-Id: I2ec4debe271ded93bba2c7403d3dbc9b084bf917
TSF auto report is a stand alone feature, which can
be used to sync TQM clock and TSF clock, more than
one features depend on it.
Introduce a new build flag WLAN_FEATURE_TSF_AUTO_REPORT
to decouple it from uplink delay feature.
And also introduce trigger source for TSF auto report to
identify different triggers and maintain the enablement
state.
Change-Id: I61005d0ba29e62995aeb88067d18ad48767bd8b5
CRs-Fixed: 3560239
Based on the new requirement, add support for vendor event to
switch the audio transport bearer.
Change-Id: Iff5733c7552674fb84d225d1aef183577105a276
CRs-Fixed: 3585390
Based on the new requirement, add support for vendor command
to switch the audio transport bearer.
Change-Id: I1d3b74c18976b0927ebba228b73af5a10cc67391
CRs-Fixed: 3582788
Currently, CONFIG_TSPEC_TSID is used as handle to
add and delete TSPEC requests. The tsid sent by
upper layer is same as handle because there is
no separate param for handle, so host always rejects
to add new TSPEC request because already one request
is registered with same handle.
To avoid the issue host can internally modify
handle and can add request with modified handler.
During DEL TSPEC Provided ts_id can be used to
delete the entry.
Change-Id: I6d1231bc6516d2642739d5d1011c847b32472160
CRs-Fixed: 3580003
If wifi turn/off and suspend command come simultaneously, idle shutdown
timer will delay long time to go into suspend mode. The time is
(gInterfaceChangeWait + HDD_PSOC_IDLE_SHUTDOWN_SUSPEND_DELAY)ms.
The delay is ensuring idle shutdown can be called and completed before
suspending. Otherwise wifi chip is not in power off state even all
adapters stopped.
Change c797c6e is ensuring that we can go into idle shutdown case when
system suspend is happening and all interfaces are down.
So, we can remove the delay and restore gInterfaceChangeWait default
value to 10s. No delay and no current leakage in FW.
Change-Id: I04cc6f2dd9720105e0302874022603eeb4fccfe5
CRs-Fixed: 3513404
Changes to set SAR safety index at the driver init time.
Enhance gEnableSarSafety ini to enable timer / init
based SAR index configuration.
Change-Id: Ie50a887d566427fe4e4ff589bf3594c6b78e8c00
CRs-Fixed: 3576752
Flush TWT commands when cfg80211 suspend is in progress
and schedule them for execution when cfg80211 resumes.
This prevents WMI from crashing due to concurrent
WMI_WOW_ENABLE_CMDID and twt requester enable commands
during suspend.
Change-Id: I505b789805d8a83564bf25d3f6c5c28d6d390966
CRs-Fixed: 3567817
Allow userspace to configure power save inactivity timeout and
opm speculative wake interval through vendor NL interface.
STA enters into power save mode(PM=1) after TX/RX inactivity of
time duration specified by QCA_WLAN_VENDOR_ATTR_CONFIG_PS_ITO
in milliseconds.
STA speculatively wakes up to look for buffered data by AP at
QCA_WLAN_VENDOR_ATTR_CONFIG_SPEC_WAKE_INTERVAL interval after
entering into power save. If configured zero, STA wakes up at
upcoming DTIM beacon.
Change-Id: I86cbd35d6f61ae600b4784bd95209fac62021941
CRs-Fixed: 3567042
If INI is enabled don't derive first link's MAC address
and directly use MLD address in that place and derive
next link addresses.
Change-Id: I3c2b9f64df3f75799adf8718ee83d157f6dd9097
CRs-Fixed: 3584062
Supplicant sends SET_MAX_BANDWIDTH driver command to update
connected channel width dynamically.
Host should update connected bss rate flags so that host
can send proper cp stats as per updated channel bandwidth.
Change-Id: I676635b108f91f4fd8471fbe66352aa471dd9a9f
CRs-Fixed: 3519930
Once VDEV ops using DSC lock are completed, move the deflink
pointer in adapter to non-transitioning link so that all userspace
requests happen on the non-transitioning link while the other
link is in link switch operation.
Change-Id: Idfdd488e47e7d4ba013c9ed1e61def86ede8db90
CRs-Fixed: 3568098
Once link switch set MAC address response is received,
HDD is notified. Update the active bitmap in adapter and
move VDEV information from existing link to new link.
No need to call VDEV attach/detach as part of set MAC addr
due to link switch and also call DP callback to update
DP link mac address.
Save the new link info mapping on VDEV map address update,
use the mapping on dynamic MAC address update to restore to
proper link info, so that new connection will start correct
with VDEV-MAC address mapping.
Change-Id: I625c74d9cf42a4a78f23dcc419b4151717c203ae
CRs-Fixed: 3557829