Currently, all roam params are updated to firmware whenever
a new param(e.g. preferred channels) is configured by the
userspace. This may overwrite the firmware learned data with
fresh config which is not intended.
Isolate the configured param update to firmware to avoid
tampering other params.
As there are multiple roam params, isolate ROAM CHAN configuration
for now. Incremental changes can be added to make other params
adapt to this.
Change-Id: Ib8c01e42263a0d77b5747f71591ac282909ed7d3
CRs-Fixed: 3856863
Host updates the configured RSSI threshold from INI
"gNeighborLookupThreshold RoamRSSI_Trigger" over the
GETROAMTRIGGER command. But this RSSI threshold is reduced
by firmware in steps for reasons like candidate not found
during roam scan. So, the expectation is to print the next
RSSI threshold at which the roam scan will be triggered.
This value is received from firmware via the
WMI_ROAM_SCAN_STATS_EVENTID.
Fix is to store “next RSSI threshold” value in vdev mlme
and update same when GETROAMTRIGGER is queried.
Change-Id: I9b5dc80724d13f7cfe082f1214197d1c016e1a94
CRs-Fixed: 3827747
STA is associating on 20 MHz, whereas the SAP is operating
in 80 MHz. During the rate set preparation for the client,
instead of intersecting the 20 MHz MCS(sent by the peer in
EHT Cap) with the self cap of APUT, the validation happens
for the 80 MHz MCS set of STA and APUT. However, while sending
peer assoc to firmware, the 20 MHz MCS rate set of the client
is being used.
To fix this, generate the EHT MCS rate set of the client by
intersecting the MCS params corresponding to the STA's assoc
channel width.
Change-Id: I1baf79a3705922531d2ff3db8199633a35793129
CRs-Fixed: 3849051
Post link switch the order of VDEV to link info in OSIF
changes and for the next connection, need to restore the
order. This restore currently happens when there is set
MAC address update before every connect, but however if
set MAC address is not received then the unrestored order
of VDEV will be used during connect which can be undesirable
in certain cases.
To avoid going ahead with connection with unrestored VDEV
mapping, make sure this is reset to proper order via
notifying HDD once assoc VDEV connect request becomes active.
Change-Id: Id3ba542820f7c2bc9c721a49735738df00b6e5d5
CRs-Fixed: 3827913
Sending deauth on one of the links in MLO connection will result
in removing anchor link in FW and driver shall silently remove the
next link without initiating another deauth. For this reason the
status of MLO peer is set to DISCONN_INITIATED on sending first
deauth frame so that subsequent links do not send again.
The MLO peer context holds the list of all object manager peers for
that MLD connection and failure to add to the context shall result
in termination of connection. Currently the failures are not handled
and the object manager peer is not having any MLO peer context and
this results in sending deauth frame on both the links.
Handle the error of peer create and MLO peer attach on roaming
to abort the roam sync.
Change-Id: I4d5a766b673b36edb44d19065237aa35ff7d5f1d
CRs-Fixed: 3837890
Fix compilation failures caused by type mismatch
between format and argument.
Fix some kernel-doc errors.
Change-Id: Id55c19eff1dd62102feffac1785b5fe825555fde
CRs-Fixed: 3805434
After increased wmi len, bcn frames go to roam sync event instead of roam
sync frame event, add scan entry logic of roam sync frame event handler is
missed in roam sync event handler, if old scan entry for roamed bssid aged
out, roam sync fails for no scan entry found.
To fix it, add scan entry logic in roam sync event handler too.
Change-Id: Ifb2d3323256b42a094a2871279353273275fbddf
CRs-Fixed: 3848978
Policy manager restricts three active home channels on same MAC and
if any two links of ML-STA falls under same MAC, then policy manager
sends force inactive num set to one which link bitmap of those two
links. FW will ensure to not make both the links active at the same.
In such cases when another VDEV comes up via concurrency on the same
MAC but with different frequency then, it will result in two active
VDEVs on same MAC. Now if FW decides to exchange the ML-STA links
which are sent in force inactive num via vdev repurpose, then
policy manager rejects this request and it see the upcoming link
will be in MCC with existing two frequencies (one from ML-STA and
another from concurrency) while actually the ML-STA link will
eventually becomes standby if vdev repupose is allowed.
For this reason, skip checking allow concurrency if the target
link in VDEV repurpose is part of dynamic inactive bitmap.
Change-Id: Ia7b1f798925c3ae02aceba68584dc02e44f2a514
CRs-Fixed: 3840955
F/W increased WMI event max length per CE2 config to satisfy increasing
mlo frame length in roam sync event, host checked frame len with old max
length wrongly, so roam sync failed.
To fix it, remove unnecessary frame len with old max length as
roam_sync_frame handler, frame len is checked with tlv len already.
CRs-Fixed: 3844499
Change-Id: I75394ffa6704b4556701ed060e4345a56906dc1b
Currently if STA + LPC is running and new interface is brought up
in case of monitor_mode_concurrency ini enable case only LPC
is terminated. if monitor_mode_concurrency ini is disabled LPC
will not be terminated and LPC will continue to run in concurrency
scenario.
To fix the issue remove check for monitor_mode_concurrency and delete
LPC interface directly in concurrency scenarios.
CRs-Fixed: 3849400
Change-Id: Ie0d7f6f942b973e5fc7944430cf5aaa9b0bdf538
Use mgmt_txrx_frame_hex_dump to dump mgmt frame and optimize
frame dump and logs
Change-Id: I56f244fecfa2602c6b763f5734d36199b8c3f165
CRs-Fixed: 3838935
If there is only 1 AP candidate, and it has been added to denylist by F/W,
it is not allowed to connect, it's bad user experience to end users.
To fix it, if there is only 1 AP candidate, and it has been added to
denylist by F/W, but deny reason is neither critical nor certificate
required, such as REASON_STA_KICKOUT, need allow user to connect it if no
other candidates.
Change-Id: I2ae66ceba943dcfbc927568684218b7120c1e490
CRs-Fixed: 3785252
When roam happened in F/W and send roam stats to host driver,
host driver send these roam stats info to user space by event
without cache them.
Change-Id: I772c0a5035896715204f6eee277090ed1f33e97c
CRs-Fixed: 3790270
Currently the bitmap of action frames that can wake up the host
is sent via the wmi command WMI_WOW_SET_ACTION_WAKE_UP_CMDID.
This bitmap doesn't include EHT action frames so currently the
host doesn't wake up for EHT action frames.
Enable wake up for EHT action frames during runtime/system suspend.
CRs-Fixed: 3811796
Change-Id: I2c6ab7b7fba5572a02ff0db0f5198f2e9138a97e
Currently EPCS is enabled only via the vendor command hook,
add the ini configuration to enable/disable the EPCS
CRs-Fixed: 3838932
Change-Id: I1a887fa2a91dd68877d96169d39ea868ee675241
Active connection req fetch may allocate memory to copy the
connect IEs, free after use.
Change-Id: Ida4892cd9efef8a4ebfaf925908eedc19a3d9d7b
CRs-Fixed: 3832469
A race between cfg80211 ap stop and wiphy system suspend can lead
to either DPM WD or serialization VDEV disconnect active command
timeout since scheduler thread gets suspended as part of wiphy
suspend and both cfg80211_disconnect and wiphy suspend/resume acquire
RTNL lock.
To address this race condition avoid ap stop when wiphy
suspend is already completed since scheduler thread gets suspended
as part of wiphy suspend and it can't process ap stop.
Change-Id: I5792b524a27326ca9e020600db2b82e16cc7ea96
CRs-Fixed: 3834305
As part of 802.11be_D4.1 new param Ext Max Tx power is added
in TPE for 320 MHz and while packing the TPE IE in beacon frame
max tx power will be calculated based on max_tx_pwr_interpret.
And max_tx_pwr_interpret is filled irrespective of channel bandwidth
which leads to TPE IE length more than 9 for legacy case also.
Pack tpe ie manually to consider max_tx_pwr_interpret to calculate
tx power only for 320 MHz and legacy method for less than 320 MHz.
CRs-Fixed: 3750566
Change-Id: Ibacb634c24d08886ccf2848a8dc8e2ecdf6b247a
When driver mode is changed from other mode to mission mode, regulatory
update will happen, flag is_regulatory_update_in_progress is set.
country_change_work thread is used to clear the flag, if other threads
holding OP lock, the work thread exits without clearing flag
is_regulatory_update_in_progress. SAP start is
blocked until timeout later.
To fix it, if failed to update regulatory, country_change_work thread
clears flag is_regulatory_update_in_progress too.
Change-Id: I97440ec14e5153f44a6a1b6028eb8dd9e75ccb5d
CRs-Fixed: 3831855