currently if bss_max_idle_period is greater than default configured
value of sta_keep_alive then same value will be sent to FW. If any
AP sets bss_max_idle_period to greater than sta_keep_alive then reset
is not done on vdev stop due to which same value will be set for
new connection.
Fix is to not to send bss_max_idle_period as time period limit because
same value is updated in bss_max_idle_period of interface. So, default
configured value of sta_keep_alive_timer is required to be passed for
threshold validation. value reset is required once vdev stop happens
to avoid same keep alive even if bss_max_idle_period is not advertised
by AP.
CRs-Fixed: 3861815
Change-Id: I457a436a4c8a561600e93b3d5deaa0399fbd2c7d
Add link id to connect request for partner link roaming to
match with scan entry's self link id to avoid selecting
a candidate with same BSSID and MLD but different link id.
Change-Id: I4b903f2e64a9eb4cc9f197577b2b11ea657aa2b2
CRs-Fixed: 3843561
In api extract_roam_frame_info_tlv(), the request_response
bit is checked in order to determine whether the frame
received is a request frame or response frame which
in turn used to evaluate wmi_roam_frame_info->status_code
as tx_status code for transmitted frame and IEEE 80211
status code for received frames.
However, the request_response bit is only valid for Authentication
frames and hence status code for Association and Re-association
frame is reported incorrectly.
Fix the check to evaluate wmi_roam_frame_info->status_code as
tx_status code for the following:
1. Frame is Authentication Frame and request_response bit is
set to '0'
2. Frame is Association Request frame
3. Frame is Re-Association Request Frame.
Change-Id: Icb7633ba8bf662f4987be016715051fa6d1adc06
CRs-Fixed: 3800906
As per current design, peer conflict detection logic allows
a peer with particular mac/mld to be created as long as
the ml dev context is same. However, this causes issues
for ML-STA wherein 2 different peer ML-STA could have same
mac address. In this case, the second peer creations should
be disallowed.
To fix this, skip the mac/mld conflict checks on the ml-dev
context of the ML-SAP and handle it separately.
In addition to the current checks add the following checks
for ML-SAP and reject the peer creation if:
a) MLO peer exists for the link mac of peer with different AID.
b) MLO peer exists for the MLD mac of peer with different AID:
c) If the associating client's MLD != one of the link mac address
and there is an MLO peer with different AID.
Change-Id: I75935e2362d6db1411c6a67f1e9db35f3b3963f2
CRs-Fixed: 3719956
Currently, STA do CSA on the given channel width, provided by the
AP. But sometimes in the fault conditions, AP provide channel width
which is not supported by STA.
For example, in this case, STA is connected with AP in 11AX mode.
During CSA, AP provides the 320 MHz channel width. But STA supports
maximum 160 MHz in 11AX mode and thus, it leads to disconnection.
So, to fix this, add check for dot11mode and restrict the channel
width to the maximum allowed channel width for the corresponding
dot11mode.
Change-Id: I29593db740afe6b23ea334bb499c46377868cd9b
CRs-Fixed: 3848635
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