Display control pipes info on WOW ack failure which helps to
debug issues when full debug history is not available.
Change-Id: I6a84aa01c07831b7109d0741337cae6ac0be2f44
CRs-Fixed: 3246284
The AP rejects the FILS-IM association request with reason
"Invalid IE format". In the assoc request, two problems are
seen:
1. The RSN IE has a junk group management cipher suite.
2. FILS HLP container IE is fragmented, and the fragment
IE does not immediately follow the HLP container IE.
In the assoc request, the RSN IE encoded in the authentication
is unpacked and the PMKID is replaced with the pmkr1 name
derived at the end of FILS authentication. Currently, the
existing PMKID in the RSN IE is replaced only if the group
management cipher is present. In non-802.11w case, the new
PMKID is appended at the end of existing PMKID, and leads to
improper IE format.
To fix this, replace the existing PMKID whenever PMKID is
present.
To fix invalid HLP container IE format, encode the HLP
container and its fragment IEs together in the assoc request.
Also, inorder to get the pmksa match from the crypto table for
a FT-FILS, fill both ssid and cache ID. Without cache id, the
cached entry is not updated with MDIE.
Change-Id: I654b5527a726eb7872b90fb19a3d97623f3caa68
CRs-Fixed: 3233081
Correct description of ratemask_set ini for VHT mode
to avoid wrong configuration.
Change-Id: I91b887d8268f8faa0d0c32f90da032d00eaa14f2
CRs-Fixed: 3198950
In target_if_get_roam_vendor_control_param_event_handler,
there are 2 possible NULL pointer dereference issues:
1. Host calls target_if_get_psoc_from_scn_hdl API to get
psoc object. But as per current logic even if psoc is
NULL, psoc is dereferenced by passing it as an argument
to get_wmi_unified_hdl_from_psoc.
2. Host calls get_wmi_unified_hdl_from_psoc API to get
wmi_handle pointer. But as per current logic even if
wmi_handle is NULL, wmi_handle is dereferenced by
passing is as an argument 1 to function
wmi_extract_roam_vendor_control_param_event.
Fix is to update the sanity check logic for psoc and
wmi_handle pointers to avoid possible NULL pointer
dereference.
Change-Id: I3c3df062b538b05218e729d7bf6806e221073269
CRs-Fixed: 3242435
Wrong value of Roam reason and sub-reason code is sent to
userspace via diag logging.
Convert the value of reason and sub-reason code to qca
specific code before sending it to userspace
Change-Id: Iebdc5f8673e2da6a208a89caca9a742202256bcc
CRs-Fixed: 3236178
Currently a userspace request to enable NS offload dynamically
gets rejected if the offloads are in disabled state.
After this change, when a request to enable or disable of NS offloads
is received in the host and if the trigger type is to dynamically update
the NS offloads, then update the dynamic offload configuations and inform
the FW.
Change-Id: Ifb4a1d37b5f2e6c89d043b00f9cc0aaf426d870e
CRs-Fixed: 3237980
Add following host fixes related to EMLSR association.
1) Use phy cap get macro to extract EMLSR hw mode id.
2) Add logic to send EMLSR cap flag during vdev start.
3) Add logic to copy EML caps from assoc link common
info subfield to MLO peer assoc struct in order to
share EML caps to FW on both links via peer assoc.
4) Add checks to update EMLSR cap flag only if both
STA and AP support and advertise EMLSR mode.
5) Send EMLMR support flag along with EMLSR support
flag to FW as part of vdev set IE cmd for roaming
scenarios. Also, update common info length when EML
caps are present.
Change-Id: Ied2570d498a43adadd93899d4fdbe023d320676b
CRs-Fixed: 3235059
In the cm_roam_result_info_event() api, for roam result the
current AP bssid is sent instead of candidate AP.
Correct this to send candidate AP bssid during roam result
logging.
Change-Id: I4b1d4634faa3fbf3e7b32af8c13d4b444d26c505
CRs-Fixed: 3237021
When SAP tries to come on 2.4 GHz channel with 40 MHz bandwidth
then it should start on same bandwidth if no other interface is
up. But currently SAP is getting switch from 40 MHz to 20 MHz
even in standalone case.
As a part of fix, check any other vdev is present on same mac or
not. If it's not present then start SAP on given bandwidth
Change-Id: Id9625a3dfaec34480f86b7ca1459ea33c32299fe
CRs-Fixed: 3226558
Add change in bus bandwidth to set set high bus vote
level into DP component introduced by change to
skip special frame rate info update.
Change: Ie8989dde506c654525099f9d154abe93162a0bac
Change-Id: Ib0a2241ac63536fe885c89715d70c778af444f2d
CRs-Fixed: 3245764
HDD changes to incorporate new DP component
Changes were backed out because of association issue
introduced by MLO adapter to DP interface mapping issue
and to avoid any further regression.
Re-introduce changes after performing complete sanity to
vet out any regression which might be introduced by these changes.
Change-Id: I058b9121c8490e9b0906421a35e01c55a1a7c25a
CRs-Fixed: 3198619
Some APs sometimes don't honor Qos null frames under WoWLAN
mode if station's ITO is too small. Introduce a new ini
gActionOUIExtendWowITO to specify AP OUIs which exhibit
this behavior. When connected to such an AP, the station's
ITO value will be extended when in WoWLAN mode.
Change-Id: I41ade7e6a6f5ca8d9b2aac2ae25427ca7fa8fe6b
CRs-Fixed: 3238200
Add infra to support Dedicated Bluetooth Antenna Mode (DBAM)
feature. It is used to switch between dedicated antenna for
BT and shared antenna for WLAN and BT.
Change-Id: I20b08a2fd446da4e3c17813aa64e368750286114
CRs-Fixed: 3239896
sbs_num contains the sbs_freqs array size. Do not clear it
to 0 before call get_sbs_chlist API. Otherwise the size_of_sbs
will be 0 and can't add sbs freq to list.
Change-Id: I318edd12978f73e9f75ab5298c36ceec57c5df6d
CRs-Fixed: 3243780
In pkt_capture_datapkt_process and pkt_capture_mgmt_rx_data_cb
pkt_capture_vdev_put_ref is missing in error case, because of
which vdev ref count is not becoming zero when vdev is down.
Add pkt_capture_vdev_put_ref in all the error cases.
Change-Id: I55353356f059a367d57c64625f404e3940235be1
CRs-Fixed: 3228599
Host driver rate limits successive get_txpower
calls within 3 seconds, and sends cached stats
from the hdd_stats. However, max_tx_power is
not updated in the hdd_stats. Therefore,
the cached tx power is always 0 dBm.
Also, the hdd_stats would be only updated when
CP stats are received from the firmware for
get_station/dump_station calls. get_station is not
periodically queried for SAP interface from the
framework. Therefore, tx power for SAP interface will
always be 0 even if hdd_stats gets updated.
To fix this, instead of hdd_stats, return the
max tx power from the pdev stats cached on the pdev.
Change-Id: I0c8d8baab790c7344bd8913158f8eda63736474e
CRs-Fixed: 3230649
Refine PASN peer delete all path, to post message to
scheduler thread to process the peer delete all
message for PASN peers. Handle response timeout in WMA.
Resume vdev deletion after removing pasn peers
Add vendor command support to parse below vendor commands:
QCA_NL80211_VENDOR_SUBCMD_PASN
QCA_NL80211_VENDOR_SUBCMD_SECURE_RANGING_CONTEXT
Send install key command to firmware to install the
PTK upon receiving
QCA_NL80211_VENDOR_SUBCMD_SECURE_RANGING_CONTEXT
vendor command. If LTF keyseed is also received,
send the LTF keyseed to firmware.
Sent PASN auth status to firmware upon receiving
QCA_NL80211_VENDOR_SUBCMD_PASN command.
Change-Id: Idc9c69f7288b0774cc6d9bdcfed13ba3684bbc72
CRs-Fixed: 3231205
Uninitialized variables in pkt_capture_process_tx_data()
and pkt_capture_callback() may lead to Unpredictable behaviour.
Initialize corresponding bssid variables to avoid it.
Change-Id: I1ca6e7e04c8920111414a83c29cb61883b72370c
CRs-Fixed: 3241885
Scenarios are:
1. Host receives ROAM_START from firmware
2. Host receives EAPOL M1 from AP, host forwarded
it to supplicant and supplicant buffered it (with
timer 100 msec) to process it after association
completion.
3. Host starts processing CP stats request, which
holds RTNL kernel lock
4. Host starts a CP_STATS_WAIT_TIME_STAT (800 msec)
timer and sends WMI_REQUEST_STATS_CMDID to FW.
So cp stats are holding the RTNL lock.
5. In waiting state host/FW completed roaming within
a few milliseconds. Host Call roamed indication
to the kernel. Kernel post it to the Work queue
to indicate this to the supplicant. The Work
queue requires the RTNL lock to send the
indication to the supplicant.
6. Now Kernel is waiting on the RTNL lock taken by
the CP stats request which is waiting for the CP
stats response (WMI_UPDATE_STATS_EVENTID).
7. Host receives CP stats response but the host is
unable to handle it with the below reason.
8. Timed out happens for WMI_UPDATE_STATS_EVENTID,
then Kernel takes RTNL lock to indicate
association/roam completion status to the
supplicant.
9. As Kernel is sending association indication
after CP_STATS_WAIT_TIME_STAT (800 msec), by
this time supplicant deleted buffered EAPOL
first frame, this results in DUT failing to
initiate the 4-WAY handshake.
10. Finally AP sends the Deauthentication frame
to DUT.
Reason for unable to process CP stats response :
As per the current design, While processing Roaming,
the host deletes the old peer and creates a new peer
for roamed AP. If the Host receives cp stats response
after peer delete due to roaming, the host is unable
to stop waiting for timer CP_STATS_WAIT_TIME_STAT
and fails to release RTNL kernel lock till timeout.
After time out only, Kernel can take RTNL lock to
indicate association/roam completion status to the
supplicant.
Fix is to stop the wait timer CP_STATS_WAIT_TIME_STAT
and release RTNL kernel lock even in case peer has
deleted by HOST for which CP stats request sent.
Change-Id: Ie5b5275da10a06da50b2fbb8ab206b78f2c64d6a
CRs-Fixed: 3234063
Acquire the runtime pm lock when roam sync event is received
and release after roam sync complete is sent.
Change-Id: Ic56d353dd343f5fcbc228a8d7251e047177b9a9b
CRs-Fixed: 3238723
Wrong value of tx status sent to supplicant for MGMT frame
via diag logging.
Convert the tx status value to enum diag_tx_status specific value.
Change-Id: Iba6d8011280d41a874509d2a1b4fed9a16ee585c
CRs-Fixed: 3236363
With introduction of TDLS on 6 GHz, some of the channels
that peer can support will be same for 6 GHz band other
bands. So, extract frequency by using peer supported
operating class and supported channel list which can
be used for further processing.
If channel numbers are used then the duplicate channel
numbers are removed which may lead to skipping 6 GHz
supported channels.
Change-Id: Ic6838d05c3dab5a0cc17483890b83805e076684c
CRs-Fixed: 3233999
After WLAN_TWT_CONV_SUPPORTED enabled, TWT variables are moved from
COMP_MLME to COMP_TWT, APIs are updated too, hdd_update_tgt_twt_cap
just intersects enable_twt and twt_requestor of COMP_TWT instead of
COMP_MLME, legacy variable mlme_cfg->he_caps.dot11_he_cap.twt_request
isn't controlled by ini enable_twt now.
Change-Id: I71bb09704fd96591f37019ebbb77733cff04af25
CRs-Fixed: 3229121
Currently in driver, for non-DBS hw mode, null peer is released in the
function ndi_remove_and_update_primary_connection. This causes null
pointer deferencing.
To fix this, add null peer check before releasing the peer.
CRs-Fixed: 3184390
Change-Id: Ia895c8487082e0fac6e7df63d3694fa3e152b355
BTM and EAPOL events are sent through the vendor event to
the supplicant
Modify the BTM and EAPOL event log flow through the diag
event to the supplicant in order to maintain single
logging infrastructure
Change-Id: I1e21d1192be059cc48189bc57aacbc314d5297bc
CRs-Fixed: 3219065
Roam Diag logs are sent through the vendor event to the supplicant.
Modify the Roam Scan start and Roam Candidate log flow through
the diag event to the supplicant in order to maintain single
logging infrastructure.
Change-Id: Idd85b46f72a481aa99e243c81952010d2779afaf
CRs-Fixed: 3218639
Use frequency instead of chan num for processing TDLS offchannel
req for preferred offchannel.
Since, after introduction of TDLS on 6 GHz band it is better to
process offchannel in frequency instead of channel numbers as
some of the channel numbers are repeated for 6 GHz.
Change-Id: Icd7084b9f3c407ad0ad104b7f0d2230e31e0b10d
CRs-Fixed: 3234920
In api wlan_connectivity_mgmt_event(), the connecting status
is checked for every instance of wlan_connectivity_mgmt_event
resulting in excessive printing of wlan_cm_is_vdev_connecting
logs.
Add check to verify connection status for STA/CLI mode which
results in trimming of wlan_cm_is_vdev_connecting() logs.
Change-Id: I33d8d91e58a38b8998183e20bbf455ff94855c6d
CRs-Fixed: 3211801
In multiple AKM suite roaming scenario, if the STA is
roaming from WPA3 to WPA2 AKM suite, during the roam sync the
rso config will have the PMK of previous WPA3 connection. The
RSO start for the new connection would plumb the PMK of WPA3 to
the FW. After the RSO is enabled, set_key from userspace will
update the proper PMK of the current WPA2 to the FW via
RSO Update.
Due to a race condition, the set_key from userspace can reach
driver before the RSO start is sent to the FW. In this case,
the RSO update(due to set_key) will fail. Therefore, the FW
will keep the WPA3 PMK(in RSO start) as the final PMK for
the WPA2 connection, leading to roam failures.
To fix this, if the set_key for the connected bssid is
received during Roam sync in progress, then mark the
set_key rejection in vdev and send RSO update to the
FW after RSO gets enabled.
Change-Id: Ibb5a4929212e6c2ccabf39136962d3a8e606ece9
CRs-Fixed: 3212800
Allow the policy manager to select an alternate channel
on the same band if the SAP has no concurrent interfaces.
Change-Id: Ibd358018b0e9d631dbf61b42069a117870b5af44
CRs-Fixed: 3230881
Irrespective of 6 GHz, wideband can be supported.
So, Allow TDLS connection in wideband only if FW supports TDLS
on 6Ghz.
If Fw doesn't support wideband then restrict the TDLS connection
BW to APs Bw.
Change-Id: If726233f381921a8eda25ac7a2705942db79d410
CRs-Fixed: 3223760
Connectivity logs are sent through the vendor event to the
supplicant.
Modify the connectivity log flow through the diag event to
the supplicant in order to maintain single logging infrastructure.
Change-Id: Id5429349e00c16c23b76894744fef404b2266e9e
CRs-Fixed: 3218152
In the api cm_roam_candidate_info_event(), the value of
throughput is sent in Mbps whereas throughput is expected
in Kbps
Correct this by converting the throughput to Kbps instead of
sending it in Mbps.
Change-Id: I0fe95efc3a02d43187ff2c0423813529687c2ee9
CRs-Fixed: 3224754
Add support for TDLS offchannel changes required
for supporting TDLS offchannel on 6 GHz band.
Change-Id: Ie150ff7e5a8237dab445ccb0ab6a4959a7c7fbf0
CRs-Fixed: 3223640
Create radio combination matrix list from target mac phy information.
Return the supported radio matrix to apps by vendor command
QCA_NL80211_VENDOR_SUBCMD_GET_RADIO_COMBINATION_MATRIX.
Change-Id: I9732eadf10e8634336dbdac21e10f60e81cbaca6
CRs-Fixed: 3214050
When the STA connects to a peer, max supported ch_width is
calculated and configured to firmware. This is calculated from
self and peer capability in case of STA/SAP. Cache this in
peer object. Currently, data path module isn't aware of the final
ch_width configured.
Fetch the phymode and covert it to the DP expected ch_width
format. Update the ch_width to DP.
phymode of NDI peers is not maintained in host. So, get the NDI
self phymode and update to DP.
Change-Id: I25993053ae1f129c8fc9a352a05c788451060b2d
CRs-Fixed: 3227453
When supplicant disables firmware roam, RSO stop command with
roam scan mode value 4 is sent to firmware and this value 4
indicates the firmare to enable only Forced roam trigger(roam
invoke command from host). But before
ROAM_DEINIT(WMI_VDEV_PARAM_ROAM_FW_OFFLOAD with value zero) is
posted to firmware, the roam scan mode should be 0 or else there
could be potential peer unmap failures if firmware has already
started roam and disconnect is triggered from north bound or from
peer.
To avoid this, in the roam offload state machine handle the state
switch from RSO stopped to deinit if supplicant disabled roaming
flag is set and send RSO stop with roam scan mode value 0 to
firmware.
Change-Id: I6ff39f43bd75c95ed03c357a5602e25a5a0ffd92
CRs-Fixed: 3229082
From Auto P2P GO DFS requirement, if GO force SCC strict
enable and sta_sap_scc_on_dfs_chan ini enabled, allow
Autonomous GO starts on DFS.
Fix it by allow GO on DFS such configuration.
Change-Id: Ia4c5b1c7889f5c3115e4e05ac7f051673bbb2b81
CRs-Fixed: 3228456
Add checks to see if STA supports eMLSR mode and also
vendor command selection. If both support eMLSR, then set
eMLSR support bit. This value is shared with FW via
wmi_vdev_set_ie.
Change-Id: I9ea3bebfcaf90bb83d8811924afd8805530e40dc
CRs-Fixed: 3220949
Handle the following the eMLSR STA concurrency scenarios
1) eMLSR STA + SAP/P2P GO/NAN - Send a force disable link request to
FW on any one of the eMLSR links. FW will decide which link to disable.
2) eMLSR STA + STA/P2P Client - Send a force disable link request to
FW on any one of the eMLSR links. FW will decide which link to disable.
This action happens before vdev start of the new connection request.
3) eMLSR STA + TDLS - TDLS connection is not allowed since eMLSR STA is
given higher priority.
4) If there is already an existing connection, then eMLSR is not allowed.
Once the other connection goes down, the disabled eMLSR link is restored.
The concurrency handling API is invoked from corresponding interface
manager APIs.
Change-Id: Ib7d5da5dcb8eb3ea16c6e50c8fcadc20972d7d05
CRs-Fixed: 3185078
WMI_ROAM_GET_VENDOR_CONTROL_PARAM_CMDID: Add support
for a new roam command to get vendor control parameters
from FW. Host needs to send proper param ID in command
(from enum WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID)
to get corresponding INI value from FW.
WMI_ROAM_GET_VENDOR_CONTROL_PARAM_EVENTID:
Add support for a new roam event to get param value
from FW. FW sends this event upon receiving
WMI_ROAM_GET_VENDOR_CONTROL_PARAM_CMDID command.
Change-Id: I03679bcf359a0f425aab7b9ea1c3cb6d84fbb0ca
CRs-Fixed: 3225160