For mlo initial connect, vdev0 connected first, when received assoc rsp,
then up vdev0 at last trigger vdev1 connect, set wlan_connected_links
bitmap for vdev1.
For owe 1x roaming, vdev1 link is set up on host side, when handle roam
sync, we need stop RSO first to finish EAPOL, then trigger vdev1 connect,
set wlan_connected_links bitmap for vdev1.
Above design has race condition issue:
vdev0 becomes up (T1) before set wlan_connected_links bitmap for vdev1
(T2), if enable RSO for vdev0 happens between T1 and T2 for some reason
like vdev2 connect/disconnect, mlo_check_if_all_vdev_up return true, so
mlo vdev0 RSO is enabled in F/W before vdev1 up, which is unexpected.
Fix proposal for both initial connect and roaming:
For mlo initial connect, vdev0 connected first, when received assoc rsp,
we know whether other links need set up, can set wlan_connected_links
bitmap at that time, then up vdev0, at last trigger vdev1 connect.
For owe 1x roaming, vdev1 link is set up on host side, when handle roam
sync, we need stop RSO first to finish EAPOL, then set
wlan_connected_links bitmap for vdev1, at last trigger vdev1 connect.
Change-Id: I9abe48dbf7781be80ab5ec99ec42e6324a676283
CRs-Fixed: 3576584
Check wmi_service_n_link_mlo_support bit enabled for
API ml_is_nlink_service_supported.
Change-Id: I0f2a3cb55f84549ac064c43d8b0a2f00738a0ddd
CRs-Fixed: 3572844
Add link switch notifier callback to check concurrency
allow or disallow for link switch request.
If the target link is force inactive, disallow the link switch
to it.
Change-Id: Iac8b443c85bbf7c4b714b62e8f3d0968a3ad6226
CRs-Fixed: 3579454
If disconnect/connect is for link switch, do not notify
the link switch disconnect and connect event to link force
handler. That is not ML STA connection down. After link
switch connect completion, driver will re-evaluate the
link force state.
Change-Id: Id7463fa9ba80c4cf150ca069c297e226e8208010
CRs-Fixed: 3567072
roam_band_bitmap is updated based on the vendor command from
userspace, when NCHO band configuration is received.
Update the MLO support_link_band sent to firmware as part of the
RSO commands to intersect the user configured roam_band_bitmap
value.
This will restrict the firmware to advertise only those bands
sent in the WMI_ROAM_MLO_CONFIG_CMDID command, and firmware
will advertise only links corresponding to the configured
bands in the reassociation request.
WMI_ROAM_MLO_CONFIG_CMDID will be sent when
QCA_ATTR_ROAM_CONTROL_BAND_MASK attribute is received in roaming
subcmd: QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_SET as part of
NCHO set band, since RSO stop, followed by start is sent during
set band to update PCL to firmware
Change-Id: Iba34411956bdb09502623bac9a51fb4663c632a8
CRs-Fixed: 3580693
At present, the link removal flag is in vdev object, but vdev may
repurpose to other link, the link removal flag has to be in link
info struct.
Add link removal flag in link info data struct and remove
it from vdev struct.
Change-Id: I6116e89f2bb065979f4e405ef0fac386abebcf17
CRs-Fixed: 3572836
If no active vdev links are left after force inactive for concurrency,
then do not send the force command. Add standby link check for this.
Add handle special 3 Ports case to force inactive potential MCC ML STA
link.
Change-Id: If35c19b554bd1a4725c3498f9228e0273a031b6c
CRs-Fixed: 3572829
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
If STA (or ML STA link) + P2P CLI is SCC or MCC on 5 GHz, allow
second STA (or ML STA link) coming up on SBS channel or 2 GHz band.
Change-Id: If0b0b6787b1b6f3058a62c031d7f782ae9d23b4c
CRs-Fixed: 3577200
For link switch disconnect do not send the deauth/disassoc frame
OTA and avoid flow pool unmap as to avoid flushing the memory
allocated for the packets sent OTA for which status is not yet
received.
Once the status is received DP flushes them via the
non-transitioning link.
Change-Id: If2ec024f19730f6ebebf0428f912bfa8dbbddea9
CRs-Fixed: 3557779
If the connected monitor is configured and then legacy STA is trying to
associate to Access point, check is enforced to reject the connection
request if STA + Monitor concurrency is in place.
Legacy STA + monitor mode is not allowed, whereas Legacy STA +
connected monitor should be allowed.
Hence, Fix this issue by checking for STA + Monitor mode concurrency
only if local_packet_capture (Connected monitor) is not enabled.
Change-Id: Ia4fc74ab2ec91e6d66ebba23614268173da1e7bb
CRs-Fixed: 3574577
Populate policy_mgr_restrict_sap_on_unsafe_chan() to check whether need
check coex unsafe channel when SAP start on fixed channel, only
restriction_mask from user space configure set SAP bit requires to check
unsafe channel when SAP start on fixed channel. If ACS enable, SAP should
check unsafe channel unless above restriction_mask from user space
configure not set SAP bit.
This change is to change back behavior which changed by Change-Id
I4ccf887655066da6d6b50715f631dde6edfda598, and adjust Change-Id
Ie3947058d8854823a718b833ec788c5c8a14b903 after this change.
Change-Id: If8d26fa7cfdd4ffa44dd2009b4d6939f3d4c49b2
CRs-Fixed: 3525515
In 3 Port concurrency, if standby link is MCC with existing legacy
interface then force inactive the link to avoid link switching
to it.
Change-Id: I3373715940eab949542528cce66d87a0646e1e5a
CRs-Fixed: 3572695
With force link inactive cmd rsp, FW will always send a current
active/inactive link bitmap. Host will select one link from current
inactive bitmap, and update the policy mgr table. But FW can
still switch the active/inactive between the links in force num bitmap.
When SAP coming up on same MAC and MCC with the dynamic inactive link,
host will send force inactive the link to FW. Then FW will not try
to active the link even in dynamic mode.
Change-Id: Ib4e438ca4c8e6945b3d7db42cd92d0393fcc1fc9
CRs-Fixed: 3564737
Currently the FISA aggregation control flags, based on GRO
settings, are part of dp_vdev.
Move these FISA aggregation control flags to dp_intf,
since these controls are on an interface level, and not
on a per link level.
Change-Id: I93d0e215f8954376a96967cce6d533bd4be2d3a6
CRs-Fixed: 3574036
In 4 AP case: 2 AP on 2412, 1 AP on 5805. The 4th AP is starting
on 5180, but the current PCL PM_SCC_ON_5_5G_SCC_ON_24G contains 5180
and force SCC not happen.
Fix by change PCL to contain SCC channel only - PM_SCC_ON_5_SCC_ON_24.
Change-Id: I69923fa5b84c2178f0179fcc54d5f5aa6d77d016
CRs-Fixed: 3556240
Currently, host driver updates only assoc link channel to
firmware through roam_scan_chan list. Firmware may issue
an additional scan if it finds partner link channels in
the RNR info but not present in the roam scan channel list.
To avoid additional scan, send all link channels to the firmware.
Change-Id: Icfd9dac77f98a208b35d47060aab7cf2c5e4c885
CRs-Fixed: 3536183
Extract aux device capability and store it in wma/hdd/mlme.
current only 1 aux supported so only save info
for aux0.
Change-Id: Ib19bad6cf3c0bda5a31ea4993a2f7e587b2043e2
CRs-Fixed: 3549751
Support only D0 wow when direct link is up when XPAN feature
is up in WHC or P2P modes.
Change-Id: Ifbae57e4e1c8701950e7cecc095830a374603034
CRs-Fixed: 3559061
When FISA aggregated flow is flushed to n/w stack, there
is a vdev_id comparison between the flow and the head skb.
If this vdev_id check fails, the packets are dropped.
In case of MLO link switch during the FISA flow aggregation,
the packets might be received on different vdev (belonging to
the same MLD). Hence the vdev_id comparison will fail when
there is a MLO link switch in between the flow aggregation.
Since both the vdevs belong to the same MLD, add a MLD addr
validation to mitigate the above mentioned issue.
Change-Id: I0328dccff3f08da87f55758b469d773b9ea1169b
CRs-Fixed: 3568987
Based on requirement for pcie_config INI, convert corresponding
INI boolean variable to unsigned variable.
Change-Id: Ia0045c35a36bafe77e457b95f72fa1db86d2f0d3
CRs-Fixed: 3571497
While populating peer channel list to firmware, the channel
is checked if the state is CHANNEL_STATE_DFS. But for indoor
channels also this state CHANNEL_STATE_DFS is set. So the
indoor channels are removed from tdls peer supported channels
in tdls_extract_peer_state_param().
Use wlan_reg_is_dfs_for_freq() API to check if the given peer
frequency is DFS or not.
Change-Id: Ia16e55f8d00ba2686187a2b08c67a1e4a63a3d4d
CRs-Fixed: 3565520
Currently if STA+SAP SCC on a 6 GHz channel is present and
host received SET_FCC_CHANNEL 0 command then host disables
all 6 GHz channels except for STA connected channel. If
SAP's bandwidth is greater than 20 MHz then kernel sends
stop_ap as SAP bonded channels are disabled.
To address this issue, do CSA to a non 6 GHz frequency.
Change-Id: I89edf3c862c5b02f0eb5865428bdbb0d43d07f85
CRs-Fixed: 3563476
Add support to dynamic enabling the TDLS.
Vendor subcmd: QCA_NL80211_VENDOR_SUBCMD_TDLS_ENABLE
Change-Id: I3b9164ba04a4d9c23d7f580020966c222f8bd359
CRs-Fixed: 3562148
Add support to send whether currently TDLS is available or not.
Vendor subcmd: QCA_NL80211_VENDOR_SUBCMD_TDLS_GET_STATUS
Vendor attr: QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_AVAILABLE
Also add support to get the TDLS number of active sessions
using below vendor attr.
Vendor subcmd: QCA_NL80211_VENDOR_SUBCMD_TDLS_GET_STATUS
Vendor attr: QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_NUM_SESSIONS
Change-Id: Ie9ad09de9593559c4d57599a9af58a95af99e60f
CRs-Fixed: 3554429
Add gActionOUISendSMPSFrameWithOMN to send SMPS frame along with OMN for
specified IoT APs.
Change-Id: Ida35779d11f9c6d6340afdbebeb788520fa7afdc
CRs-Fixed: 3568463
Dynamic mac address update is a special case, where the
(sta)connection can change without the vdevs corresponding
to an interface. The tx/rx happens on the def_link of the
dp_intf, which does not get reset in case of dynamic mac
addr update. Due to this, all the tx of packets might be
attempted on an invalid dp_link, leading to drop of all
the packets queued for TX.
Add support to reset the def_link of an interface during
dynamic mac address update.
Change-Id: I1e87c083f39b56525f69c225117bcce538931dbb
CRs-Fixed: 3570440
dp_tx_rx_collect_connectivity_stats_info expects dp_link
handle as an argument. Currently many of the direct callers
of this function is passing dp_intf as an argument to this func.
Fix this by passing dp_link as an argument to the function
dp_tx_rx_collect_connectivity_stats_info.
Change-Id: Icfedc1cc721de4ad0b536967dc32a6af53b86e9e
CRs-Fixed: 3571037
Since driver support special roaming and common roaming,
support common BTM roaming update to userspace, and we
can fetch the info by vendor_cmd_tool.
Change-Id: I753ded47d650ae4c9c579265485f081c16581c25
CRs-Fixed: 3568450
During VDEV creation, vdev parameter "DISABLE_2G_TWT"
is populated in accordance to the value of ini
"enable_twt_24ghz" in order to indicate FW
to support TWT for 2.4GHz band.
Change-Id: I610bbaad3c5d12a8303939488ed2d7486dda404f
CRs-Fixed: 3560288
Currently datapath uses the vdev provided by UMAC for
tx of any packet. With the single-netdev-multi-vdev
model, there are chances that the vdev, in MLO case,
selected for packet TX in UMAC may not be the def_link
which datapath expects to use for tx/rx.
Hence, to mitigate, this issue, datapath will not use
the vdev provided by UMAC, but instead select a dp_link,
inside the dp_component, for tx/rx
Change-Id: I5ff4a79365b3426e1bcc6d4cac31a44058ee18db
CRs-Fixed: 3568989
Currently the opaque context passed to txrx_ops handlers
is incorrectly typecasted to dp_intf. The context being passed
is dp_link handle. This leads to unwanted memory access.
Fix this by correctly typecasting the context passed to
all the txrx_ops handlers as dp_link handle.
Change-Id: I587b12056625bb68e86ecb54118bb2f6bfa62bd9
CRs-Fixed: 3569531
Currently dp_rx_pkt_thread_enqueue_cbk passed dp_intf to
dp_rx_packet_cbk, though it expects the caller to pass
dp_link context. This leads to an invalid memory access
due to incorrect typecasting.
Fix this by passing the correct dp_link context to
dp_rx_packet_cbk.
Change-Id: If37fd18d49a6d5464e01c07160a1be612e564ffb
CRs-Fixed: 3568233
When MLO AP start, lim_create_peer_idxpool_legacy isn't called, so
gpLimPeerIdxpool in pe session keeps NULL. When AP do channel switch,
MLO concurrency check failed for current AP not ignored, AP MLO flag is
cleared. When Ref sta disconnect, access gpLimPeerIdxpool to free peer
id, assert happens.
To fix it, when AP restart, ignore current AP when check MLO concurrency.
Change-Id: I3625dcd4f8c1a5020588311706faa1eb70ae8e9d
CRs-Fixed: 3548564
Currently, we are storing all the keys based on vdev
object. However, with n link mlo there is a need to
add all the keys based on psoc level.
This change is to add pairwise key based on psoc level.
Change-Id: Ib2b53f800eeec0694514239a5d87052accadbc33
CRs-Fixed: 3565190
Currently in dp_txrx_init during dp_rx_refill_thread_init fail case
dp_txrx_handle is not freed which results in memory leak issue.
To fix the issue free dp_txrx_handle in dp_rx_refill_thread_init
fail case
Change-Id: I0804154519707d5d558940cccaa699f639ae6704
CRs-Fixed: 3563740
Initially, if hotspot starts in world mode, it can come up in
2.4 GHz only. Later, the correct regulatory domain gets configured
in the host driver.
Even if this new reg domain supports higher bands and better channels,
the SAP will not be able to move since the ACS list configured
initially is for world mode(only 2.4 GHz channels).
To fix this, after the initial ACS userspace will configure the
ACS channels as per the band preference. Upon new country change,
the host driver will use this updated list to switch to a higher/
better band.
Change-Id: I60524e60798df656b86cbd883a31b00ccd210bc6
CRs-Fixed: 3453679
Before the host triggers sleep mode, it configures listen
interval while setting power save parameters to firmware.
If user configured listen interval is present in host,
that configured listen interval is set while setting
power save params.
Change-Id: I158a547f95bca4750b5180840113c03a89ced17c
CRs-Fixed: 3528793
With these APIs, vdev connection is effected by the
WIFI standard version. For example, if wifi_std is
wifi6, then the connection will not use 11be feature.
Change-Id: I8f762f9cf16d876d5cf2847561b61c11a23e97b5
CRs-Fixed: 3554305
After moving to the single-netdev-multiple-vdev model,
the dp_link mac address needs to be updated as a part
of dynamic mac address update.
Add an ucfg API to update link mac address.
Change-Id: I96d3230f958c15cb576c881c02e60bd3a4fb0379
CRs-Fixed: 3563523
Add API to find the candidate for next default link.
This is used when the current default link is being
re-purposed or destroyed.
Change-Id: I98afd3ef2ac21d14ee6056f6329fbcf9a612959a
CRs-Fixed: 3519643