Currently, after FINAL_BMISS detection, FW does channel map
based partial scan followed by one full scan if no candidate
found in partial scan to ROAM to another available AP without
disconnection. This results in additional delay by HOST in
issuing disconnection after a heartbeat failure.
Add INI support (bmiss_skip_full_scan) to allow FW to decide
whether firmware does channel map based partial scan or partial
scan followed by full scan in case no candidate is found in
partial scan after final BMISS.
Change-Id: I48f9bb43bb7933e9ff173f618586ea5986530dcd
CRs-Fixed: 2578848
Change max value of tx_bf_cap to 4294967295 from -1
which is misconfigured. 4294967295 corresponds to
0xFFFFFFFF which is max value for 32 bit unsigned
int since this CFG item is getting used as part of
4 byte dot11f HT capability population.
Change-Id: Ifd0fea080dd9eb1f6995af0df20c68e3f73b891a
CRs-Fixed: 2581060
In 11D scan procedure if WMI_11D_NEW_COUNTRY_EVENTID event is
received, host processes 11d new country code event.
Host driver as a response sends WMI_SCAN_CHAN_LIST_CMDID
new channel list cmd to firmware.
As a result the ongoing scan procedure is aborted by firmware,
and if the scan was a first scan for connection, then it would
lead to connection latency as the supplicant then have to
scan again.
Fix is to check if any scan is in progress, then delay
WMI_SCAN_CHAN_LIST_CMDID channel list command to FW till
the current scan is complete.
Change-Id: I4e747bb747c32430b5d8024823aa0df4928a8c71
CRs-Fixed: 2569741
Currently, default MGMT retry limit is 4 which means 4
transmissions are supported for any management frame.
In noisy environment, Chances to get connection failure
are higher with 4 retransmissions.
Fix is to add INI support mgmt_retry_max to make
CFG_MGMT_RETRY_MAX configurable. Default value for
CFG_MGMT_RETRY_MAX is 15 to reduce the chances of connection
failure in noisy environment.
Change-Id: Id50cb68813fba517a8a1580a3d6662c73b0a381e
CRs-Fixed: 2575385
The event WMI_ROAM_STATS_EVENTID is received after
every roam, once the roam synch complete is sent by the host.
This event contains details regarding the roam trigger reason,
values associated with the trigger, roam scan candidate info,
roam status, roam failure reason.
This helps in debugging/understanding the scenario when roam
failure happens.
WMI_ROAM_STATS_EVENTID Format:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
roam_stats_event_fixed_param |-> Contains vdev id and number of
| roams detail.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
roam_trigger data TLV |-> Has details on the roam trigger
| reason. Number of roam triggers
| TLV detail is present in the
| fixed param. Maximum 5 roam
| per event is supported
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wmi_roam_scan_info TLV |-> Has details on the roam scan -
| scan type, rssi threshold,
| reason.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wmi_roam_scan_channel_info |-> Has details on the roam scan
TLV | channels. Number of channels
| per trigger is found on the
| wmi_roam_scan_info TLV.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wmi_roam_ap_info TLV |-> Has details on Roam candidate
| APs found during scan. Number
| of roam candidate APs per
| trigger is found on the
| on the wmi_roam_scan_info tlv.
| Max 8 candidates are allowed
| per roam scan.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wmi_roam_result TLV |-> Info on roam success or failure.
| Fail reason, if roaming failed.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wmi_roam_neighbor_report_info|->After roaming, firmware sends
TLV | neighbor/btm report to roamed AP
| to get list of roam candidates.
| This tlv provides info on this.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wmi_roam_neighbor_channel_info|-> This has the info on the
| channel list received as part
| of BTM/Neighbor report.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Print the info received as part of this event into kmsg.
Featurize all the function defines for this roam logging under
WLAN_FEATURE_ROAM_OFFLOAD flag.
Change-Id: Iddc70b572f2e3dc47f08fd1c3c3597cb44981a17
CRs-Fixed: 2576222
Change the default value of normalize weight ini to
disable all non-PSC 6ghz channels for the SAP ACS
operation, and give weightage only to the PSC
frequencies.
Change-Id: I4c8f349a396ffe4a2f378a59f5a67036b9d573eb
CRs-Fixed: 2578824
Currently, RSNE if given from userspace is overrided if the Ini
force_rsne_override is disabled as a security. But there
are sufficient checks already in kernel to validatethe RSNE
given by userspace. Hence this INI is no longer required.
Change-Id: Ifcc9298dcfa035d05e9ee4fb78a4fa2c9f249461
CRs-Fixed: 2573540
Based on the ini gfine_time_meas_cap, send enable/disable value to the
firmware for STA INITIATOR/RESPONDER mode using VDEV set param.
Change-Id: Idd4142e13061cd1af992bda88d0a0b81edc42fef
CRs-Fixed: 2574050
The current function doesn't handle "hw_mode" parameter.
And if band is specified the function needs to find the
correct "phy cap" in mac_phy_cap list.
The "supported_bands" can be a bit mask of
(WLAN_2G_CAPABILITY | WLAN_5G_CAPABILITY), use "&" to find
the phy cap of requested band.
Remove unused API wma_get_phyid_for_given_band.
Change-Id: I4b120d681b820e2a6e2b82f33d67fbcf6136af09
CRs-Fixed: 2571400
Roaming to new AP is depends on the periodic scan which occurs every
10sec in fw. Due to the default value of sticky time (btm_sticky_time)
to BTM AP is 5 min, periodic roaming scan gets disabled in fw till
sticky timer expiry. So FW won’t trigger a periodic scan for 5 min,
in case of roaming to new AP by BTM.
In case if STA roams to new AP by BTM and Disassociation Timer
expires before Stick time, DUT is not able to roam to a candidate
AP till Stick time expiry.
In order to allow roaming just after disassociation timer expiry,
Make Stick time value to zero by default.
Change-Id: I0de09ec7134d543a9c934a03941bcdb57b983dc9
CRs-Fixed: 2566842
Currently the driver uses STR_EDCA_ANI_ACBK_LOCAL as the length
for all the EDCA_LOCAL string cfg items.
Use the corresponding string length for EDCA_LOCAL string.
Change-Id: Ia6fd19b90c3d6c2c6e7a12e9f44389db2bf160f8
CRs-Fixed: 2569514
As part of Ie9ffc701d93ed1c050375dd56151b7a0da69cdce the STA mode
channel change was added in disconnected state for spectral scan
test at CV2X platform.
Now with iwpriv wlan0 setMonChan on STA mode, a monitor mode
pe_session is created in PE/LIM which take ref count with
WLAN_LEGACY_MAC_ID. As the interface is STA type this session
is not deleted when vdev is deleted. This lead to vdev ref leak.
This code is broken and is no longer in use and cause vdev
ref leak when executed. Thus revert
Ie9ffc701d93ed1c050375dd56151b7a0da69cdce.
Also move the lim session create to hdd_set_mon_rx_cb during
vdev create, as it is deleted during vdev delete.
Change-Id: Ib60aa2bd2746a8cd17f20efa7506c18784a42630
CRs-Fixed: 2557160
Move to the common psoc object and retrieve the cfg ini
information from the legacy implementation.
Change-Id: I38147c748796550f2adede44b681559a4f329fbf
CRs-Fixed: 2547536
Normalize the weights of the frequencies for ACS scan
if the user has changed them in the ini.
This is done as legacy devices wont be able to scan
the newly added 6ghz frequencies, and thus wont
be able to associate with the SAP if it starts
on 6ghz channels.
Change-Id: I2dd2f706c248f5339bde06963540d0874d08b847
CRs-Fixed: 2543007
Currently in hdd_adapter, the variable sta_info is an array of
hdd_station_info structured indexed by the sta_id. As sta_id is no
longer used this array based implementation becomes unnecessary.
Move the sta_info implementation to a hash table implementation.
Change-Id: I7d6fe04b7e0ab22615d431de9a10a4ad38ed65ba
CRs-Fixed: 2514280
Based on the ini "ignore_fw_reg_offload_ind" ignore regulatory
offload indicatin from fw.
Change-Id: I6e20f2100eeac8e93baa5c5d3f3d1c8b33356aed
CRs-Fixed: 2532989
CFG_VENDOR_ROAM_SCORE_ALGORITHM is added to specify the
preferred roam score algorithm.
With value 1, the new V2 roam score algorithm will be used.
With this roam score Algorithm, AP score will be calculated
based on below equation:
AP Score = (RSSIfactor * rssiweight(0.65)) +
(CUfactor * cuweight(0.35))
This algorithm value will be sent to firmware over the
WMI_AP_PROFILE command.
Change-Id: I5e7857108a9623fdf3e698cb842dbc22c21f61a1
CRs-Fixed: 2513571
As a part of 802.11ax amendment, 6GHz band operation is added.
Since the 6 GHz channel numbers are overlapping with existing 2.4GHz
and 5GHz channel numbers, use frequency to identify unique channel
operation instead of channel number. Channel frequency is unique across
bands.
As a part of above requirement frequency attribute is added to the
struct sSirMacChanInfo, in driver some APIs directly copies this
structure info considering as every member of the structure as uint8_t,
as frequency is uint32_t this breaks above asumption and results into
corrupt info and gives undefined behaviour.
To address above issue, use the structure members individually and
give the information by member-by-member copy.
Change-Id: Ied6ad30d8a0800211f99371969ddd192ff40545c
CRs-Fixed: 2537975
Set chainmask for 2x2 dbs capable device if enable2x2,
AS, and diversity are disabled.
Change-Id: I3ec8da95b868e79af1f44fdba63b2ee57e4365fa
CRs-Fixed: 2528035
Enable configurable dfs_pri_multiplier. The ETSI typ2 type3 radar
detection ratio is lower than expected(>80%) while channel loading is
high(>30%). The host improvement for this are:
1. Add configurable dfs_pri_multiplier, controlled by
DFS_PRI_MULTIPLIER. Default value 2, min 1, max 10.
2. Lower adrastea ETSI type 2/3/4 radar filter rssi_threshold,
controlled by DFS_OVERRIDE_RF_THRESHOLD, dfs log shows that
QCS405 target report RSSI range [18, 45] while radar power
is 3 dbm. By using default rssi_threshold 24 will reject
many radar pulses, which leads to low detection ratio.
3. Calculate deltapri for each searchpri based on dfs_pri_multiplier
in dfs_count_the_other_delay_elements(), check deltapri
between [1, dfs_pri_multiplier] * refpri and searchpri, if
the primargin is desired, mark it as matched pulse.
4. Pick lowpri as refpri for the radar filter with
rf_ignore_pri_window equals to 0 while DFS_PRI_MULTIPLIER is
enabled. Observed original findref logic has some problems
which selects refpri is bigger than lowpri, which leads to
the lowpri pulses pri_match are set to 0, and in this case,
radar was not detected. Example for the issue, assume
rf->rf_pulseid 34 (ETSI type 2) has 7 pulses with pri:
1489, 2978, 2978, 2978, 1489, 2978, 1489 us in this case,
highscore is 4 (2978), scoreindex is 5, refpri is 2978, which
leads to: index 0, 4, 6 pulses with pri_match 0 in
dfs_count_the_other_delay_elements(). The fix is to select
lowpri as refpri(1489 in this case).
Change-Id: I1f3ca3298c9ab1f1e2651ad6b4a0a4810f83f8a1
CRs-Fixed: 2522506
The max value of gReportMaxLinkSpeed should be
CFG_STATS_LINK_SPEED_REPORT_MAX_SCALED.
Set the max value of gReportMaxLinkSpeed to
CFG_STATS_LINK_SPEED_REPORT_MAX_SCALED, otherwise
gReportMaxLinkSpeed does not work.
Change-Id: I164de224a4f4bfdd2dea55fe0a943fc4884326ff
CRs-Fixed: 2532054
Currently, roam delta is updated to global mac ctx when it's
updated through DRIVER command. But the update should
happen only to the neighbor roam info of the corresponding vdev.
Retrieval also should happen based on vdev.
Change-Id: I355b9db2e142d4205088627672c3fb27c32d7fbd
CRs-Fixed: 2530333
Add mlme APIs and structures to set and get roam
state, supplicant roam disabled flag and rso control
bitmap.
Change-Id: Ic97da49035462afffd9c86c1d9f9af08515e6747
CRs-Fixed: 2520824
Modify roaming enhancements specific ini default value to work
adaptive 11r and roaming enhancements feature.
Change-Id: I58efd5d8cc50ca1a2b9252c9aad8484cda58ae25
CRs-Fixed: 2521810
Add support to advertise the VHT MCS 10&11 support using vendor
specific IE to enable the MCS 10 and 11 support in VHT mode.
Change-Id: I2d197dcce20ab4aec617ca8a7f4a54b438fae635
CRs-Fixed: 2465662
Scan period is configured through the DRIVER command
SETROAMSCANPERIOD currently. Add provision to set the same through
the roam subcmd and the attr QCA_ATTR_ROAM_CONTROL_SCAN_PERIOD
Change-Id: I3dd56f56ac8bc4ba48a88f8df292e9d4d5545fed
CRs-Fixed: 2509656
Userspace can update the full scan period through the roam subcmd
QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_SET and the attribute
QCA_ATTR_ROAM_CONTROL_FULL_SCAN_PERIOD. Send the same to firmware
as part of roam scan offload command
Change-Id: I7c1046763d693faa3340b655848d3306ef92e06c
CRs-Fixed: 2508775
Full roam scan period is the minimum idle period in seconds between
two successive full channel roam scans. Firmware expects this param
as part of roam scan offload request. Add an ini param to set
it to a default value and use it while sending roam scan offload
request.
Change-Id: Id66b583b2c487f06e62298641dc28853af3ab11c
CRs-Fixed: 2507448
Update the mac, phy, mcs, nss caps of bands
2.4ghz, and 5ghz for HE capabilities in the
wiphy structure to inform userspace about
the driver capability.
Change-Id: I9fb1233e5396bf3ea411c057af9cbcd5b358271c
CRs-Fixed: 2486266
Currently the host driver blocks roam scan offload command to
the target if the connected akm is OWE or SAE.
Add changes to read the WMI_SERVICE_WPA3_SAE_ROAM_SUPPORT and
WMI_SERVICE_WPA3_OWE_ROAM_SUPPORT service capability advertised
by the target and set it to the mlme fw_akm_bitmap. Read this
bitmap in csr_roam_offload_scan() to allow RSO command.
Also the connected akm is sent to the target via the
WMI_AP_PROFILE command. Translate the CSR akm type for OWE and
SAE akm also.
Change-Id: I68527722ab099e0c8e1681ed64ea416b9a6e9936
CRs-Fixed: 2491021
Increase the max number of MSDU in AMSDU limit to 15 and set the
default value to 0 to config the FW in auto mode selection in which
FW picks the maximum number of MSDUs in AMSDU based on connection mode.
Change-Id: I6c1f1292a31fc9ea857e60e7a81d10b6def5cbc1
CRs-Fixed: 2502544
wpa_supplicant/framework sends different vendor specific IEs in
connect request. Currently driver is parsing the IEs and appending
specific IEs to the assoc request frame. But all vendor specific
IEs are supposed to be sent in the assoc request. Extract all vendor
specific IEs and append at the end of the frame.
MBO IEs are expected to be present at the end of the frame.
So append rest of the vendor IEs just before MBO IE.
Change-Id: I3d49c72a31d142ef3b14b439af2ae4cd8be059ea
CRs-Fixed: 2498976
Define ext_vdev_ptr and ext_pdev_ptr with specific type, remove void
pointer usage for part of mlme code.
Change-Id: Ie71d59386224e4671bdae071aa7425a998d5e242
CRs-Fixed: 2488192
Currently, Driver has below configuration:
1. The default value of Neighbor scan channel max time = 30 msec
2. Probe deferral time = 15 msec and
3. The gap between each Probe Request (Probe repeat time) = 20 msec
As per above roam scan params, after 15 msec of deferral time STA
sends the first probe irrespective of OCE or non-OCE environment.
So after the first probe, STA never sends the second probe because
15 msec + 20 msec = 35 msec which is beyond dwell time( 30 msec).
Because of lower dwell time, many a time STA is not getting enough
time to send the second probe request during a roam scan on the currently
associated channel. In case when STA sends only one probe req,
there is a lesser chance to receive Probe Response in a semi congested
or congested environment. This results in not finding a candidate
during a roaming scan.
STA should have enough time to send 2 Probe Requests under any condition
( clean or noisy) irrespective of the OCE/non-OCE environment.
Fix is to increase the default value of dwell time
"gNeighborScanChannelMaxTime" to 40 msec for STA.
Change-Id: I1bd52f5efe448ccb4ed4585e98aaf519379dd661
CRs-Fixed: 2467703
Currently there is no ini support to configure frequencies
which needs to be avoided for the acs channel list which
may allow SAP to come up on a channel which is not preferred.
For Example there are many legacy clients which supports
2.4GHz but don't support channel 12 and 13 (or does not have
the capability to detect country change where channel 12 and
13 is valid).
In that case, if SAP comes up on channel 12/13, those legacy
clients won't be able to connect to AP.
Hence, Add a feature flag and ini to configure the frequency
list which can be avoided during acs.
Change-Id: Id106b38228f837ba056eb916004dc012e919ddd2
CRs-Fixed: 2472004
Do not configure legacy rate to FW if it is HE connection, otherwise
FW does not work.
Change-Id: I31d167ee79b7b58cabad29e65cf6834a7151093d
CRs-Fixed: 2472811
Add ini support for FIPS 4-way hanshake offload to firmware. FIPS
offload feature will add support to handle LFR 3.0 connection only
(auth/reassoc). If this ini is set then firmware will offload
4-way HS to supplicant. In the Roam sync indication firmware will
inform connected and not authenticated so that supplicant can take
care of 4-way HS.
Change-Id: I3da58910218ffc57094cac4c3cab4572631d9404
CRs-Fixed: 2459182
Firmware expects btm_offload_config value as 0x1c1 by default
so that BTM query is enabled. To enable BIT 7, "prefer_btm_query"
ini is used and its default value is 1. To enable BIT 8 in
btm_offload_config, "prefer_roam_score_for_candidate_selection"
ini is used and its default value is 1. Enable the BIT 6 also
by default.
Change the default value of btm_offload_config to set bit 6 by
default.
Change-Id: Ic0b222c281d1731aaf21aaff6a72ebf1f1f930de
CRs-Fixed: 2466687
Set the max_station config correctly at wma_open instead of using
the default value.
Change-Id: I63cd05462351359fbdcaae03dbdff940817b9bde
CRs-Fixed: 2468829
Add support for roaming in case the driver
detects a nud failure. The STA then would roam
to another BSSID, else if the roaming gets failed
the STA would remain connected to the same BSSID
as connected before.
Change-Id: Idbc99b0ce2f9cacd97564dd8cf9892120958eda2
CRs-Fixed: 2461675
When BTM config is disabled in the supplicant, the BSS
transition bit (19) of the extended capabilities will be
disabled. If BTM offload is enabled, currently driver still
advertises that the BSS transition bit(19) as disabled. This
results in AP disabling 11v for this STA.
Advertise the BSS transition bit (19) as enabled in the extended
capabilities if btm_offload ini bit 1 is enabled.
Change-Id: I7c1977294a2e166321951ee0ec31f18929c42176
CRs-Fixed: 2455919
Function mlme_get_dynamic_oce_flags can return the NULL value.
Avoid and check for NULL pointer in the callers.
Change-Id: Idc83a9e5dea812a73fed24de3aa2c2c49436f7d1
CRs-Fixed: 2462716
In order to ensure that HT40 is enabled by default on 2.4 GHz
remove gChannelBondingMode24GHz entry from INI file and set
the default value of gChannelBondingMode24GHz to 1.
Change-Id: I8b7657e3eef5f4ec19863c8da6a611a63ccecd9c
CRs-Fixed: 2461593