In wma_get_trigger_detail_str() driver prints the roam trigger
detail for Low rssi and Periodic scan triggers, the RSSI value of
the current AP is the value before roam scan is triggered. But
the firmware considers the rssi of the current AP after roam scan
is complete to calculate the next RSSI threshold. So there could
be mismatch in the current rssi value and next rssi threshold
when roam_info->rssi_trig_data.threshold is used to print the
current AP rssi.
Use roam_info->current_rssi to print the current connected AP
rssi in the roam trigger logging.
Change-Id: Ib154bb3cbdfe13dbcdd8c8830cdafb6daefa34b5
CRs-Fixed: 2739346
Currently the band_capabability from mlme_cfg is a bitmap over
reg_wifi_band. Update the checks so that it is compared with
a bitmap, instead of with band_info.
Change-Id: Ibad0231f1f6e5c555e6e5be5a5662fd26c549037
CRs-fixed: 2738440
FW sends a disconnect request to HOST while roaming failure
through event WMI_VDEV_DISCONNECT_EVENTID per vdev id. For disconnect
reason SA query timeout in WMI_VDEV_DISCONNECT_EVENTID, add support
to handle disconnect request from FW.
Change-Id: If911b18476d021bfe62eb10b4db3c2eec2a37743
CRs-Fixed: 2736242
If peer phymode is not same as vdev phymode on channel switch the
peer phymode is updated with vdev phymode.
It should consider the prev peer phymode to calculate the new
phymode.
Change-Id: I33b57ad991a5899742e7aa4334089762cd325c59
CRs-Fixed: 2736158
When reassociate, roaming is disabled by wpa_supplicant, but RSO stop
reason REASON_SUPPLICANT_DISABLED_ROAMING is ignored and roam scan mode
isn't cleared to 0 before vdev WMI_ROAM_FW_OFFLOAD_ENABLE_FLAG flag is
cleared. Then host can't receive peer unmap/map event when wlan disconnect
and reconnect, host dp peer id isn't updated, Rx frames are dropped for
peer id mismatch.
Fix: When roaming is disabled, make sure roam scan mode is cleared to 0
before vdev WMI_ROAM_FW_OFFLOAD_ENABLE_FLAG flag is cleared.
Change-Id: Ia471998cf631948d8ffa701e67fcee22eebb0fa0
CRs-Fixed: 2734351
Add macro ROAM_OFFLOAD_V1 for new code and implement below functions
for connection manager roam part:
csr_handle_roam_state_change() roam offload state related handler.
Filling WMI_ROAM_SCAN_RSSI_THRESHOLD cmd parameters related process.
Change-Id: I0351155ca5a3d68ade6568c7527c5708582ccf1a
CRs-Fixed: 2730826
FW sends a disconnect request to HOST while roaming failure
through event WMI_VDEV_DISCONNECT_EVENTID per vdev id.
Fix is:
1. Process WMI_VDEV_DISCONNECT_EVENTID and issue disconnection.
2. Make WMI_VDEV_DISCONNECT_EVENTID event as wakable
Change-Id: Ic1e83aace48a3e8424f23641b0e77c66f4283587
CRs-Fixed: 2731952
Userspace can configure different roam control params as
defined in qca_vendor_attr_roam_control through the roam subcmd
QCA_NL80211_VENDOR_SUBCMD_ROAM and the below attributes:
QCA_ATTR_ROAM_CONTROL_SCAN_FREQ_SCHEME
QCA_ATTR_ROAM_CONTROL_CONNECTED_RSSI_THRESHOLD
QCA_ATTR_ROAM_CONTROL_CANDIDATE_RSSI_THRESHOLD
QCA_ATTR_ROAM_CONTROL_USER_REASON
Send value of above attribute to fw through command
WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID for trigger
reason WMI_ROAM_TRIGGER_REASON_BTM_WTC.
Change-Id: I17502eebab56652192164144b7ebdadb32033117
CRs-Fixed: 2729119
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 btm response.
This helps in debugging/understanding the scenario when roam
failure happens.
Print the info received related to btm rsp and roam initial
info into kmsg.
Change-Id: Icb2058eed5df3265018b3c53548d123f3a4faf4f
CRs-Fixed: 2728267
Host sends SAE auth retry frames if the response/ack for the previous
SAE auth is not received. In roam scenarios like roam abort, HO fail
host don't need to send SAE auth again.
Hence cleanup sae auth timer for roaming scenarios.
Change-Id: I617a61fdb4ce7b6afa66415ebc33a2ce23e3821b
CRs-Fixed: 2730888
Currently the driver intersects the 2g and 5g
capability and stores them in the HE cap variable
of the same PHY.
In the HW where a single PHY supports both 2g and
5g and with max BW support of 160Mhz, the intersection
of 160Mhz and 80+80Mhz MCS will lead to zero as 2g will
not support 160 and 80+80 BW. Hence the MCS map will be
0 for them indicating that the STA would support only
till MCS 7 and not above that which would lead to a
lower coding rate and lower QAM thus resulting in
a lower throughput.
Fix is to not intersect the MCS capability of 2g and 5g
and copy MCS directly from the target capability.
Change-Id: Ice5c426db43516b5dff5379926086b40d69f3d96
CRs-Fixed: 2732512
The band_capability field is used in other places to be
a bitmap over reg_wifi_band. Update the field in wma_tgt_cfg and
wlan_mlme_generic to take the same bitmap for consistency.
Update all references to these fields to expect a bitmap as well.
Change-Id: I8abd697e2fbe02b4eadd32f3027bef7408bac2a0
CRs-fixed: 2726710
nan_disable_support is the firmware capability to allow host to
disable NAN. So that host can disable NAN in any unsupported
concurrencies. This was actually introduced to handle
NAN concurrencies. Rename the capability flag and corresponding
APIs across host driver to resemble the functionality.
Change-Id: I24805194fdb855040bcc518acc96459ee7cb5128
CRs-Fixed: 2729984
Add changes to handle transition to the 2 new states:
1. Roaming in progress: Switch to this state when roam
start notification is received from firmware.
2. Roam Synch in progress: Switch to this from RSO
STARTED state if roam synch indication event is received
from firmware. Change to this state is also allowed in
RSO STOPPED state if supplicant disabled roaming on that
vdev - to allow roam invoke to be processed.
Also query the state machine to get the roaming status instead
of using discrete flags at various layers. Clean the redundant
roaming in progress, roam synch related flags.
Change-Id: Ide20a30d9d8c20a96d8bba70367b51b8643cae09
CRs-Fixed: 2725443
WMI_VDEV_BCN_LATENCY_EVENTID is sent by firmware when it receives
the latency IE from connected AP in beacon.
Add handler for this event and when latency_level received is ultra
low in latency IE, update request pm qos type PM_QOS_CPU_DMA_LATENCY
to level DISABLE_KRAIT_IDLE_PS_VAL to speed up CPU efficiency and
irq response. This is needed for Voice and Music products where extreme
low latency is needed while playing music and high power consumption is
accepted.
Change-Id: I3c63ef247f4f4a1add68111ef1bcee6daafd148a
CRs-Fixed: 2723205
Data stall info received as part of wmi debug msg flush
event is parsed for all reasons. Since fw populates this
info only when the reason is data_stall_trigger, in all
other cases this info would be garbage values and is sent
to userspace.
Fix is to parse data stall info only for the appropriate
trigger reason.
Change-Id: I70004e5825e67df375e9bc14c2db2a398d860c97
CRs-Fixed: 2724248
Send Vdev pcl command on both connected STA vdev when sta+sta
roaming is enabled. Handle below cases:
1. When 1st STA is connected send PDEV pcl command for the
first sta. Set pcl_vdev_cmd_active false.
2. When 2nd STA comes up, Set pcl_vdev_cmd_active to true,
send vdev PCL for 1st sta before enabling roaming(disabled
as part of the connect on 2nd STA).
3. For second STA force dbs connection when
enable_dual_sta_roam_offload ini is enabled. Set the channels
of the 1st connected STA band as invalid and remove these
channels from the scan filter.
4. On disconnection of 2nd STA connection, clear the vdev
PCL sent for 1st STA and then send PDEV pcl command.
Also make changes to send set PCL command after roam init
is done before RSO start is done at firmware to avoid assert.
Post set pcl command from sme/csr through lim/wma/wmi to avoid
the above condition.
Disable roaming on the vdev before sending set PCL command to
avoid roaming on undesirable band & channels.
Change-Id: I6bd869015b7248fe5c5c90b6e2fa0174995be197
CRs-Fixed: 2725360
During TDLS if SSR occurs then wlan driver is not deleting the tdls host
peer.This lead to tdls peer leak, vdev and pdev ref leak. As pdev is not
deleted after SSR new pdev create fails.
Fix is to remove tdls peer information from host driver during ssr
Change-ID: I9f4c2026821a166fbf38f658c75d93e7409141cc
CRs-Fixed: 2726083
Enable compilation of the connection manager roam files with
Kbuild changes.
Add new API to store and retrieve the firmware scan channels at
mlme. Also add initial support to post SET_PCL command through
lim, so that it is not sent before ROAM init command.
Add changes to restrict connection of the 2nd STA to
channels on the other band of the 1st STA connected band.
This is done by filling only the allowed band channels in
the scan filters for the 2nd STA connection. If only
1 STA is active, it is allowed to connect on any band.
Add header gaurds for missed header files:
wlan_cm_tgt_if_tx_api.h
target_if_cm_roam_offload.h
Change-Id: Id2bce12b9663ed635ea46164169b088461aab870
CRs-Fixed: 2720341
it will always return here if find vdev in wma_find_vdev_id_by_addr,
as default value of ret is failure.
Separate lookup vdev for sap/sta mode and check return value.
Change-Id: Ic94c6b25d2a02f9e66ed469bec4cf297d696e2a8
CRs-Fixed: 2721825
Incorrect phy mode sent to firmware as part of the
TDLS connection peer assoc command.
VHT phymode representation for 2G and 5G is different
and host is sending 5G VHT phymode as part of the 2G
TDLS connection peer_assoc command to firmware.
Modified phymode generation logic at WMA for TDLS
connection to populate 'WLAN_PHYMODE_11AC_VHT20_2G'
phymode.
Change-Id: I7867df7f013bc05a182e33495181a099332d1fd5
CRs-Fixed: 2719278
In STA+SAP case if AP1 and STA1 have same MAC, and DUT's STA is
connected to AP1. Now when the STA1 tries to connect with DUT's SAP
peer with same mac is already present the add peer fails, but during
delete peer the DUT STA peer (AP1) is deleted instead of STA1 of
DUT's SAP. This leads to SAP deleting peer of a STA interface and
thus the SAP peer count is out of sync.
Fix is to reject any association req from STA1 if AP1 is connected
to DUT's STA. Also ad vdev check while deleting the peer in wma.
Change-Id: I448226497c7aa3c11cb9097be9c7d57eb4239900
CRs-Fixed: 2723814
Currently, after roaming only vht ie is used to get dot11 mode
which may casue issue whenever vendor vht ie is present but vht
ie is not present in beacon. Host updates dot11 mode to
11N based on missing vht ie and does not consider vendor vht but
fw considers vendor vht ie which causes different dot11 modes in
fw and host.
Consider phy mode sent by fw in roam sync event to get dot11
mode to maintain compatibility between host and fw.
Change-Id: Ie9e4cbadd84d239c6f386f296c77677b15ce0500
CRs-Fixed: 2714566
There are different version of SSID structure used in driver, replace
them with struct wlan_ssid.
Change-Id: I8a5bfdafbdc4365afccc11980633272be9c75a81
CRs-Fixed: 2721873
Currently the driver calls the BLM API
to add the BSSID to the reject list if
STA kickout event comes from the FW.
Now since the event comes in interrupt
context and BLM takes a mutex lock, it
is not allowed.
Fix is to change the context
and call the BLM API from lim del sta
which would execute in scheduler
thread.
Change-Id: I3c2726ea152eeeee6ae30d80388aedac631f6c39
CRs-Fixed: 2716192
Add new ini enable_dual_sta_roam_offload to enable/disable dual
sta romaing feature. Enabling this ini will allow firmware to
roam on both the vdev if firmware supports dual sta roaming and
the hw is dbs capable.
This ini will be checked in the dual sta roaming offload state
machine to enable roaming on both the STA or to fallback to the
current implementation where first connected sta will have rso
enabled.
Change-Id: I04f141ac31e0f168b6f19fe878bca219a36cfae7
CRs-Fixed: 2709036
Replace obsolete WMA_LOGA() macro with wma_alert().
In some error cases, usage of wma_alert() is incorrect and
hence use wma_err().
Change-Id: Ife02033c4f981c31f5e6b165d5e8961e2ce1f9d8
CRs-Fixed: 2716176
After the roaming is offloaded to Firmware when the GTK rekey
happens in Host proper KCK should be used to verify MIC.
In WPA2 GTK rekey is offloaded to Firmware but not in WPA3 case.
In WPA3 SuiteB Firmware sends KCK in Key material extended TLV
instead of Key material TLV in Roam sync indication event, as the
Keys length is more in WPA3 SuiteB. And the Key material ext TLV
is parsed improperly in driver and the same is sent in roam+auth
event to wpa_supplicant. This wrong KCK was used to verify MIC
received in EAPOL.
This fix is to properly parse the KCK and KEK from Key buffer.
Change-Id: I57658b918bb41de2b5d2476d89b026d1f5982337
CRs-Fixed: 2713711
Truncation will happen when assining an association id over 256
to the u8 'aid' of struct wma_txrx_node.
To avoid such issue, change the type of 'aid' in struct wma_txrx_node,
from u8 to u16.
CRs-Fixed: 2713427
Change-Id: If360c017700aadaf9f2d3216601a011704f68180
FW can send multiple events for a single oem data command
based on the size of the data to be send and the available
buffer size.
Currenlty sme callback in the oem data event handler
wma_oem_event_handler is set to null after it process the
event because of which next events for the same command
are not processed.
To address this issue do not make the sme callback as null
in the wma oem event handler.
CRs-Fixed: 2714680
Change-Id: Ia435a5bee7ed4d2e16313698052033f8b45a5873