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
To address kernel control flow integrity (CFI) issues related to type
mismatch, correct the input argument type for sme_ser_cmd_callback().
Change-Id: I3f0b5df70163eca9282d2b1c2a48203448e4f0a6
CRs-Fixed: 2402977
Allow driver to send RSO command irrespective of value of INI
FastRoamingEnabled.
FastRoamEnabled has nothing to do with LFR enable or disable.
Change-Id: Ice5e653b249f988a49d18ed56c9be53d4436bf56
CRs-Fixed: 2385045
Currently PMK cache is not getting cleared inside driver,
which can lead to information disclosure.
To address this issue, clear PMK information from all the
possible places in the driver.
Change-Id: I83758920f414c5287292ebdbebdcc9bf7238103c
CRs-fixed: 2403441
Currently PTK, GTK and IGTK keys are not getting cleared
on wifi link disconnection from wifi driver memory, which
can lead to information disclosure. Clear PTK, GTK and IGTK
keys from wifi driver memory to avoid any potential information
disclore after wifi is turned off.
Change-Id: I309cd7af8d396167e9ec3ef9c6c443e8c08903d8
CRs-fixed: 2396603
In lim_send_mlm_assoc_ind, wpa information may be copied to rsnIEdata.
So before calling dot11f_unpack_ie_rsn for rsnIEdata in the function
csr_roam_chk_lnk_assoc_ind, make sure the element id is RSN IE.
dot11f_unpack_ie_rsn returns failure for rsnIEdata if it contains
WPA information, then WPA connection fails.
Change-Id: I602a47326d452f33ba589a9cc99f59ce443d3162
CRs-Fixed: 2406444
BOOLEAN is native c type so external range validation is not needed.
Cleanup references to cfg_in_range(), cfg_min and cfg_max for
BOOLEAN items
Change-Id: I4a60d1bbd12ad3cce00b33c551b3927b2f01f638
CRs-Fixed: 2359500
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 tSmeConfigParams typedef does
not meet any of those criteria, so replace it (and the "tp" variant)
with a reference to the underlying struct.
Further note the Linux Coding Style frowns upon mixed-case names and
so-called Hungarian notation, so in conjunction rename the underlying
struct to be in compliance.
Change-Id: I926cf67d87398782049bf9acbcd06f806a7cec29
CRs-Fixed: 2412715
The rrmConfig struct inside tSmeConfigParams is written by
sme_get_config_param() but is otherwise never accessed. Since
this is unused, remove it.
Change-Id: Ia173b20e69506f62e80baf239e889026595ba579
CRs-Fixed: 2412714
There are currently a multitude of issues with sys_process_mmh_msg()
so update both the interface and the implementation to align with good
software engineering practices and the Linux Coding Style.
Change-Id: I76e53772dd72426cc4245756457e2a8140937571
CRs-Fixed: 2411714
Log of level err will call printk to print on uart, may make
current thread sleep or delay > 10ms, then wma_roam_synch_event
need longer time to handle, LFR3 roam need longer time.
Change-Id: Ibdd58f74fcf5cf3de8e2b06166c375a2ce634cb5
CRs-Fixed: 2406307
sme_ese_send_beacon_req_scan_results sends number of bss description
present in beacon report through bcn_report->numBss. For each
iteration driver could send max 4 BSS. In case if driver has to send
beacon report for more than 4 BSS, It sends 4 BSS per iteration. Once
first four results are sent and bcn_report->numBss is not set to 0,
in next iteration bcn_report->numBss++ start from 4 instead of 0.
This Result in sending value more than 4 instead of 4 for next rest
BSS and leads to Integer overflow for bcn_report->numBss.
Driver should memset beacon_rep buffer for each iteration in order to
prevent Integer overflow of bcn_report->numBss. By this driver
could send fresh beacon report (independent of previous beacon report)
in each iteration.
Fix is to memset beacon_rep buffer to zero after sending beacon
report in each iteration in sme_ese_send_beacon_req_scan_results.
Change-Id: I0d07e54ec7f05e8eef388f9958fad597dc49873e
CRs-Fixed: 2408834
While handling userspace-directed re-association, driver
checks for flag "supplicant_disabled_roaming" before sending
roam invoke command after connection. Currently, the value of
supplicant_disabled_roaming is getting updated by value comes
through vendor command QCA_WLAN_VENDOR_ATTR_ROAMING_POLICY.
In case if roaming does not get enabled using vendor command
in __wlan_hdd_cfg80211_set_fast_roaming, driver rejects
fast re-association cmd. This leads to roaming failure.
Fix is to allow roam invoke command irrespective of flag
"supplicant_disabled_roaming" and send csr_roam_offload_scan
with reason REASON_SUPPLICANT_DISABLED_ROAMING instead of
REASON_DISCONNECTED while processing FASTREASSOC command.
Change-Id: Iee55fff8dd9445a2fb2b96a244f59a763f207dd5
CRs-Fixed: 2408861
Host driver code has several instances of struct bss_description
that is type defined to tSirBssDescription, *tpSirBssDescription
This goes against the linux coding style. This change replaces
tpSirBssDescription with struct bss_description *.
Also Linux Coding Style doesn't welcome mixed-case names. So
cleanup some mixed-case variable names as well.
This change should be followed by changes to replace
typedef tSirBssDescription also ultimately.
Change-Id: Ic6fa2d5c7db0d0c1fe4be1096d416295dcb83779
CRs-Fixed: 2409129
Currently the driver has hdd, sme api to set the hw
dbs capability in the mac context which is not used
by any other module, because the dispatcher APIs are
already present.
Remove the hw mode capability variable from the mac
context as it is no longer used.
Change-Id: I7aa53b09cfb93fcd87ba9faf97402c136ef6b7ed
CRs-Fixed: 2409368
The Linux Coding Style frowns upon mixed-case names and so-called
Hungarian notation, so rename identifier eBand to be compliant.
Change-Id: If232dac1fb05b64c7643ee0f3adea47a712a192b
CRs-Fixed: 2409886
The Linux Coding Style frowns upon mixed-case names and so-called
Hungarian notation, so rename SME local variable pPlmReq to be
compliant.
Change-Id: I89fbf08ccc2b16bfed397ac6afa190cefe34141c
CRs-Fixed: 2409885