Add an API to loop through all existing connections and check if
the new connection frequency causes DBS/SBS.
Change-Id: Ib7929fc969cd04a26e082f6f9a3acf991befcc5d
CRs-Fixed: 3600235
If disconnection event is for link switch, do not trigger SAP
force SCC check. And if link switch is in progress, skip
the force SCC workqueue.
And if link is in middle of switching, do not run link force logic.
Change-Id: I4a8bf59ff16dca2caf560eb36e1bc58f7d6a919b
CRs-Fixed: 3590814
Currently mutex is being called while taking rcu read lock
which is resulting in "sleeping function called from invalid context"
warning as mutex is not allowed while holding rcu_read_lock.
To fix the issue replace rcu lock with rtnl lock.
CRs-Fixed: 3600635
Change-Id: I41aa27094ef58363eeda4bdb15f23d312e7bac37
From the kernel, it is expected to hold the mutex lock while
channel switch notify. Currently it is not done hence kernel
is asserting while channel switch notify.
To avoid kernel assert, hold mutex lock before driver
invokes channel switch notify.
CRs-Fixed: 3598047
Change-Id: I8838aa07bc12c317c494ad7e17116d090582944a
1. Upper layer sends QCA_WLAN_VENDOR_ATTR_LINK_STATE_CONTROL_MODE
vendor command to configure control mode in host/fw.
2. Host receives GET_ML_LINK_STATE driver command to return
control mode (configured at step 1) to upper layer.
Host should reply as a response of GET_ML_LINK_STATE with same
value of control mode configured at step 1 to upper layer.
Change-Id: I6ae82c2a1c0e4ff13cea678bf27916a3cda8ad81
CRs-Fixed: 3595730
Currently mlo sta context is accessed without null
check in mlo api's.
Add null check for mlo sta context in mlo_check_if_all_links_up
and mlo_check_if_all_vdev_up api's.
CRs-Fixed: 3601823
Change-Id: Iea3f1daf1d9aef40efdff21a02e8a3c23494bfad
The API wlansap_get_valid_freq was used to get new SAP channel
when country code changed from world mode to non world mode.
In STA+SAP concurrency case, SAP may be force SCC to STA channel
or the other band's channel. And If STA is disconnected, normally
the SAP should move back to original channel frequency on 5 GHz or
6 GHz. But in current code the API wlansap_get_valid_freq will
still be invoked to get new SAP channel based on PCL after STA
is disconnected. It is not expected.
Fix by add new master_ch_list_updated flag to indicate
the master channel list has been changed from 2.4 GHz only to
2.4 GHz + 5/6 GHz and based on the flag to invoke
wlansap_get_valid_freq to get new SAP channel.
The move back to original channel has been handled by
policy_mgr_is_sap_restart_required_after_sta_disconnect.
Change-Id: I33b7a4cda3b45221b45e2aec85069477d0999d4e
CRs-Fixed: 3596546
Currently, if FW advertises more than three HW modes, host
returns error as the current max is 3. Need to increase value
to 4 to support aux eMLSR single and aux eMLSR split modes.
In addition, add path to handle aux caps when advertised from FW.
Change-Id: I4ee873951952c5b1abd31e9e28084d32eda782bd
CRs-Fixed: 3599089
If link switch connection fails due to any reason the netdev
queues are stopped which leads to NUD failure and finally results
in connection teardown.
As we have one non-transitioning link for data transmission
in case of link switch, don't disable the netdev queues.
CRs-Fixed: 3599028
Change-Id: I4555ca3705950ce874b90f8a6e8cc5a50ea92793
Older versions of kernel (<5.12) support the interface creation
through vendor command. But newer versions of kernel (>5.12) expect
the NDI interface creation to happen in two phases due to RTNL lock
removal for the vendor commands.
1. Create an interface through add_virtual_intf in STA mode
2. Change the mode to NDI through vendor command.
Currently, if NDI start fails due to some reason (like vdev creation
unsuccessful), then driver tries to close the adapter for newer kernel
version (>=5.12) as well which causes crash in driver.
For kernel version (>=5.12), userspace handles the interface deletion,
so, close the adapter only when userspace provides the interface delete
cmd.
So, to fix this for the new kernel version, do not close the adapter
Change-Id: Ia11405823cf264eb3f2d81f67571c9e6e2fbff69
CRs-Fixed: 3601352
Currently if CAC in progress, it prevent SAP restart happen, if there
is some event like set band command come during CAC wait time, it is
not possible to restart SAP even after CAC END.
Change I54663bdd887e3d591d7fd9ee7ce76572b1ef21f7 moved
check_concurrent_intf to SAP interface manager, which will not invoke
when CAC END, so add policy_mgr_check_concurrent_intf_and_restart_sap
in sap_cac_end_notify().
Change-Id: Ida370804d0c7145b750c9dad5c169b74f9c37cd6
CRs-Fixed: 3586509
When vdev station stats are requested on mlo standby link,
report default values for RSSI and Chain Signal RSSI.
Change-Id: I596471d5c51ae5c1ca8e5d7afb72fafce7039176
CRs-Fixed: 3601662
Currently, host disables eMLSR by sending INACTIVE_NUM cmd to
firmware when eMLSR is active. Host sends FORCE_ACTIVE cmd with
both the links to re-enable eMLSR when eMLSR enable vendor command
is received from userspace.
But recent changes in MLO link management and policy mgr expect
a NO_FORCE when a legacy connection(e.g. NAN here) is gone.
Send NO_FORCE upon NAN disable inorder to adhere to the
new link management changes.
Change-Id: I6ff2c9f102c21b437a18310b9406ae3c990d3d17
CRs-Fixed: 3591684
Currently, if the AP advertises both Local and Regulatory
TPE IEs in the beacons, STA uses an INI to choose one over
the other. Vendor ask is to change this logic and allow STA
to use the minimum of the two TPE power limits. Also,
deprecate the INI that sets the preference between local
and regulatory TPE IEs.
CRs-Fixed: 3574510
Change-Id: Ibf19020d59621efa72cf290ef34c825fdb50e3e7
After roaming to 3 link AP, update the MLO manager with the
self link address received from the roam synch indication.
Change-Id: I6258abe7bb9e140307c30fee8701ef12a618d9f1
CRs-Fixed: 3591487
Support wpa_cli driver GET_MAX_BW with link_id and bandwidth.
Support get all MLO 2links link id and bandwidth.
Change-Id: I304b581fa06db23281422cafeecd0f6a868eee14
CRs-Fixed: 3544825
Currently host driver is using roam_sync state to update the
roam count in connection info structure. Connection manager
clears this roam sync state before it host invokes the save
bss info API where it actually updates the roam count in
connection info structure, this leads to the incorrect information
update in connection info structure.
To address the above issue, use the is_reassoc state from connect
response structure in save bss info API.
Change-Id: I0d35f04b7e2492fe96a23edefc0caf002acb6537
CRs-Fixed: 3591711
lim_check_oui_and_update_session call location is changed by
Change-Id: Ib99072c36b72859cb1f8a4336f8aa7f696cb7d02.
session->nss is initialized in lim_check_oui_and_update_session,
it should be called before lim_extract_ap_capability->
lim_check_is_he_mcs_valid, or he capable of session is disabled,
he cases will fail.
To fix it, lim_check_oui_and_update_session call location is changed back
to follow lim_join_req_update_ht_vht_caps.
Add new function lim_disable_bformee_for_iot to handle IoT issue,
since it need get channel width of session, let it be called after
lim_extract_ap_capability.
Change-Id: Ice1d86b3f6711a116b94cd139aae87f249c554d4
CRs-Fixed: 3600303
Add a sanity check for validating vdev_id in the function
sme_set_wlm_latency_level. If Invalid vdev_id is passed down
it might lead to an assert in firmware.
Change-Id: Ie410d2655a607628b0741c9efd1fbfaa00c5dc78
CRs-Fixed: 3599133
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
Add support for STA info logging via api
wlan_connectivity_sta_info_event()
STA info logs is sent immediately after the
connect request initiated from userspace.
Change-Id: I92c42c9ca27f90acae23452e8fba1f2b20396214
CRs-Fixed: 3597543
When wpa_supplicant adds tdls peer during sta disconnecting,
scheduler thread clear MLO flag of vdev0, in wlan_key_get_link_vdev,
wlan_vdev_mlme_is_mlo_vdev(vdev0) return true, in
wlan_key_put_link_vdev, wlan_vdev_mlme_is_mlo_vdev(vdev0) return false,
WLAN_OSIF_TDLS_ID vdev ref count is released in both
wlan_key_get_link_vdev and wlan_key_put_link_vdev, while
WLAN_MLO_MGR_ID vdev ref count isn't released, assert will happen.
To fix it, add check in os_if, if vdev not up, reject tdls add peer to
avoid such race condition issue.
Change-Id: I851b269ee4a5649fe76cfa1fc6762b6ca41b0884
CRs-Fixed: 3598336
During refill thread cleanup shutdown event is posted and
we wait for thread to handle the shutdown event and exit.
But while posting shutdown event if refill thread is in running
state then there is chance of shutdown event not getting handled
and thread cleanup will be waiting indefinitely for thread to
exit.
Change-Id: I45bdad8d6a85b110ed7c7e206d3c79c5c03e9d98
CRs-Fixed: 3599295
Currently for STA case host driver set only connected bandwidth
in peer_flags.
If STA is connected in 320 MHz bandwidth, suppose AP send CSA,
STA downgraded to 160 MHz bandwidth but host sent only 320 MHz
flag set in peer_flags, this leads FW to unexpected behavior.
So, set all supported ch_width in peer_flags, if STA is connected in
320 MHz ch_width, set 160 MHz, 80P80 MHz and 40 MHz ch_width bits
also to solve this type of scenario.
Change-Id: I43328ac85c25913ad808abf6ab906827a9672b51
CRs-Fixed: 3557108
Since peer link status bases on vdev and stream goes through
vdev0 (assoc link) at start, rx/tx pkt count on vdev0, but
it choices vdev1 as tdls link, the peer status does not change on
vdev1 though it has been changed for vdev0 per the rx/tx pkt count.
To resolve this issue, set peer link status properly when forward
discovery response frame.
CRs-Fixed: 3590371
Change-Id: Idfb0b8c43e3b8d5b67a387ba3b877def15130eb6
Currently, log is added when any frequency is populated
as usable channel frequency along with mode, band and other
params which could lead to multiple log addition if Band set
is ALL bands.
The change is to remove unwanted logging.
Change-Id: I02221df6a43aa0de8d79cb973adf124a5c52f89b
CRs-Fixed: 3579443
There are two APIs wlan_get_opmode_vdev_id and
wlan_get_opmode_from_vdev_id present in the host driver for the
same task.
With this change, remove the duplicate API wlan_get_opmode_vdev_id
from the host driver code.
Change-Id: I7ff45610ff18da9c002e22c5be06f1414d3835bc
CRs-Fixed: 3593560