Function csrValidateCountryString() no longer exists, but there is
still an obsolete prototype for it, so remove it.
Change-Id: I40869b7160cbc3e64b785e44711237455f2e02b0
CRs-Fixed: 2255482
Currently driver marks cache type as static when it sends valid
channel list to firmware to use for roaming. When cache type is
static, driver will not add WMI_ROAM_SCAN_MODE_RSSI_CHANGE in
wma_process_roaming_config.
Roam scan may not trigger upon RSSI change when mode does not
have WMI_ROAM_SCAN_MODE_RSSI_CHANGE and may have issues related
to roaming.
Mark channel list as dynamic based on newly added ini
"force_rssi_trigger" for valid channel list as well.
With this new ini , customers can tune the behaviour of
roaming scan in firmware based on RSSI trigger or periodic.
Change-Id: I04123cb954408fd510d41d2b6ba96144be0945f9
CRs-fixed: 2240544
If SAP comes up in 2.4Ghz channel in HT/VHT 20/40Mhz and channel
switch comes for a 5Ghz channel, SAP gets started in HT/VHT 20/40
Mhz only while it should connect in VHT80Mhz or HT40Mhz depending
on whether the initial connection is in HT or VHT.
Change the bw to 80Mhz if initial connection is in VHT and to 40Mhz
if initial connection is in HT if channel switch comes for a 5Ghz
channel.
Change-Id: I709dd35575866b7ec9fddcfb94078f114a78d1a2
CRs-Fixed: 2226979
Currently PE session ID is filled in eWNI_SME_DISCONNECT_DONE_IND
__lim_process_sme_disassoc_cnf but this command is expected to fill
SME session ID instead.
Send SME session ID instead of PE session ID for
eWNI_SME_DISCONNECT_DONE_IND in __lim_process_sme_disassoc_cnf function.
Change-Id: I50f7ec31eea265d04a94d9717415227bde09bdb5
CRs-Fixed: 2246024
Currently in function csr_roam_issue_connect, if queue sme command
fail, the scan result will be purged by csr_release_command_roam(), but
some caller will also purge it again if don't return success status,
like csr_roam_connect().
Make csr_roam_issue_connect() to consume hBSSList always, and remove
double purging code in the callers.
Change-Id: If226ff300771ccbf1dcbfb2a82fb02498c334cdc
CRs-Fixed: 2237948
Currently, BTM offload config from the ini is sent to the FW as part
of the RSO start for the vdev which has roaming enabled. In case
of STA+STA concurrency, when roaming is enabled for second STA,
BTM config is sent for the second STA vdev leading the FW to assert
as the FW already has BTM offload enabled for the previous STA
session and supports only one vdev with BTM offload enabled at a time.
Send BTM offload config with flags as disabled as part of RSO Stop
so that the FW de-inits the BTM offload on the current connected vdev
before it inits BTM offload config on the new vdev for the second STA.
Change-Id: I7af499b0f7c77b5d52e6c74b09c28c845bdfcd9a
CRs-Fixed: 2251994
In commit d217d19d7e ("qcacld-3.0: Add vendor cmd to support
antenna diversity") and commit 66831666b4 ("qcacld-3.0: Add
vendor attr to get rx aggregation statistics"), tHalHandle (pMac)
are passed by SME to WMA APIs that expect a tp_wma_handle.
To fix this, call cds_get_context() to get wma handle.
Change-Id: I01812b2390269805da4d1a5cb40a811d1e22ec56
CRs-Fixed: 2253253
Add spectral scan feature flag which can be
used to control the feature through build options.
Change-Id: Ide13e958cffff610626c891041307b40ac94c47d
CRs-Fixed: 2232167
Per the Linux coding style "mixed-case names are frowned upon" so
rename typedef tHddHandle to hdd_handle_t to align with the Linux
typedef naming convention.
Change-Id: I34849ed819b31564ca561a1718083793bf30a0a3
CRs-Fixed: 2254953
Currently HDD is directly calling csr_roam_get_wpa_rsn_req_ie() and
csr_roam_get_wpa_rsn_rsp_ie(). That is a layering violation since HDD
should be calling SME APIs; CSR APIs are meant to be called by
SME. And SME already exposes two APIs which, in turn, call those CSR
APIs. However those SME APIs, sme_roam_get_security_req_ie() and
sme_roam_get_security_rsp_ie(), are defined to take an extra secType
parameter which is then unused. To clean up this mess modify the SME
APIs to have the same naming and parameters as the CSR APIs and update
HDD to call the SME APIs.
Change-Id: I0ba2f056e089818ab04a8d421e3d8c571e312831
CRs-Fixed: 2254949
Currently sme_update_channel_list() is defined to take a
tpAniSirGlobal mac_ctx. However SME APIs are supposed to hide the fact
that they operate on tpAniSirGlobal and instead should be taking a
tHalHandle. Furthermore a tHalHandle is what is currently being passed
by HDD. Therefore update sme_update_channel_list() to take a
tHalHandle.
Change-Id: I2f424a6c11342470fd6885968d635109327be3f0
CRs-Fixed: 2254947
Currently the firmware supports FILS by default, and the
kernel and driver have dependencies on the kernel version
for FILS support. The PMK info i.e the PMK length and the
PMK itself is sent to the firmware as part of roam
scan offload params, and are filled from the PMK
received from the CFG layer via csr_roam_set_psk_pmk.
The PMK and its parameters are received via a vendor
command, and called via ops wlan_hdd_set_default_mgmt_key.
With the presence of FILS feature, the pmk is filled
via hdd_fill_pmksa_info(), which fills the PMK,PMK
length to the pmk_cache. It is called via ops
wlan_hdd_cfg80211_set_pmksa. But in the NON-FILS case,
the PMK, PMK length received from the CFG layer is NULL
and zero respectively, and hence the firmware which expects
a valid PMK and PMK length gets a PMK as NULL , and the
PMK length as zero, which will lead to deletion of the
pmk received earlier via vendor command, also a fresh 8-way
handshake from the HOST, rather than a 4-way handshake
from firmware if the PMK-ID for that particular AP(BSSID)
matches the PMK-ID in the AP.
Fix is to fill the params of PMK, PMK length in the NON-FILS
case too by copying the params received previously via the vendor
command, where the params are stored in the session itself.
Hence it will fulfill the requirement of the PMK, PMK len
from the firmware, and lead to a faster handshake process
while re-associating.
Change-Id: I4c91cac6bad400c8fa58b2a6ba2b282a3b7f1620
CRs-Fixed: 2243070
Propagation from cld2.0 to cld3.0.
When receiving beacon request for radio measurement, sta
reports BSS in all valid channels regardless of specified
regulatory class in request. To fix this, let sta report only
BSS of requested RC.
Change-Id: I98c80ab3d53dd9d63225349e3c7657f48c758957
CRs-Fixed: 2237989
While calling sme_pdev_set_pcl() API, driver is passing the argument
by value. The size of the argument is 280 bytes which is not good
design.
Pass the argument by reference instead of passing it by value to make
design simple.
CRs-Fixed: 2233212
Change-Id: I92849fb125fe864c1c7c7977bce392a7bcfe4121
Fix tTxrateinfoflags as per linux coding guidelines, this will later
help move the struct to qcacmn.
Change-Id: I1911d25594aaecc7c166cf36b79111b61e6de457
CRs-Fixed: 2244834
Address the following issues in the core/sme folder:
CHECK 'accomodates' may be misspelled - perhaps 'accommodates'?
(actually accommodated)
CHECK 'acknowledgement' may be misspelled - perhaps 'acknowledgment'?
CHECK 'becasue' may be misspelled - perhaps 'because'?
CHECK 'becuase' may be misspelled - perhaps 'because'?
CHECK 'catagory' may be misspelled - perhaps 'category'?
CHECK 'explictly' may be misspelled - perhaps 'explicitly'?
CHECK 'failue' may be misspelled - perhaps 'failure'?
CHECK 'fucntion' may be misspelled - perhaps 'function'?
CHECK 'infomation' may be misspelled - perhaps 'information'?
CHECK 'inteface' may be misspelled - perhaps 'interface'?
CHECK 'managment' may be misspelled - perhaps 'management'?
CHECK 'messsage' may be misspelled - perhaps 'message'?
CHECK 'Notifed' may be misspelled - perhaps 'Notified'?
As well as the following spotted during code review:
'sucsess' -> 'success'
Change-Id: Ieaa299d4dbc08c07f10aaf9d967336ac7b11d88d
CRs-Fixed: 2241947
LDPC dynamic configuration setting is not updated into session
configuration hence LDPC disable do not happen when user disable
it. Update the session configuration parameters for LDPC with
user settings.
Change-Id: Ic0b5f2b17cde5746054f90d78d6c99624444d086
CRs-Fixed: 2235936
When deauth is received from AP, while processing of deauth frame,
WM status change command is queued in SME command pending list with
priority set as true in which DEL_BSS and DEL_STA happens leading to
VDEV_STOP AND VDEV_DOWN correspondingly.
When disconnect is issued from upper layer, ROAM command with reason
eCsrForcedDisassoc gets queued in SME command pending list with priority
set as true which performs DEL_BSS nad DEL_STA and then
eSmeCommandDelStaSession SME command is queued with priority set as false
which performs DEL_SELF_STA.
If disconnect is issued from upper layer and deauth is received from AP at
the same time, it might happen that ROAM SME command and
eSmeCommandDelStaSession SME command gets queued in SME command pending
list but WM status change command gets queued on top of these as priority
is set to true before the former commands can be processed. While
processiing of WM status change command, eWNI_SME_DEAUTH_CNF msg gets
queued in SME message queue which queues WMA_DELETE_BSS_REQ in WMA msg
queue. If WM staus change command is released just after
eWNI_SME_DEAUTH_CNF is posted, it might happen that Roam and
eSmeCommandDelStaSession SME commands from SME command pending list gets
processed first which will queue WMA_DEL_STA_SELF_REQ in WMA msg queue
before eWNI_SME_DEAUTH_CNF gets processed and queue WMA_DELETE_BSS_REQ
in WMA msg queue. This leads to processing of WMA_DEL_STA_SELF_REQ before
WMA_DELETE_BSS_REQ causing assert as this is unexpected behaviour.
Release WM status change command only after eWNI_SME_DISCONNECT_DONE_IND
which happens after WMA_DELETE_BSS_REQ and WMA_DELETE_STA_REQ gets
processed so that ROAM and eSmeCommandDelStaSession SME commands gets to
process only after processing of DEL_BSS and DEL_STA and so
WMA_DEL_STA_SELF_REQ will always be processed after WMA_DELETE_BSS_REQ
avoidong system assert.
Change-Id: Iec0176fecf218e07f31b258c0dc52aefb480defe
CRs-Fixed: 2211622
If disconnect command is in SME pending queue, when connect command
is received, the disconnect command is flushed and as SME is
already in connected state the new connect command is handled as
reassoc req and as no preauth was done with this new AP, SME does not
call proper HDD callback to indicate conenct failure. Thus HDD remains
stuck in connecting state leading to scans rejection.
To fix this do not flush disconnect command from SME on receiving
connect cmd and thus clean up the SME before connect is processed.
Change-Id: Icefe8866a24b332688c64d8e69a11642fd7215d9
CRs-Fixed: 2238873
Currently the channel list received from the SETROAMSCANCHANNELS
driver command is passed directly to the FW without checking if it
contains any invalid channels leading the firmware to assert if the
list contains unsupported channels.
Validate the channel list received from the ioctl with the base
channel list and send to firmware only if all the channels in
the list are valid
Change-Id: Ia502eecb97e34de854a75a6af7ffb8ccc02a7e52
CRs-Fixed: 2231242
In a scenario where the below two HDD commands are executed at the
same time from different threads
1. Disconnect which does an RSO Stop and free the pCurRoamProfile
2. Set Blacklist BSSID which does and RSO Update and accessed
the pCurRoamProfile
pCurRoamProfile is accessed in the function csr_roam_offload_scan
after is freed from the other context.
The Disconnect command from HDD is protected under the global SME lock,
however, the set blacklist BSSID path is not protected under SME lock.
There are multiple instances where csr_roam_offload_scan is called
without the SME lock which could lead to similar issues.
Acquire SME lock before csr_roam_offload_scan from callers in
SME/HDD which can be from other threads.
Change-Id: I9666bab0001b56ec01dcf1df0becb36344fb6f9a
CRs-Fixed: 2226423
When Pre-Auth is failed, it will go to ROAM_SCAN_OFFLOAD_START
or ROAM_SCAN_OFFLOAD_RESTART process, it always uses zero as
session_id param for csr_roam_offload_scan, it's wrong, session_id
should be variable value.
Fix is to use variable session_id param for csr_roam_offload_scan.
Change-Id: Iaf5f234dc73001440aaf02d7931c7891903f9148
CRs-Fixed: 2239812
Association request initiated by the host contains
the RSN capabilities which contains both the flags
of PMF, i.e PMF required and PMF capable. The DUT
may connect to a non PMF AP or only a PMF capable AP,
if the DUT is PMK capable and not PMF required,
but connection to a non PMF AP isnt allowed
if the DUT is configured as PMF required.
In the Association request, the DUT advertises its
RSN capabilities, and accrding to them, the connection
(PMF/non PMF) happens. But these capabilities arent
sent to the firmware, so while roaming, the DUT may
connect to a non-PMF AP, as in the re-assoc request
the DUT would still advertise PMF-REQUIRED as false,
which would be violation of protocol.
Fix is to send these RSN capabilities to the
firmware as part of roam scan offload params,
to have firmware save the configuration, and
send the RE-assoc request with PMF required as
true, if the DUT supports PMF required.
Change-Id: Iff58f7ba3b2fee7a834bd625225bbb3d62f33557
CRs-Fixed: 2234977
'wma' pointer is initialized using the return value of
cds_get_context;This function can return NULL value.
Check for NULL pointer before dereferencing the 'wma'.
Change-Id: I529a34fba91f19bdd6c62d14e97cfabb476cdf7f
CRs-Fixed: 2239647
Remove duplicate structs wmi_dual_mac_config and sir_dual_mac_config
and use policy_mgr_dual_mac_config.
Change-Id: I6da6539f519ec46ee274ba3f3ae042e5fd9c25d2
CRs-Fixed: 2190993
Use correct size to mem zero tCsrRoamConnectedProfile
In csr_roam_save_ndi_connected_info() function.
Change-Id: I54d2bef0bd9202971dff47f9b25d43ff40258630
CRs-Fixed: 2232891