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 part of above requirement add logic to process rx mgmt
packets based on the frequencies instead of channel numbers.
Change-Id: Ib063070738ecdb4f83379eafe50629778a490aae
CRs-fixed: 2522693
Currently if there are 3 connections in MCC on same
MAC, FW asserts.
If there are several bssid for same ssid and channel id from wpa
supplicant is 0, driver will sort candidate AP and try one by
one, vdev start channel isn't decided until candidate is
selected, need do concurrency allow check at that time, or lead
to 3 connections on the same MAC.
STA+STA MCC on same MAC has no benefit, total throughput is even
lower than single STA for channel switch frequently on same MAC.
so add check to disallow STA+STA MCC.
Change-Id: Id286096ea156915432807e42983c68cc83a8b42e
CRs-Fixed: 2545411
If supplicant disabled roaming, driver does not send RSO cmd to
fw. This causes roam invoke to fail in FW since RSO start never
happened at least once to configure roaming engine in FW.
So when supplicant disabled roaming on a vdev, send RSO start on
the vdev and then follow it with RSO stop command.
So when supplicant disabled roaming, disable the firmware
roam scans alone and allow roam invoke.
Change-Id: Ic3def72c6b60c42269d99e6db30cf3bfd1988d70
CRs-Fixed: 2543865
Currently, Host does not update value of max_num_probes and
roam_scan_home_away_time as per default value of INI. This
could leads to only one probe request being sent out during
roam scans which might reduce probability of finding candidates
on a particular channel.
Fix is to update value of max_num_probes and
roam_scan_home_away_time as per INI.
Change-Id: I2aaa302cec840967443dfbfb7ea93f2b5f2380cb
CRs-Fixed: 2545070
Add action_oui ini gActionOUIDisableAggressiveEDCA to identify peers for
which aggressive EDCA configuration causes some IOT issues.
Change-Id: Ifea0c224cef2378727c9f78d8b571ea9c57bb662
CRs-Fixed: 2507191
For ROME SAP connection phase, we should post the
eWNI_SME_ASSOC_IND_UPPER_LAYER to the queue after
finish sending out the association response frame
for other thread to handle it, otherwise using sme
callback handler in the irq thread will make it has
QDF ASSERT issue in the qdf_mutex_acquire. And the
call sequence that cause the assert like this:
__do_softirq -> ce_engine_service_reg ->
htc_rx_completion_handler -> htt_t2h_msg_handler
-> ol_tx_single_completion_handler ->
ol_tx_desc_frame_free_nonstd ->
tgt_mgmt_txrx_tx_completion_handler ->
lim_assoc_rsp_tx_complete -> sme_process_msg ->
qdf_mutex_acquire.
Meanwhile, lim_assoc_ind will be free in the
lim_assoc_rsp_tx_complete, but it still need to
be used for sme_assoc_ind->assocReqPtr in the
lim_fill_sme_assoc_ind_params, which cause the
assoc req pass to hostapd should be NULL, fix
such issue.
Change-Id: I390224ba64ea6cd963630de5b360e7b5e74a4d10
CRs-Fixed: 2542880
Connect and disconnect info logs doesn't have vdev related info
and thus it become difficult to know for which interface the
req is received from logs in STA+STA case.
Change-Id: I8a8e83e1ee82614c06d736542e9be5f93308a6a1
CRs-Fixed: 2545444
The host driver updates the group management cipher suite to the
firmware as part of RSO commands over the WMI_AP_PROFILE
command. The group management cipher suite is updated from the
group cipher suite which is not correct. As part of join success
update the group management cipher suite from roam_profile
in the roam serialization command in
csr_roam_save_connected_information().
Update the group management cipher suite from the roam profile
to the roam_request and copy it to the WMI_AP_PROFILE command
params in wma.
Change-Id: Ic8dca6938c487396e0202202efbb44ff214ecdcc
CRs-Fixed: 2542225
Driver uses old scan filter and old scan filter is converted
into new scan filter while sending scan command.
TO avoid this conversion use and fill new scan filter whenever
required.
Change-Id: Ib7e1c571c042a36f0b5864033ba640e8df1cd2f1
CRs-Fixed: 2544677
Get channel power information by center_freq from "defaultPowerTable"
list instead of chan_num because duplicated channel number exists if
enable 6GHz band.
Change-Id: I88c8ae2b14e1b2c48410fdf7bff5bba96b73f32d
CRs-Fixed: 2531046
IBSS code is protected by "QCA_IBSS_SUPPORT" feature flag, at SME
layer CSR API checks the connection state. For IBSS disable, these
SME APIs to check connection state must return flase.
Change-Id: I1bcd20a07d484cea2769c5b3171d805c8b82b308
CRs-Fixed: 2542724
If proper queue_type is not added the serialization command is not
removed from the queue. Thus the connect command is not removed
from pending queue on receiving the disconnect command.
This lead to HDD and SME out of sync with SME in connected state
and HDD in disconnected state. Thus during stop adapter HDD
doesn't try to disconnect the connected session.
Thus add queue_type as active or pending while calling cancel cmd.
Change-Id: I4af2c63a895065aefbb76609808a972354460cb2
CRs-Fixed: 2543246
Do not enable power save if the user configures the power save to
be disabled. And set the user power save configuration enabled
by default.
Change-Id: I7be3263888ddbe8302d941444b9751df73a4b165
CRs-Fixed: 2533757
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
Do not send assoc indication to hostapd until tx is completed over the
air. This ensures on receiving assoc resp tx status, M1 is triggered
from hostapd.
Otherwise, race condition happens between assoc response and M1 packet.
Change-Id: I1da7d5b2abcc35dc39fd8e3d8b834e1481d369f3
CRs-Fixed: 2507446
Use channel number will get invalid band.
Change csr_roam_get_phy_mode_band_for_bss API
and CSR_GET_BAND to use channel frequency as parameter.
Change-Id: I0c4d39f6b5689bc330e4e09302d84deaf209b9cb
CRs-Fixed: 2518428
Set chainmask for 2x2 dbs capable device if enable2x2,
AS, and diversity are disabled.
Change-Id: I3ec8da95b868e79af1f44fdba63b2ee57e4365fa
CRs-Fixed: 2528035
Currently, sme_config_fast_roaming is called to set the
supplicant disabled roaming flag in the driver, which is
received over the vendor command
QCA_NL80211_VENDOR_SUBCMD_ROAMING. This supplicant disabled
roaming flag is used to toggle between RSO start and RSO stop.
When the driver is in disconnected state, the roaming module
would be in de-init state already. So the driver should return
success whenever a state change is received in disconnected
state. But currently the driver sends failure when its in
disconnected state. This results in sending failure status to
userspace.
Return QDF_SUCCESS status if any roam state change is requested
in disconnected state.
Change-Id: I520ab92b014eb1239e0164a39e0135e1bb4c2d70
CRs-Fixed: 2533019
Currently in STA+STA scenario roaming is enabled on the
first connected STA1 and is enabled on the other STA2 on
STA1 disconnection. This change adds support to dynamically
enable or disable roaming on any STA.
Change-Id: I34dc2730fb38193ea3dd0ec35c79df233f270913
CRs-Fixed: 2520827
Replace channel ID with frequency in struct hdd_channel_info
& oem_channel_info.
Change-Id: I1a14ab40da4824d2861a7ec862cc322a158f0cd1
CRs-Fixed: 2532299
Roam control enable sends default values for roam scan period and
full roam scan period to make sure undesirable values are not
used. But user might want to update values dynamically through
vendor cmd/DRIVER cmd before issuing roam control enable and
doesn't want to overwrite these values with default values.
So, consider default values sent only if user hasn't configured
already. This can be done by comparing configured value with
ini values.
Change-Id: I68ac6a9afbe4a45c1a1ade3286c57f36303c49e9
CRs-Fixed: 2530344
When roam control is enabled, below inactivity params are expected
to be set 0,
1. roam_scan_inactivity_time
2. roam_inactive_data_packet_count
3. roam_scan_period_after_inactivity
Restore the same when roam scan control is disabled/CLEAR_ALL is
received.
Change-Id: Id9365895cdbccb3465b96ba6eec579da5014caa0
CRs-Fixed: 2529116
User might modify the roam control config params through
multiple commands as part of roam control config enable.
Currently, only the params which are modified as part of
SUBCMD_CONTROL_SET command are restored. Restore all of the roam
control config params from the default ini values when the
control config is disabled i.e when the CLEAR_ALL is received.
Change-Id: I59ebc2e3018b01889ffb2bcd19b72d6d20fd0517
CRs-Fixed: 2517854
Currently, scan_n_probes is updated to global mac ctx when
it's changed 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: I442eda44c6c0f6a66d86648bbe82bc0dc71422bd
CRs-Fixed: 2530341
Currently, home scan away time 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: I3e746f264c23454c1721a132d267b70157392894
CRs-Fixed: 2530338
Currently, neighbor scan max chan time and neighbor scan timer
period are 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.
Change-Id: I264cf9ac7a1c7bf8c4fde25ad134993419db6052
CRs-Fixed: 2530337
Currently, roam empty scan refresh period 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: Ic0496c326bca459c6ef6da1d84f1fd4645373cb9
CRs-Fixed: 2530335
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
Currently, neighbor lookup threshold 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: If0ad4855726bdc42d82852f413f7915892d3dfd6
CRs-Fixed: 2530332
Replace pe_find_session_by_sme_session_id with
pe_find_session_by_vdev_id as sme_session_id is vdev id.
Change-Id: I5fa537ff8e391fc18e568fd6f750334268faafa9
CRs-Fixed: 2531681
Refactor the start bss request to use channel frequency instead
of channel number.
Change-Id: Ic936fe060a5b2bc8d058709950417f3939a3c3d4
CRs-Fixed: 2518026
Currently get valid channel vandor command is defined
under EXTSCAN feature and also depends on gExtScanEnable
ini. when Extscan feature is disabled by ini or by feature
flag this command doesn't work.
As this command is to get the valid channel list, this
should not depend on extscan feature.
To address above issue, decouple get valid channel command
from extscan feature.
Change-Id: I6496cb94e6330f071f8027607e7d55a8f5d3db8a
CRs-Fixed: 2518313
A check has been introduced while implementing SAE roaming to send
the SAE status to SME only when the STA is not in joined state.
But this doesn't handle the SAP case where the status is expected
to be updated always.
Update the status to SME in below cases
1. SAP mode: Always
2. STA mode: When the device is not in joined state
If the device is in joined state, send the status to WMA which
is meant for roaming.
Change-Id: I20c134a3eea7c65db1fe1950c02b8b9e1ee3a34d
CRs-Fixed: 2524973
Update SAP data structures to use channel frequency values instead
of using the channel id values to support 6GHz channels in SAP.
Change-Id: I9ef5857e8dcf3f7d879495d3f3c3ead083fe0bf0
CRs-Fixed: 2513083
When channel switch, don't use tpSwitchChannelParams, fill
wma_vdev_start_req directly in LIM lim_send_switch_chnl_params.
Update wma_set_channel(struct wma_vdev_start_req *req)
PE/LIM call wma API directly for channel switch, don't post msg.
Clean up useless tpSwitchChannelParams.
Change-Id: I876207909ff0bc50f9ec1fbff639c0e9b7d03907
CRs-Fixed: 2529018
Use the correct configuration parameter to enable the
vendor VHT IE support in SAP mode.
Change-Id: I15330d372fe2b83bb229aa967bea5d43813ada95
CRs-Fixed: 2526798
Currently the driver does not verify the channel of the
AP and adds that to the connect list.
If a connect comes to the driver for this BSSID, then the
driver sends the same channel to the FW to start the vdev
which results in an assert due to channel not valid.
Fix is to check the validity of the channel and send a
vdev start only with a valid channel frequency.
Change-Id: Ic5c8c446f8731b32123051126503b071428f122c
CRs-Fixed: 2515158