During LFR3 driver post the message to add the scan entry in
scheduler to scan module and continue with roaming and send roam
event to CFG layer. Also it set the new AP' scan entry in scan
module as associated, to avoid age out of the entry.
Now as the message posted to scan module will get schedule after
roaming is complete, if new AP's entry is not present in CFG scan
cache the roam indication to CFG may fail. Also if it's not present
in the driver cache the new AP's entry may AGE out and channel will
not be added in occupied list, used for roaming.
Thus update the scan entry in scan module and CFG in same context.
Change-Id: I2c5f165b43d48a0b0b54fdf08a0e53b31fac07aa
CRs-Fixed: 2435410
In SAP if a peer is disconnecting, so CSR roamstate is set to
eCSR_ROAMING_STATE_JOINING. Now if at the same time another peer
is trying to connect, eWNI_SME_UPPER_LAYER_ASSOC_CNF will be dropped
in eCSR_ROAMING_STATE_JOINING state.
Fix this by processing eWNI_SME_UPPER_LAYER_ASSOC_CNF in
eCSR_ROAMING_STATE_JOINING state.
Change-Id: I7d4347013eca494e537aaeb4468814238cb3fca6
CRs-Fixed: 2430840
Validate cfgLength to the upper bound before using it in copy
inside csr_get_cfg_max_tx_power()/lim_get_dot11d_transmit_power.
Change-Id: Ibcc1f145db9b902a29a0332553323d0a3ac6b2ff
CRs-Fixed: 2423707
If the FW doesn't send the ext service ready event, and
thus the host does not get the max chainmask that both
the macs can support, the host still updates the ini
with the minimum of the host, and FW config, which can
lead to functional issues in connection, and scan.
Fix is to honour the setting only if the FW sends a non
zero positive chainmask for both macs.
Change-Id: I2a321923a2f995cca20cef3980acb1bf41ca0db0
CRs-Fixed: 2429584
Pointer 'req' is dereference before null check which can lead
to null pointer dereference.
Pointer 'body' is never null check after allocation of memory.
qdf_mem_malloc can return null and when pointer 'body' is
dereference, it can lead to null pointer dereference.
Change-Id: I62f26341079d4849c56f7d35d0b7c64df6b49f3b
CRs-Fixed: 2424010
The host driver handles update connect params sent from
userspace and updates the FILS auth type or FILS Erp info based
on the UPDATE_FILS_AUTH_TYPE(2) or UPDATE_FILS_ERP_INFO(1) bit
set in the changed flag.
Handle the association IE update sent from userspace also.
UPDATE_ASSOC_IE(bit 0) will be used to check if assoc IE needs
to be updated. This assoc IE should be sent to firmware. MBO IE
is updated as part of this IEs from the WNM action frame
received by the userspace when setting non preferred channel list
from the AP. If host driver fails to update these IEs to
firmware, MBO IE will not be sent in reassociation request frame
and MBO testcases will fail.
Parse the assoc IE into hdd_adapter->roam_profile. If
parse and validation is successful, copy the assoc IE into
csr_roam_session of the corresponding vdev. Send RSO update
command to firmware, with updated assoc IEs.
Also currently the driver registers update_connect_params
event only if FILS compile flag and UPDATE_CONNECT_PARAMS
flag is enabled. Exclude FILS flag check from this conditional
condition and check only for UPDATE_CONNECT_PARAMS.
Change-Id: I29fadebc9a7fc43937b805f0f041bb86ddf85cbd
CRs-Fixed: 2429665
Set device HE capabilities to testbed defaults when device is
configured as testbed device.
Change-Id: I5b1d9eb6f0b576f18a5e4d77131354639b0ae2f0
CRs-Fixed: 2428156
Remove the element ID macros defined in qcacld-3.0 and
replace it with the macros defined in qcacmn.
Change-Id: I01a38e3d6c4857eb48868a34e278366ad9d5d099
CRs-Fixed: 2427311
Scan on channels triggered as part of active mode RRM
beacon report request fails on receiving roaming
indication from firmware due to get_session_id_from_bssid
failure. So current req in RRM PE context will not be freed
and as a result all subsequent beacon report requests will
fail.
Fix is to free current req in RRM PE context on scan
req failure due to STA roaming to a different AP.
Change-Id: Ib911ddcc7538bb5f3711647bb83a1978d1a1af73
CRs-Fixed: 2419044
The Linux Coding Style frowns upon mixed-case names so rename
csrConfig in struct sme_config_params to be in compliance.
Change-Id: I451d728c79608041effed09adb199a357c97c0b5
CRs-Fixed: 2428992
The Linux Coding Style enumerates a few special cases where typedefs
are useful, but stresses "NEVER EVER use a typedef unless you can
clearly match one of those rules." The tCsrConfigParam typedef does
not meet any of those criteria, so replace it with a reference to the
underlying struct.
Further note the Linux Coding Style frowns upon mixed-case names so in
conjunction rename the underlying struct to be in compliance.
Change-Id: If6f07ced0a8f92ddf06bc40a042efd6584df147b
CRs-Fixed: 2428991
As a result of TDLS componentization the following SME TDLS typedefs
are no longer used, so remove them:
- tSmeTdlsPeerCapParams
- eSmeTdlsPeerState
- tSmeTdlsPeerStateParams
- sme_tdls_chan_switch_params
Change-Id: I6e857aedcbfe7c422425076aeac8c9b882be7513
CRs-Fixed: 2428990
When WLAN_CONV_CRYPTO_IE_SUPPORT enabled, pmkid should be
saved to crypto component by crypto API. Otherwsie RSN ie
construction will have no pmkid info to add to rsn ie buf.
Change-Id: I8643aca794dcb42323d3d051e7a15a0597167ed6
CRs-Fixed: 2402775
Currently, there is no information for roam reason
in csr
Fix,check 4 LSB of roam_synch_data for roam reason
and send roam_reason to hdd
Change-Id: I4306339eb69db3bfc05fac79b13e3693582ff05d
CRs-Fixed: 2425911
Currently the key information i.e the key, and the number of keys
are not getting cleared on wifi link disconnection from wifi
driver memory, which can lead to information disclosure.
Clear the key information i.e the number of keys and
keys from wifi driver memory to avoid any potential information
disclore after wifi is turned off.
Change-Id: I45306e0d648c500f63f723b4e3ccb6098c055158
CRs-Fixed: 2415413
If LIM initiate disconnect for a peer (eSmeCommandWmStatusChange) and
at same time bss is stopped, disconnect may get processed after stop
bss and thus will return from LIM as AP has already stopped.
LIM will post eWNI_SME_DISCONNECT_DONE_IND to sme to remove
the eSmeCommandWmStatusChange command from serialization active queue.
But eWNI_SME_DISCONNECT_DONE_IND is not processed in CSR sub state
eCSR_ROAM_SUBSTATE_STOP_BSS_REQ the command is not removed.
Fix is to handle the eWNI_SME_DISCONNECT_DONE_IND in
eCSR_ROAM_SUBSTATE_STOP_BSS_REQ state.Also allow
hdd_cfg80211_del_station call during unload.
Change-Id: I79cd1f413f2f9f12e6da6702098b782b6c156d24
CRs-Fixed: 2425724
Add support to get the various Coex data from the debugfs.
This commit adds the support to get the various coex data:
* COEX STATE
* COEX DPWB STATE
* COEX TDM STATE
* COEX IDRX STATE
* COEX ANTENNA SHARING STATE
The specific state information can be read via the debugfs.
Example to read the COEX STATE logging:
sm6150:/ # cat /sys/kernel/debug/wlan/mws_coex_state
vdev_id = 0
coex_scheme_bitmap = 0
active_conflict_count = 0
potential_conflict_count = 0
chavd_group0_bitmap = 0
chavd_group1_bitmap = 0
chavd_group2_bitmap = 0
chavd_group3_bitmap = 0
Change-Id: I92272ad7edf44df22730ac0fa992d876840ba632
CRs-Fixed: 2413943
In csr_roam_issue_set_context_req_helper, reference of vdev is not
released after get.
Change-Id: I686cd6a8dfd7e7889ef8e9ac3a4c6eb6be217f6e
CRs-Fixed: 2424885
During LFR2 roaming, after the preauth with new AP
and disassociation with current AP are successful,
proper HW mode should be set based on the
existing concurrency scenario.
Change-Id: I312ed10bc844712b3dba36680457198a19f1e85c
CRs-Fixed: 2367224
Per the Linux Kernel coding style, as enforced by the kernel
checkpatch script, pointers should not be explicitly compared to
NULL. Therefore within sme replace any such comparisons with logical
operations performed on the pointer itself.
Change-Id: I26dc90bbae78329dd04768a21c63a9ea55c8fdb4
CRs-Fixed: 2418388
It doesn't handle event eWNI_SME_UPPER_LAYER_ASSOC_CNF if state isn't
eCSR_ROAMING_STATE_JOINED, which cause memory leak. So handle this
event and free the memory.
Change-Id: Ibfbf9ac5e2d74a2c81839976b4cc1fb7deae7e60
CRs-Fixed: 2414369
In 2x2 DBS mode once STA/SAP change channel from 2.4Ghz to 5Ghz,
policy_mgr_get_current_pref_hw_mode_ptr never return
PM_SINGLE_MAC_UPGRADE to start the opportunistic timer to switch to
single mac mode.
Fix is to check and start opportunistic timer once connection info are
updated. Also start opportunistic timer before
check for SAP to change channel as when SAP change channel it should
stop opportunistic timer and set required HW mode.
If single mac mode is required after channel switch it will start
opportunistic timer again in channel switch callback.
Change-Id: Id6bbc7ea51ba8147e517e7e7bf2b14931c95ea44
CRs-Fixed: 2419645
Currently in case of SAP, supported mode of station received
in assoc request is not getting cached.
Add support to cache the supported mode of station received
in assoc request request in sta_info.
Change-Id: I9820ae2d65fc529a1ab16424f6732fd273da3ae0
CRs-fixed: 2419957
Propagation from qcacld-2.0 to qcacld-3.0
If AP sends unsolicited neighbor reports to station proactively,
the cached neighbor report list will grow longer and longer.
Fix it by purging the cache on reception of unsolicited neighbor report.
Change-Id: I2458607041caeb84cb553aa1b9fc6f4029a5cf1c
CRs-Fixed: 2419615
If DBS 2x2 mode is supported, to operate in 2.4Ghz the driver needs to
be in DBS mode before vdev start/restart is sent on 2.4Ghz channel.
If STA is connected to a 5Ghz channel and the PEER AP switch from 5Ghz
to 2.4Ghz channel, it sends vdev restart without sending the HW mode
change to firmware.
Fix is to set HW mode before the initiating vdev restart if new channel
is 2.4Ghz and 2x2 DBS is supported and current HW mode is not DBS
Change-Id: I6dc57f37e155f0e29b17840e4e246de773f42b3e
CRs-Fixed: 2419642
Change Ib55b211e4fdab427aff8c04c8ac99e1af56c6edc ("qcacld-3.0: Rename
pMac in csr_api_scan.c ") previously renamed all instances of pMac in
csr_api_scan.c to align with the Linux coding style.
Subsequently change Iac183da52495aca07c6270edeb9f383ab49c1ff5
("qcacld-3.0: Add CFG items of power") reintroduced pMac in function
csr_save_tx_power_to_cfg(), so once again rename it in that function.
Change-Id: I5272cf71c422618ae0e3c042a99f7728192321f2
CRs-Fixed: 2420015
Mlme info is not updated for the new AP to which driver roamed and
also not updated for the old AP after driver roamed to new AP.
Also in some case when deauth is from peer the Mlme info is not reset
by driver for the disconnected AP.
As mlme info of the AP is not updated and it remain in associated state
The AGE out logic skip the AP and thus it never ageout.
Fix this by properly updating the MLME info of the AP during roaming
And disconnection.
Change-Id: Ib17499c8ab0c4725d146d7c09077c92661adbdd5
CRs-Fixed: 2419853
Currently the driver just start the vdev according to the ini
params, without consdering the tx, rx chainmask supported by the
FW per band, per mac, which can lead to connection in 2x2, even
though FW is not capable of 2 antennas on a particular band.
Fix is to intersect both the tx, rx chainmask for both bands,
and change the ini to minimum of the nss supported by ini, and
the BDF setting of the chains.
Change-Id: Ib0e9bac19959bbcf9bade7dbd78674be4099a23d
CRs-Fixed: 2414103
Send MBSSID BSS information like profile number
and max profile count to firmware as part of VDEV
UP command.
Change-Id: I612f0be9c52fd61b25d1c884940f28ce9fe0872e
CRs-Fixed: 2399999
Currently, whenever roaming is triggered after a successful roam scan
firmware sends a BTM query to current connected AP when it is 11v
capable. Driver completes roaming with candidates received as part of
BTM request from AP. STA respond to AP with BTM response after
successful initiation of roaming.
Now the requirement is FW could send "BTM query with a preferred
candidate list" after a successful roam scan for some roam scan reasons
like PER, LOW_RSSI, HIGH_RSSI, MAWC, DENSE etc. Preferred candidate list
is obtained as part of roam scan based on firmware bss scoring logic.
Add new ini "btm_query_bitmask" to configure the bitmask for roam scan
reasons which is sent to firmware as part of RSO start via wmi btm config
cmd. Fw sends "BTM query with preferred candidate list" only for those
roam scans which are enabled through this bitmask.
New INI: btm_query_bitmask
Min: 0
Max: 0xFFFFFFFF
Default: 0x8
Bitmask : 0x8 (LOW_RSSI) refer enum WMI_ROAM_TRIGGER_REASON_ID.
Change-Id: I24b538745f2ac88d4e5c990573234e0f8a881b1f
CRs-Fixed: 2408111
With new scan module there is no need for LIM to send msg
eWNI_SME_CSA_OFFLOAD_EVENT to CSR to flush scan cache.
Lim can call the scan flush API directly.
Change-Id: I30390a7a6407ab24089b735f55ded1aa354fc17e
CRs-Fixed: 2417852
1) Refine the documentation text of 4 ini items:
gStaKeepAlivePeriod
gApKeepAlivePeriod
gChannelBondingMode5GHz
gChannelBondingMode24GHz
2) Fix a discrepancy which happens when ini cfg values
are converted from those defined in enum
eIniChanBondState to the corresponding values in
enum ePhyChanBondState.
3) Use the related APIs to setup channel bonding modes
instead of directly assigning values.
4) Remove the redundant inclusion of the following two
header files in csr_api_roam.c:
cfg_ucfg_api.h
wlan_mlme_api.h
Change-Id: I43c1e5a05bbb34952a5c7bdbde734f4014592c12
CRs-Fixed: 2416991
The driver currently defines two different data structures to hold
PLM Request parameters:
- legacy struct plm_req
- unified WMI struct plm_req_params
To align with the converged software architecture remove the legacy
definition and exclusively use the unified WMI definition.
Change-Id: I7675686aba9590a4507a8f9ebffcbf181ee00a21
CRs-Fixed: 2411817
In hdd_get_band_helper, use ucfg_reg_get_band() instead of
sme_get_freq_band() to get band information.
Also, remove sme_get_freq_band().
Change-Id: I8bb66527fb1ab92bc45f799bbca4310a3a8d1dcf
CRs-Fixed: 2414912
IEEE802.11ai standard mandates Mobility domain IE to be
advertised in authentication frames for FT-FILS connection.
With FT-FILS akm suite connection, initial association to the
AP happens with full EAP-8021x handshake. When association to
the AP happens second time, FILS connection with auth algo 4 and
ERP keys exchange happens. During this FILS association, host
driver doesn't send MDIE in the authentication request frame.
This will result in authentication rejection with failure code:
INVALID_MDIE.
Advertise MDIE in authentication frame during FT-FILS initial
mobility domain association.
Also mark the connection as 11r connection in PE session when
the AKM suite is FT-FILS SHA-256 or FT-FILS SHA 384.
Change-Id: I4dbbd9b0ef67ef3a6eb3b8afaaaa22be260d7b3e
CRs-Fixed: 2411728
Add support to configure HE +HTC support in HE caps and HE OM
control transmission.
Change-Id: Ic3ad5952198472ecda79471a37ff527dfdbcdbf0
CRs-Fixed: 2359376
If Firmware supports NDI DBS mode, driver can support NDI
concurrency along with NAN and STA type connecitons. Use
Policy Manager API's to add support for these concurrencies.
Add policy mgr related changes to support NDI concurrencies.
Change-Id: If272be34606c0897d0b145c602b4bc2ba4462cb0
CRs-Fixed: 2384549
Currently the driver populates the he caps value from the mlme cfg
which is the max MCS set that the driver supports in 11ax , i.e
for 2x2 mode, but dont consider the session nss, i.e the intersection
of AP, and the self capability, hence the assoc req is sent with
2x2 MCS rates in HE caps.
Fix is to change the MCS set according to the nss value of the
session.
Change-Id: I0ca4778eeafc3469611109b420e4dd58cc8e8ae8
CRs-Fixed: 2410721