If roaming is triggered by source CM_ROAMING_NUD_FAILURE,
then per the INI gEnableNUDTracking to check whether
disconnect current connection or not.
gEnableNUDTracking=2, keeping the connection
gEnableNUDTracking=3, disconnect the connection
Change-Id: I0f321dcf5f3fc1bf7d0c93fa0d70bf4770ccaf35
CRs-Fixed: 3412213
Extend WMI_ROAM_STATS_EVENTID event information for
requirement of:
1.Roam trigger related information, include timestamp,
trigger reason, trigger condition, abort reason,
scan type, roam status and fail reason.
2.Roam scan related information, include scan channel
number, dwell type, max dwell time of each channel
and total scan time.
3.all types of roam related frame information, include
timestamp and successful or failed status for Preauth,
Reassoc, EAPOL-M1/M2/M3/M4.
Cache roam information in wlan driver, when qca vendor
cmd of QCA_NL80211_VENDOR_SUBCMD_ROAM_STATS get roam
information, driver send all the cached information to
user space.
change-Id: Ic5e1120b51c20c103100833b4296002c5939b021
CRs-Fixed: 3389269
During OWE roaming if north bound disconnect is received or
link vdev connection fails copied reassoc response is not freed.
Fix is to free the copied reassoc response in the disconnect path.
Change-Id: I19d839b63c774b29ee449635722fae744c7e461d
CRs-Fixed: 3404843
Currently, TDLS STA disconnect notification is not sent during
roam, so WMI_TDLS_SET_STATE_CMDID with disable command is not sent
to firmware. This leads to unexpected behavior in firmware when STA
have migrated to different mac based on new band (2 GHz to 5/6 GHz or
vice-versa) due to roaming, but TDLS STA remain on previous mac.
Firmware expects host to send WMI_TDLS_SET_STATE_CMDID on roam also
so that it can destroy and create new TDLS STA instance and map TDLS
STA to new mac.
To fix above issue, send WMI_TDLS_SET_STATE_CMDID with disable TDLS
state to firmware after driver receives roam sync indication which
leads to destruction of TDLS STA instance in firmware.
Host driver would later send WMI_TDLS_SET_STATE_CMDID with enable TDLS
state(not part of this commit) after successful STA roaming so that
firmware maps TDLS STA with new mac.
This change also removes unused ucfg_tdls_notify_sta_connect() and
ucfg_tdls_notify_sta_disconnect() APIs.
Change-Id: Id680d0f6193740b24e78115ac7dc7be26e28acff
CRs-Fixed: 3388507
In multilink ML STA, if one link is removed by AP, and no other
active link, trigger roam by roaming invoke command.
Change-Id: I61d9413e2102315b258f946af2193f7cfb7b91aa
CRs-Fixed: 3352870
Limit num_chan to be less than WLAN_MAX_LOGGING_FREQ
and NUM_CHANNELS to fix potential out of memory access.
Change-Id: I5e0bcd449a738fa416daeaebaeafbd2ec11913ba
CRs-Fixed: 3405136
Componentized code should be adhering to the coding standard.
However struct roam_offload_synch_ind has a large number of
camelcase members.
To fix this replace camel case members with snake_case.
Change-Id: If866379d8f01cc0e932ea391d586575de4af9163
CRs-Fixed: 3383579
Even primary interface is configured, if dual STA policy is
STA_POLICY_UNBIASED, MCC is disallowed for both roaming and connect.
Change-Id: I6e26fdcdc930eb116771abfe310811c6534be09f
CRs-Fixed: 3396425
In case of legacy to multi-link MLO roaming, if roam sync event
handling fails, then the pe_session is deleted for the link
VDEV and the cleanup happens only for the assoc vdev. Since,
the link vdev doesn't have proper session/vdev params, the
cleanup fails in link VDEV. This leaves the link vdev in UP
state, even after disconnection. Therefore, subsequent attempts
to connect to an MLO-AP would fail since the partner link is
never cleaned up and is in invalid state(UP).
To fix this, propagate the HO-failure error through state machine
and move the VDEV SM from UP->DOWN directly.
Change-Id: I6480a1821ab4c8cf9af6cd96af0f7889307c3b18
CRs-Fixed: 3362995
Add APIs to set/clear link removal flag on vdev object.
If link is removed, drop the disassoc or deauth frame for
the vdev.
If disconnect start is indicated, stop the reconfig timer.
Clear the link removal flag on disconnect complete.
Change-Id: I729621aec36b82de6e88970675b020a2c5721e68
CRs-Fixed: 3352779
Currently, the definition of WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID
is present at the fw-api level. The host should not be using fw-api
definitions outside the WMI TLV code. To make sure it,
1. Add host-defined enum vendor_control_roam_param which defines
the param IDs that the host supports.
2. Add logic to convert host-defined enum vendor_control_roam_param
to fw-api defined enum WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID and
vice versa.
Change-Id: I035ece1bc0af8e583782460868193affb76db0f3
CRs-Fixed: 3363916
Add critical update feature code. If BSS parameters change
count (BPCC) is changed, the value of cu_flag returns from
function lim_check_cu_happens is true. It can try to update
the critical update IEs code logic per cu_flag.
Change-Id: I39445a75e747e6e00a29be726fd447b9fbc7fb17
CRs-Fixed: 3296181
In case of 1x MLO roaming, 4 way handshake is offloaded to supplicant
and link vdev is down in FW. Host has to bring up link vdev post
set key installation.
Add handling in host for following:
- During roam sync indication handle only assoc link.
- Save reassoc response and link information.
- After keys are installed bring up link vdev by
queueing connect req on link vdev.
- Enable roaming after all links are up.
Change-Id: I9c0722f88e950ba05ec3dd7f44883bedf568f97d
CRs-Fixed: 3287316
Currently, unsafe channels are avoided when SAP restart happens.
If WMI_COEX_FIX_CHANNEL_CAPABILITIES is advertised by firmware
and if the SAP is started in a fixed channel, don't restart even
if the current operating channel is unsafe.
Change-Id: I5f7d632bcc00a1b5351dad64aca0ce16f1057537
CRs-Fixed: 3381394
During T2LM validation to pick assoc link, only check if
operation mode is station and if t2lm ie is valid.
Change-Id: Id31f83fabd22ae0e434e2720df773f778c7bb448
CRs-Fixed: 3370578
Firmware sends the roam scan info tlv to driver during roaming.
Currently, in this tlv, firmware fills scan type as (0-3) and
driver log this as "PARTIAL", "FULL", "NO SCAN" and "Higher Band"
But with new requirement, idle roaming shall only roam to higher band
(2.4 GHz < 5 GHz < 6 GHz) than current band.
1. If current band is 2.4 GHz, it cannot roam to 2.4 GHz.
It can roam to 5 GHz and 6 GHz.
2. If current band is 5 GHz, it cannot roam to 2.4 GHz and 5 GHz.
It can roam to 6 GHz.
So, to add this requirement, firmware introduces new scan type 4 for
which driver need to log.
Change-Id: I80d1c47a434da5009aed4cab08c6eae91bda5b0e
CRs-Fixed: 3379468
API to free the roaming info, fils ie and connect ies is now
present in cmn. Reuse of the same API to optimize the code.
Change-Id: I63b416323b4882ee589941e9b06f45a094b3f800
CRs-Fixed: 3378946
In api cm_roam_stats_print_11kv_info(), neighbor report
logging was not supported.
Add support for Neighbor report connectivity logging
through api cm_roam_neigh_rpt_req_event() for Neighbor
report request event and api cm_roam_neigh_rpt_resp_event()
for Neighbor report response event.
Change-Id: If9d93584d4030f76b5175d361dfd34fce3b5b5b1
CRs-Fixed: 3370797
Change done to handle t2lm ie after MLO connection
is completed and save tsf value received in beacon.
Also fix to not select link if tid mapping is not present.
Change-Id: Ie2ce1fcfa50a4e14a083a508b268dfebb308d3ad
CRs-Fixed: 3342807
Add support for T2LM action frame handling.
- Add an API to parse T2LM negotiation request action frame
and accept or reject T2LM mapping based on ML link info.
If accepted, store the new info in peer level context
and send it to FW.
- Add an API to send T2LM response action frame to
acknowledge request action frame with status code.
- Add wrapper API to invoke T2LM deliver event.
Change-Id: I10d440bd1713740ab8b9f1fe46439bea92e179db
CRs-Fixed: 3367425
Adding extn_ie_header and the invoking function
wlan_mlo_parse_t2lm_info because dot11f logic
removed the ie header.
Change-Id: I957c574ecf6323bfd6fb488f417ab1f738b4ee37
CRs-Fixed: 3362726
The kernel-doc script identified a multitude of documentation issues
in components/umac, so fix them.
Change-Id: If30358cb83e90348e410cfea163353f2dd26b3fa
CRs-Fixed: 3360814
Reproduce steps:
1. Driver received roam start from F/W, enqueue roam cmd in active queue.
2. Driver received disconnect cmd from wpa supplicant, set link vdev
vdev1 as disconnecting, enqueue disconnect cmd in pending queue.
3. Driver received MLO roam sync event from F/W, need handle link vdev
first, assoc vdev later.
4. Driver didn't handle link vdev1 roam sync for disconnecting state, DP
MLD peer isn't created.
5. Driver handled vdev0 roam sync, dp_peer_setup failed for DP MLD
peer not created, asserted.
To fix it, when handle vdev0 roam sync, check state of all mlo vdev,
if either disconnecting, abort roam sync, and delete roam req, let
disconnect from upper layer continue.
Change-Id: Ie03e0031908fef0f403d2cacf8ec976a147ef1ed
CRs-Fixed: 3371850
The wpa_supplicant disables the BTM cap in extcap IE whenever
the MBO AP is not PMF capable, or if the btm_disable conf is set.
In current host driver design, the BTM offload is disabled only for
the MBO+non-PMF case. Therefore, add change to disable the btm offload
config if the BTM CAP is not present in the (re)assoc request as this
is determined based on intersection of peer and self cap.
Change-Id: I2fdc1010bccf5ce23f4ab2177aed6c374f7a510f
CRs-Fixed: 3369096
Currently host sends two ndp inactivity timeout
params to firmware one after the other.
Combine these two ndp inactivity timeout vdev
set params and send to WMI to reduce number of
transactions.
Also replace target wmi pdev/vdev params with host wmi
pdev/vdev params to fix existing broken layering
violation.
Change-Id: Icaeca85f2aa074f04d268b819fe86f4b7879c25b
CRs-Fixed: 3333749
While scheduler thread init and enable RSO after MLO connected,
wpa_supplicant deinit RSO for MLO disconnect.
At last, RSO is enabled on host, RSO is deinited on F/W side,
no event for RSO stop cmd, vdev0 disconnect not finished for
cm_disconnect_continue_after_rso_stop isn't called.
To fix it, hold cm_rso_lock in cm_roam_state_change to make sure RSO
operation atomic. RSO operation of one thread not preemptied by RSO
operation of another thread. RSO init and enable process of connect thread
isn't preemptied by RSO deinit of another thread, no host F/W RSO out of
sync issue will happen.
Remove ucfg_user_space_enable_disable_rso from hdd_init_station_mode since
cm_rso_lock is held before created.
Change-Id: I3010895d26a622c2a14960847089a63736598b7c
CRs-Fixed: 3365417
Pass the akm explicitly in the external auth
request to the userspace since there are many
SAE AKM suites.
Change-Id: Ifef8657f7ef75b402aa670813eba6adc5ab9853a
CRs-Fixed: 3355395
For legacy STA like wlan1, has no MLD addr, can't copy it after roaming,
or vdev self MAC becomes 0.
Change-Id: Ia5d1f01d9101bfaba275cc879a14f2b8c6426d3b
CRs-Fixed: 3366012
When STA roams to an MLO AP, non-assoc link might be superior
in features compared to assoc link and the per-STA profile
info may carry corresponding IEs. These IEs are extracted
and added to IE list of link probe response while generating
it. So, the link probe response generated from assoc link
probe response might be of more size than assoc link probe
rsp. Allocate buffer for the scan entry to be added to scan db
and bss descriptor to accommodate all of the IEs got generated
as part of link probe rsp generation.
Allocate MAX_MGMT_MPDU_LEN bytes for IEs as the max frame size
that can be received from AP is MAX_MGMT_MPDU_LEN bytes.
Same is applicable for link scan entry addition to scan db in
case of initial connection.
Change-Id: I2c2bb79176984a98034c071389c60ee4f649fd74
CRs-Fixed: 3359087
Currently, link frequency is fetched from roam sync indication
based on vdev_id. But the vdev_id is of assoc link in OWE/1x
cases(where link vdev would be down as part of roam sync handling)
but it would of non-assoc link in case of other modes
like SAE/WPA2/.. So current fetching of frequency based vdev_id
may give invalid frequency in SAE case as non-assoc link vdev_id
is passed.
Fetch the frequency based on link mac addr to avoid such failures.
Change-Id: I0a5748ac351473d85b21f2da8d8f124715c4d595
CRs-Fixed: 3358448
When roam from legacy to MLO/SLO, need change vdev self mac to link addr.
When roam from MLO/SLO to legacy, need change vdev self mac to mld/net
addr.
Change-Id: Ife17fd0a79a9f067eb72ac510dbf437b6d3649d8
CRs-Fixed: 3351027
This is applicable only when the roaming happens from 2.4 GHz/5 GHz
to 6 GHz AP.
The value is used to check if the 6 GHz AP to which we are roaming
(from 2.4 GHz/ 5 GHz) is better than current AP in terms of RSSI.
This checking is disabled if the value is set to zero.
Change-Id: I77f1183e1fd704dfa153841e669a20c9e75d0fe7
CRs-Fixed: 3353346
In WoW mode, roam auth event may comes before roam start event, so CM
isn't in ROAMING state at that time, can't assume ROAMING state.
Change-Id: Ibf868db1ca0f9863d4beae4c83227cf04fe55adb
CRs-Fixed: 3357115
For SAE-EXT-KEY AKM with group-21 pwe, the PMK
length is 64bytes. Therefore, increase the max
size of the PMK to 64bytes in host to facilitate
PMK storage and PMK offloads.
Change-Id: I777a31acd56073d6a0312c47d95fe7d155b06fc6
CRs-Fixed: 3353102
Driver adds a BSSID to the reject list due to multiple
DE authentication triggers from associated AP. If DUT tries the
FASTREASSOC command for the same BSSID multiple times, the host
triggers disconnection to handle roaming failure, and this results
in DUT losing the current connection.
To keep the current connection DUT should not trigger a roaming
event if the BSSID is already added to the reject list in the
host.
The fix is to add logic to avoid the FASTREASSOC trigger command
for AP(s) present in the reject list of HOST.
Change-Id: I315da12b3f93d5d9d67396a5dd9e12fa2be5fda0
CRs-Fixed: 3328847
During the roam scan, if there are no desired APs found in the partial
frequency list, an immediate full scan on all the supported frequencies
is initiated as a fallback. This would include the 6 GHz PSC
frequencies by default.
This attribute allow that behavior to be modified to include PSCs only
if 6 GHz use has been detected in the environment.
Change-Id: I6dc380419f14b920737fd87cd9a487c28364563b
CRs-Fixed: 3351697
Adds support to parse and validate T2LM IE,
based on tid to link mapping pick the
association link for MLO connection.
Change-Id: I8ea23ff10f2a637148686f1e2194fd8cc1f4fb90
CRs-Fixed: 3344675
Roam sync may get aborted on link vdev due to multiple reasons.
Link scan entry being not available at host is one such case.
del_sta response of BSS gets dropped due to stale link-RSO state
and results in disconnect timeout.
Reset the RSO state machine of link vdev when roaming is aborted
to allow cleanup the vdev in next disconnect.
Change-Id: Ie584c5b7ccae989cf2ce64e85da26d1b3526f1e0
CRs-Fixed: 3352543
User can include/exclude the frequencies in roam full scan that
were already scanned by the previous partial scan, using the new
vendor attribute introduced as part of roam vendor command.
Host sends the configured value to firmware.
As per current implementation of roam scan, if there are no APs
found during partial scan, immediately a full scan will be
initiated as a fallback. This includes all channels that were
already scanned as part of partial scan.
This attribute controls the optimization, to exclude all channels
which are already scanned as part of partial scan.
Change-Id: Icd6381b4daadcfe32dabda131ae92e2e32f07f1d
CRs-Fixed: 3343657
Clean up code for sme_get_empty_scan_refresh_period_global() and
sme_get_neighbor_scan_refresh_period() apis
and replace it with ucfg api.
Change-Id: Iaa511024467f45dc408da3db202b25f9b5276453
CRs-Fixed: 3335898
Clean up code for sme_get_roam_opportunistic_scan_threshold_diff() and
sme_get_roam_scan_home_away_time() apis and replace it with ucfg api.
Change-Id: I7de3bf3faff990cbf667cb8106044a33f16f3a46
CRs-Fixed: 3335898
Clean up code for sme_get_wes_mode(), sme_get_is_lfr_feature_enabled()
and sme_get_is_ft_feature_enabled() apis and
replace it with ucfg api.
Change-Id: I7715ba361264fcb2c0c93d8d073813538347dd31
CRs-Fixed: 3335898
Clean up code for sme_get_neighbor_scan_max_chan_time() and
sme_get_neighbor_scan_max_chan_time() apis and replace it with ucfg api.
Change-Id: I8a9de18f22e352ed8c64f415fd0455f64227a857
CRs-Fixed: 3335898
Clean up code for sme_get_roam_rssi_diff() and
sme_get_is_ese_feature_enabled() apis and replace it with ucfg api.
Change-Id: I226efbcf8ecd44b08684a3e17e2db987c169946d
CRs-Fixed: 3335898
Clean up code for sme_get_empty_scan_refresh_period() and
sme_get_neighbor_scan_min_chan_time() apis and
replace it with ucfg api.
Change-Id: I372fcbcf4f96af2c642a5fe93c0f8e2ce98174ea
CRs-Fixed: 3335898