Select best candidate by mlo score algorithm.
Check bss mlo type first by mlo info, mlo config, partner frequency and
dbs/sbs cap, calculate candidate score for SLO/MLMR/EMLSR bss types.
For SLO case, same as before except:
Decrease percent of legacy band and nss to include 320M and 8x8.
Decrease max percent of congestion from 100 to 80 to include MLMR joint
congestion.
Increase weight of both band width and nss to 20.
For EMLSR case, same as SLO except adding EMLSR boost score.
For MLMR case, besides adding MLMR boost score,
calculate joint RSSI/band width/congestion score for combination of
scan entry + each partner link by new mlo algorithm, select partner with
highest total joint score as candidate combination, only activate that
partner link.
Change-Id: I640c6825d945caf5fab504a77717195c2eac0c93
CRs-Fixed: 3234912
Check RSN ie valid or not for beacon or probe response frames
in scanning. The invalid RSN ie will cause the AP filtered out
during candidate selection in connecting.
Change-Id: Id324ddfaa0f438482673e66b683dcf903d9fc0e3
CRs-Fixed: 3218707
If STA is connected to AP (non MBSS AP), the scm_age_out_entries
try to age out check for APs which are not non-tx AP of MBSS.
But the API doesn't check the current connect AP is MBSS or not
and do the mbssid_info.trans_bssid mac address comparing. So
the check is invalid if both trans_bssid is zero.
Fix by check mbssid_info.profile_num value first and then
trans_bssid field of two scan nodes.
Change-Id: I64ed1eddf0583211a305ba61e1d15a6c674be3fe
CRs-Fixed: 3236072
Supplicant compares AKM(s) in RSN IE of Beacon/Probe response and
AKM on third EAPOL frame received by AP. In the case of multi AKM,
previously Host converts all adaptive 11r AKM(s), if any, present
in RSN IE of Beacon/Probe response to corresponding FT AKM but the
AP(s) which support adaptive 11r (ADAPTIVE_11R_OUI: 0x964000) only
converts first AKM to corresponding FT AKM and sends third EAPOL
frame to DUT. This results in failure in a 4-way handshake in
supplicant due to RSN IE miss-match between RSNIE sent by host
and RSNIE present in third EAPOL frame. Now like AP, the host is
converting only the first AKM to corresponding FT AKM to avoid
RSNIE mismatch in supplicant.
Change-Id: I522c6e313df50c1ef2952ec2e464a107ae739dad
CRs-Fixed: 3230622
-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.
Change-Id: Idc7c80891aed551db5b6b87eba7b44b6c75ecad3
CRs-Fixed: 3217348
As part of a transition of basic MLO functionality to IEEE802.11be
D1.5, add definitions and receive processing for the signaling of the
presence of BSS Parameters Change Count subfield in STA Info field in
Per-STA Profile subelement in Basic Multi-Link element Link Info
field. This presence is signaled by a new bit in the STA Control
field of the corresponding Per-STA Profile subelement. Rename the
definition for BSS Parameters Change Count (sub)field size to make it
generic since it may occur in various protocol signaling areas
related to MLO.
Change-Id: Ieb17f65547b7106442369b51cd6bc303046a224a
CRs-Fixed: 3197012
If puncture of primary 20M channel of beacon or probe rsp is not 0, the bss
is invalid and filtered out when DUT STA select candidate AP to connect.
Change-Id: Ic27c75ab07ec91a80164a12b0928c98bc8911f99
CRs-Fixed: 3208103
Get mlo partner link freq from RNR IE.
Use band bitmap to filter mlo AP by band.
Force link on 2 GHz: mlo_support_link_band=1
Force link on 5 GHz: mlo_support_link_band=2
Force link on 6 GHz: mlo_support_link_band=4
Change-Id: Ib11dee117bef6121bbc455b62a2803138881a72a
CRs-Fixed: 3211974
Remove forward declaration of util_scan_get_he_6g_params. This
declaration is not required and is resulting in compilation
issues.
Change-Id: I43ac0839fa2a17d6e91811643d3ceb72c925e92f
CRs-Fixed: 3210127
Add boundary check for the newly generated frame per subelement.
It should not go beyond the original beacon frame length.
Change-Id: I6de5519052a47119ec0a294941244c1b277233fc
CRs-Fixed: 3194793
Start searching for IEs in the multi-link per-STA
profile from the STA Profile field instead of the
STA Control field to avoid invalid checks that may
arise due to other fields in-between.
CRs-Fixed: 3199541
Change-Id: I0a0f5b6c83135974820d2870e00f6dcf9eab61fe
Currently STA can scan and come up on 6Ghz or indoor channel if
hardware is non-dbs and SAP is present
As part of this change, do not allow STA to scan on 6Ghz or
5Ghz indoor channel for non-dbs hardware if SAP is present
Change-Id: I97759f8b2c6a1c460d90fbb797a0e64d2532797c
CRs-Fixed: 3186406
1. MLO requires a tbtt_info length of 16 octets. To support
16 MLDs, it requires to extend the current global_rnr cache
accommodating this new requirement in 11be MLO context.
Redefine MAX_RNR_SIZE accordingly.
2. Currently, scan-module is considering only upto 5 reported
APs in a RNR element. This will be ok pre-11be as the RNR info
is not used for connection. RNR info is required for link to
vdev matching for MLO based connection starting 11be. So, the
limit specified by MAX_RNR_BSS needs to be extended to be able
to parse upto 16 tbtt_infos from the RNR elements present in
beacon or probe-response. Some APs can advertise upto 16 co-
MLDs when 6Ghz link is involved in those MLDs.
CRs-Fixed: 3191537
Change-Id: Iff532f7ea4f0ebf21947e24edbfa1f28d2d92af3
Currently 6 GHz channel flags are not set for channels
present in the list from PNO scan request but are set for
all other 6 GHz channels which are added when either of the
two below conditions are satisfied
1. Userspace sets NL80211_SCAN_FLAG_COLOCATED_6GHZ flag
in PNO scan request.
2. At least one 6 GHz channel is present in the PNO scan req.
Add flags for channels in the PNO scan request based on the
scan_mode_6g ini configured similar to active scan request.
Add changes to remove the RNR flag for the channel if the
corresponding short SSID entry is present in the RNR db
Cache since if colocated SSID is different userspace doesn't
include corresponding 2.4/5 GHz channel information in PNO
request.
Change-Id: I22c4f7ecf65d4ab09dfbbe126aefe02f9145de42
CRs-Fixed: 3119113
Disable obss scan for all vdevs under each pdev
when try to suspend, not just only disable the first one.
Change-Id: I52e46f43727acf004165f39a262b018dc174cc7f
CRs-Fixed: 3190706
When hidden SSID is enabled, the offset at which the SSID IE exists
in a beacon buffer is first calculated, after which the extra length
is added to the beacon skb.
Since this increase in length may change the start of the data in
skb, reassign the start pointer remembered locally
to the data pointer of the skb before adding the SSID configured.
Change-Id: Ida32927de5986105efdc10c5115466fe071aa9f3
CRs-Fixed: 3169213
Since the idx is always initialized zero in function util_scan_parse_rnr_ie.
If there are two or more RNR IEs in the frame, then the RNR info is
overwritten by the last one.
Change-Id: If6d47871267ea43c3a5b3130cae73ebd0de45930
CRs-Fixed: 3183233
Due to moving to 11be D1.3 old eht ops is seen as invalid and
unnecessarily flooding console. Moding these prints to debug level.
Change-Id: Ibb21ffe9ed670c9ef9bc1e6d91f90ea5118a78f3
CRs-Fixed: 3185395
In order to reconstruct frame for MBSSID feature, per the description of
the Reduced Neighbor Report(RNR) element about MLD parameters subfield
in section 9.4.2.170 of Draft P802.11be_D1.4, the RNR IE is modified:
1\ If the reported AP is affiliated with the same MLD of the reporting AP,
the TBTT information is skipped;
2\ If the reported AP is affiliated with the same MLD of the nontransmitted
BSSID, the TBTT information is copied and the MLD ID is changed to 0.
Change-Id: Ibd4f2af28289bdb2f65c26966a92ea4df530fccb
CRs-Fixed: 3136398
The Multiple BSSID field (Bit 22) in Extended Capabilities indicates
whether MBSSID is supported or not. Skip MBSSID processing if the
field is NOT set in beacon.
Change-Id: Id18318587cb9d26fa6315202b5bbe98ef8870fdd
CRs-Fixed: 3160715
For corrupt beacon frame, the memory allocated for
split_prof_start is getting allocated for split
profile case. But since there are no other nonTx
profile or new MBSSID element present afterwards,
Hence, added mem free to handle this scenario.
Change-Id: I6b93ae0be97d72264071d1ce99345f8c0c23f81d
CRs-Fixed: 3156909
Currently, Userspace can send multiple AKMs in connect req.
For 6GHz, some AKMs are not supported. Suppose in multiple
AKMs, any AKM doesn't support 6GHz then driver returns failure.
Due to this, DUT doesn't not able to connect to 6Ghz.
Fix is, allow 6Ghz if any 6Ghz AKM is supported.
Also adds necessary prints in scan filter API to help
debug the candidate rejection.
Change-Id: Id9967af5ec7f64e95b33dd8be3bd6c9649e72bb2
CRs-Fixed: 3158489
These macros define the min & max time from TBTT, when the scan
dwell time starts. They can be used as a parameter to the scan
WMI command.
CRs-Fixed: 3154082
Change-Id: Ieca8acfd2e6897a8e45fafaaffd8f283f451d203
If Vendor IE also presents in STA profile, it only needs
to copy the vendor IE from STA profile for link specific
frame and reported BSSID.
Change-Id: I48ed4e88f097fe6570b3f3df764cd707c4b758d3
CRs-Fixed: 3136382
Add support to update key management with higher security
after BSS create response.
Also, Currenlty if there are multiple AKM and ucast cipher.
Host overwrites AKM and ucast cipher value with the new one.
Instead of overwrite, add support to do ORing to keep all values.
Change-Id: I679a86debef649efbce1a08b60512d127f7fbbee
CRs-Fixed: 3113222
Due to the nature of discrete channel lists for each
power mode on the host driver, it is currently not
possible to scan 6GHz channels which are not part
of the operating regulatory power mode.
To enable scanning all 6GHz channels irrespective of the
regulatory power mode (i.e., standard, low, etc.), the
existing sanity checks for the regulatory current channel
list need to refer to the super channel list
instead.
Additionally, these sanity checks need to check the
channel state and flags for the best power mode instead
of the current power mode. This will allow the scan
manager to access all 6GHz channels irrespective
of the current regulatory power mode.
Multi-band operation (for radios operable on 2.4GHz,
5GHz and/or 6GHz) is also ensured in these sanity
checks.
CRs-Fixed: 3140935
Change-Id: If10c617834dd89f4bbd99669318fd84c63421755
Currently in wma_chan_info_event_handler chan info
is updated based on gEnableSNRMonitoring. By default
gEnableSNRMonitoring is set to false, due to which
chan info is not updated.
Fix is to keep gEnableSNRMonitoring enbaled, so that
chan info can be updated.
Change-Id: I77a999d64fca093c8bc50e4532e659f37a3ac593
CRs-Fixed: 3109317
Use CONFIG_REG_ 6G_PWR_MODE for the new API.
Use "_for_pwrmode" as suffix for the new functions.
Change-Id: I9b84944a59062277b76bc48877c47ea5afada0ec
CRs-Fixed: 3133023
The consumers of the current channel list may want to search through 6G
channels that are not part of current channel list and belong to channel
list of different power mode.
Therefore, replace the regulatory current channel list with that of 6G
power based channel list.
Change-Id: Ie2ff8bbfb50a5f95f584b134b18246cb28b1c406
CRs-Fixed: 3110987
Fix partner link updation in scan entry when AP MLD has more than one
partner link.
Change-Id: I981f16c9de819390d6830ffe7a5b1e438a4f8403
CRs-Fixed: 3125861
Operating class field used in RNR IE is of global operating
class. When getting frequency from RNR IE region specific
operating class is used for lookup instead of global.
Added changes to search operating class from global OC
table.
Change-Id: I200ab46187fed91cc66cd954b062c8d8ac44f631
CRs-Fixed: 3131600
First host checks below two things in PNO scan request:
1. Userspace sets NL80211_SCAN_FLAG_COLOCATED_6GHZ flag
in pno scan request.
2. At least one 6G channel is present in the pno scan req.
If any of above conditions satisfy, Host fills all remaining
(other than channel(s) present in pno scan req) valid 6 GHz
channel(s) to pno scan requests and set the flag
FLAG_SCAN_ONLY_IF_RNR_FOUND for each remaining channel(s).
Host sends this updated channel list via WMI command
WMI_START_SCAN_CMDID_param_tlvs->channel_list for pno scan
to firmware.
By this driver allows Firmware to scan 6G channels based on
RNR IEs only (for colocated APs reported by 2.4/5 GHz APs).
Change-Id: Ib6118c4525e9fbe233eb6a7e07a4a3345d486e8a
CRs-Fixed: 3103923
First host checks below two things in host scan request:
1. Userspace sets NL80211_SCAN_FLAG_COLOCATED_6GHZ flag
in host scan request.
2. At least one 6G channel is present in the host scan req.
If any of the above conditions satisfies, Host fills all
remaining (other than channel(s) present in host scan req)
valid 6 GHz channel(s) to scan requests and set the flag
FLAG_SCAN_ONLY_IF_RNR_FOUND for each remaining channel(s).
Host sends this updated channel list via WMI command
WMI_START_SCAN_CMDID_param_tlvs->channel_list for host scan
to firmware.
With this change, driver allows Firmware to scan 6G channels
based on RNR IEs only (for colocated APs reported by 2.4/5
GHz APs).
Change-Id: I2d9d2aac58bbc521b2476756d5919647bdc265cc
CRs-Fixed: 3103873
With the existing offset calculation formula in util_get_link_info_offset
function, the calculated offset was always greater than the length of the
ML IE. Hence, the above function always returned the value 0 for the
offset. The reason is, for example, '(BIT (4) & multi_link_ctrl) * 6'.
We are expecting this calculation to return a value of 6, but it is
returning 96 (= 0x10*6).
Modified the util_get_link_info_offset() to use WLAN_ML_BV_CTRL_PBM_*
presence bitmap to get the link info offset.
Change-Id: Ic548361ac2e82bddaed574cf197c3523d47304d5
CRs-Fixed: 3091674
Wlan host side doesn't have ways to know whether OBSS scan is
run or not if OBSS scan is offloaded to FW. So should let OBSS
scan disable action called directly to make sure OBSS scan is
disabled during each suspend.
Change-Id: I6134c038bbea2ae4f09662354d60063488696cb5
CRs-Fixed: 3097186
As requirement, concurrent mode, station 5G/2G scan need stop when AP
connected by peer station.
Condition:
STA + AP 5G (connected) + AP 2.4G skip 5G scan
STA + AP 5G (connected) skip 5G scan
STA + AP 2.4G (connected && 2.4G only) skip 2.4G scan
Others concurrency skip none
Add ini ch_list_trim_conc to enable/disable the feature. Default is
disabled.
Before send WMI_SCAN_CMD to firmware, call API
policy_mgr_scan_trim_chnls_for_connected_ap() to check if need
trim scan channel list. Which channel list need be trimmed
Change-Id: If4d1cf7347f757fb013ffcb4016e8e6f16859f42
CRs-Fixed: 3075068