There is customer requirement that once wifi chip overheat,
we should switch the tx chain mask to 1X1 to cool down the
chip instead of halting the tx completely.
Add new INI gThermalMgmtAction to configure thermal mgmt action
with default 0. The valid thermal mgmt action INI value is defined
as enum thermal_mgmt_action_code. To set it to 3 -
THERMAL_MGMT_ACTION_CHAINSCALING to meet customer requirement.
Change-Id: I88b1237fae1f476ad9ff0e7b5a469ec314a42bf9
CRs-Fixed: 2765289
FW triggers roaming based on the RSSI score of AP(s) available
after background scan. Currently, the host does not configure
the value of bg_rssi_threshold RSSI. This results in ping-pong
roaming after background scan, even though candidate AP
RSSI is not better than 5dbm than connected AP.
Fix is to configure the value of bg_rssi_threshold via new
INI "bg_rssi_threshold" and configuring default value of
INI as 5dB.
Min: 0
Max: 100
Default: 5
Change-Id: Ib710e294c8b33ff4903d41453e3b55f02daf53ae
CRs-Fixed: 2763962
SAE Public Key (SAE-PK) authentication is an extension of SAE. Host adds
support for SAE-PK APs roam score which host uses to select AP for initial
connection and roaming.
Change-Id: Id8c420950bb8c1d11db5a26aa860e280bcb672d1
CRs-Fixed: 2769372
Move the rssi change vdev params initialization to
csr_neighbor_roam_info_ctx_init() so that vdev priv object will
be created and per vdev parameters are saved and proper values
are sent to firmware.
Change-Id: I87c8272d89f431fa3db60beed4d1da6d9790ec28
CRs-Fixed: 2774826
Add checks in caller APIs to handle negative return value from
crypto get param and crypto get peer param APIs.
Change-Id: Ibb138971f347c7ccdacbc93aa38521d5d9536759
CRs-Fixed: 2775328
The csr_enable_twt() returns true when the fw is 802.11ax
capable. This lead to failure of UAPSD even though the twt
requested mode is disabled throgh ini.
Fix the logic in the csr_enable_twt() to enable UAPSD when
the twt requester mode is disabled.
Change-Id: I5338b95b66312337d6b8befe700f31f3e214b7b1
CRs-Fixed: 2765999
Add the API to validate the BSS before roaming to it. This API will check
if other vdevs are already connected to the BSS, if concurrency is allowed,
and if channel is allowed for the current HW mode.
Keep the new changes under the interface_mgr feature flag.
Change-Id: I280e95b0a30c08fe4037295330628b79d22acf5f
CRs-fixed: 2774543
Currently, the APIs related to setting the preferred channel list is
in the SME module. Move these APIs to the policy manager so they can
be accessed from non-legacy modules.
Change-Id: Icc487dd2a0014e59db9c2df729b875f58e3e975e
CRs-fixed: 2766863
Add debug logs on the sending WMI_ROAM_SCAN_RSSI_THRESHOLD
/WMI_ROAM_FILTER_CMDID/WMI_ROAM_BTM_CONFIG_CMDID
/WMI_11K_OFFLOAD_REPORT_CMDID commands path.
If mawc roaming is not supported by firmware, don't send
WMI_ROAM_CONFIGURE_MAWC_CMDID command.
Add rssi reject AP list to the roam params process in function
csr_cm_roam_scan_filter().
Change-Id: I89e6dcac801e552877f7e918d1179dfa3466857a
CRs-Fixed: 2775101
Currently for Open mode, the install key command is not allowed
but usually set key with 0 length is sent in open mode and in
set key response path the OBSS scan is configured to firmware.
So send dummy response for install key command to go for open
mode connection.
Change-Id: Ia3665ca018114bbf354b8c3138a7c4d81f7f9707
CRs-Fixed: 2769414
Driver maintains a global list of messages (qdf trace) which
different modules posts to each other. If required, this list
can be processed with the help of post processing cmm script.
Currently some of the message types are defined as macros and
these macros can not be used directly in the post processing
cmm script. Enums are much more easy to process with the help
of the cmm script.
To address above issue below fixes are done with this change:
1. Assign enum name to pe message types, lim message types,
sme message type.
2. Change MLM message type from macros to enum type.
3. Change WMA message type from macros to enum type.
Change-Id: Ibd91a5371457a542cd141f680dda44a48b6f7d98
CRs-Fixed: 2719698
Previous Logic:
Once a beacon report req is received, dut sta scans one channel
at a time & report immediately, then move to next channel.This
logic adds some additional delay as scan request and beacon
reporting will be done every channel.
New Logic:
Once a beacon report req is received, dut sta issue sta including
all the valid frequencies in the scan filter so that only single
scan req should be sent to FW.
After the scan is completed for all the channels, populate the
results so that it can be transmitted via beacon report.
Further, in sme_rrm_scan_request_callback, the logic to compute
valid_result was removed as even if RRM scan response is
received after roaming to different AP, the message shall be
posted to PE for rrm cleanup.
Change-Id: I48cb3106e35fb9a441a44a160a6ee6f75f64b81b
CRs-Fixed: 2770859
3 ini:
roam_data_rssi_threshold_triggers
roam_data_rssi_threshold
rx_data_inactivity_time
If there's rx activity during latest rx_data_inactivity_time
and avg of data_rssi is better than roam_data_rssi_threshold, then
suppress roaming triggered by roam_data_rssi_threshold_triggers: low
RSSI or bg scan.
Change-Id: I5b41c4119e61392b50e52ab8ccb8650e5758f3b3
CRs-Fixed: 2768053
sme_context structure uses union of TWT callback functions with
different signatures. This causes a cfi check failure. Remove the
union of callbacks and define them separately.
CRs-Fixed: 2763856
Change-Id: Ic40a572e363ea13f2defe29e25a16e15c5bff06e
Variable roam_now in function csr_neighbor_roam_process_handoff_req()
is initialized as 0 and never be assigned a new value, so it will
always fall to csr_scan_for_ssid() when roaming happen with LFR2.0
enabled.
CERT case MBO-5.2.6 requires BTM reassociation happen within a short
time, otherwise AP will disassociate it and fails this case, it takes
more time if we do roaming scan after BTM response and roaming
candidate bss is ready.
When it is propagated from legacy branch, roam_now is a return value
from csrNeighborRoamProcessScanResults(), but after converged, this
function has no return value, and none zero roamable_ap_count can
indicate candidate ap is ready and we can roam now.
Change-Id: I5f2bd85abf0f7c1488ae729fc48332a92b4d133d
CRs-fixed: 2762476
The logging macros implicitly takes care of embedding function name
in the log, hence there is no need to include __func__ again.
Getting rid of redundant __func__ reduces driver memory footprint.
Change-Id: Idf4685539991f65205f19b27551cef699230c82e
CRs-Fixed: 2768575
Adds support for sme_abort_roaming for ROAM_OFFLOAD_V1.
Also fix compilation error for ROAM_OFFLOAD_V1.
Change-Id: I06247b1118b7dee32ff392b247e2e08e32dbaf9f
CRs-Fixed: 2768397
Cleanup legacy assoc disallowed related code
and take the params from connection manager.
Also update the connection manager config in
case of change of config in relation to
assoc disallowed.
Change-Id: I558b5b7f3b3c422d2882630d16e0f3dfd1898d09
CRs-Fixed: 2767490
When DUT as STA and connected to 2G band AP, and trying to connect to
2G band P2P GO as P2P client. It filters out all 2G band before get
scan result. which casue P2P connection failed. So won't call
wlan_cm_dual_sta_roam_update_connect_channels and allow 2G channels
if opmode isn't STA. This change removes codes about getting filter
for NULL profile case since pProfile has been checked and it won't be
NULL.
Change-Id: I9e83e25c19740a3eebc460af0a660b1315556b4f
CRs-Fixed: 2762443
Add changes to send roam scan mode over RSO start/stop/update_cfg
from connection manager. Update the roaming params and roam scan
params to new structure.
Refine send_roam_scan_offload_mode_cmd_tlv().
Change-Id: I6adce2e8a24ece93a079032d0e66760393fcdccd
CRs-Fixed: 2766023
A race condition can happen when roaming state machine
transition takes place in the following sequence:
1) FW indicates 'roam_synch' event to driver, and driver in
turn, advances its roaming state machine to
'WLAN_ROAM_SYNCH_IN_PROG', in wlan scheduler context;
2) HDD layer starts to do 'disconnect'(could be due to NUD
failure), and thus needs to stop roaming scan offload in
the following sequence:
2.1) Post a RSO stop cmd to FW, via the scheduler thread;
2.2) Advance the roaming state machine to a new state of
'WLAN_ROAM_RSO_STOPPED';
2.3) Check if:
>> the roaming state machine is still in a state of
'WLAN_ROAM_SYNCH_IN_PROG'
>> the neighbor roaming state is in any of the states
below:
eCSR_NEIGHBOR_ROAM_STATE_REASSOCIATING;
eCSR_NEIGHBOR_ROAM_STATE_PREAUTHENTICATING;
eCSR_NEIGHBOR_ROAM_STATE_PREAUTH_DONE;
Here, if any of the conditions becomes true, then
HDD will wait for 4 sec to let the roam_synch handler
finish its job, otherwise the wait will not happen.
2.4) Disconnect the current vdev and advance the roaming
state machine to 'WLAN_ROAM_DEINIT';
In a corner case, race condition can happen in the following
sequence:
>> thread 1), which executes in wlan scheduler context, starts
to run first, and thus roaming state machine advances to
'WLAN_ROAM_SYNCH_IN_PROG', but then gets preempted before
starting to parse the assoc resp frame attached in the
roam_synch event;
>> thread 2) starts to run and posts RSO stop cmd, but the req
msg cannot be handled right away due to scheduler thread
is actively running with other tasks, so it gets queued at
step 2.1);
>> thread 2) continues to run, and simply advances the roaming
state machine to 'WLAN_ROAM_RSO_STOPPED' at 2.2), and then
it will find out none of the conditions listed in 2.3) is
true, so it choses NOT to wait for 'roam_synch' handler to
finish;
>> thread 2) reaches to step 2.4) without waiting at 2.3), and
roaming state machine advances to 'WLAN_ROAM_DEINIT';
>> thread 1) continues to run and starts to parse the assoc
resp frame indicated by FW, and finds that the roaming state
machine NOT in 'WLAN_ROAM_SYNCH_IN_PROG', and thus goes to
the wrong way to treat the buffer in a different manner,
causing a invalid pointer access here.
Fix the racing condition by checking if the roaming state machine
is in 'WLAN_ROAM_SYNCH_IN_PROG' before advancing the same to
'WLAN_ROAM_RSO_STOPPED' in function wlan_hdd_wait_for_roaming().
Change-Id: I202ccb371e9e70a76ef35938c700b60c91b7d3cb
CRs-Fixed: 2761880
OCV capability i.e. 0x4000 bit in RSN capability is set to 1 to
indicate that the STA supports operating channel validation by
including Operating Channel Information (OCI) in RSNA exchanges
and validates the information when received from another STA that
indicated this capability.
OCV support implicitly depends on PMF capability, AP's with no PMF
support disassociate STA if STA sets OCV bit in RSN capability of
assoc request. Hence if AP doesn't support PMF, do not set OCV
support bit i.e. 0x4000 in RSN capability of assoc request.
Change-Id: I4a331cab9dfaebe3a6b8ff8656888a333355f4a6
CRs-Fixed: 2763169
Add RSO logic to send roam trigger from target if along with
some optimization to move old logic in ROAM_OFFLOAD_V1.
Change-Id: I38e7fb4f8873328097df7e3a25d6c709f8d69b33
CRs-Fixed: 2765155
In some instances, AP does not respond to probe req
causing join timeout at STA and no connection.
To solve this,send multiple probe requests(every 200ms)
to AP until join failure timeout(1 sec) expiry,
if single bssid case retry same bss again
(configurable via ini, max allowed tries 2).
Change-Id: I7a7eeedcc24db1a74cd186ff957c638a39cdea6d
CRs-Fixed: 2763815
Check if NAN SRD operation is enabled in the ini
"etsi13_srd_chan_in_master_mode" and send the same to firmware
for all SRD channels.
Change-Id: I2aa8fd34c67b2061963b62a34d29c73740af3a76
CRs-Fixed: 2748455
Add user configuration support to configure dot11 modes for
different vdev types.
Change-Id: I338d9d76f000195d1798bbc8b3b7ff1fb33ee305
CRs-Fixed: 2760240
If join fail reason is timeout, retry sending join req
after timer expiry, timer value can be configured
via join_failure_retry_interval.
Change-Id: If90071b3f6d7f48936db6f7088c3c1547e48b294
CRs-Fixed: 2760236
Add support to send WMI_RSSI_CHANGE_THRESHOLD command to firmware
in connection manager.
Change-Id: I97d4b8f8fc0e938ede0e61d44eb8ffbcbb0fb4ff
CRs-Fixed: 2761043
For older targets thermal mitigation is supported for the apps.
In moselle there a new processor wpps on which firmware runs,
this commit adds the support for the thermal client wpps.
Change-Id: I89896dce808807486ef56b90812369f3d5f4b270
CRs-Fixed: 2757566
Add changes to define structure to hold the WMI_ROAM_SCAN_MODE
command related parameters.
Also added minor cleanup changes.
Change-Id: I24ef18e05de8dd05ee437e440651ea9ab0731e46
CRs-Fixed: 2758316
Add TWT vendor subcommand and TWT operations for
Host triggered TWT. Also add support for TWT Setup command
request and response.
CRs-Fixed: 2735650
Change-Id: I4f52c9fb240714077347ffc5177692de01a6a126
When supplicant disables firmware roam, RSO stop command with
roam scan mode value 4 is sent to firmware and this value 4
indicates the firmare to enable only Forced roam trigger(roam
invoke command from host). But before
ROAM_DEINIT(WMI_VDEV_PARAM_ROAM_FW_OFFLOAD with value zero) is
posted to firmware, the roam scan mode should be 0 or else there
could be potential peer unmap failures if firmware has already
started roam and disconnect is triggered from north bound or from
peer.
To avoid this, in the roam offload state machine handle the state
switch from RSO stopped to deinit if supplicant disabled roaming
flag is set and send RSO stop with roam scan mode value 0 to
firmware.
Change-Id: If50a306b6019320ddab2ac1695a57718d27f477a
CRs-Fixed: 2755948
Add new code to implement below functions for connection manager
roam part:
And below two RSO command related process:
ROAM_SCAN_OFFLOAD_STOP
ROAM_SCAN_OFFLOAD_UPDATE_CFG
Change-Id: I378b969ddae77fff49ad1d4d8ce21764b292e5ac
CRs-Fixed: 2753011
Declaring variable spectral_cb without initializer in
sme_register_spectral_cb, spectral_cb.vdev_get_chan_freq_seq2
will be used uninitialized.
To fix it, initialize spectral_cb when declaring.
CRs-Fixed: 2751599
Change-Id: I2c5cd5a85b54dcbda3059bfd528cd18626b6b316
Add NULL check for roam profile in csr roam sync callback as the
the session current profile can be freed in disconnect process.
Change-Id: Ia127cb9fb7a6185c0a57a2c28d72fb234087c7c8
CRs-Fixed: 2739817
Use ROAM_11KV_CTRL WMI vdev command to enable/disable the roaming
functionality in FW.
Change-Id: If3bb344ec7058d4149d0064975d7c91f213fd105
CRs-Fixed: 2727671
In WAPI conenction the check for WAPI authmode is missing.
And thus AKM filles in open mode leading to not seinding the WAPI
IE in assoc req and thus Assoc reject.
Fix by properly handling the WAPI case.
Change-Id: Ic7b7b7e5ffce46e30ade20395406287e1b5a5fce
CRs-Fixed: 2744415
Req has been freed in csr_roam_send_rso_cmd when post msg failed.
Avoid use after free and double free in csr_post_rso_stop.
Change-Id: I86e6360eed1a57d0bac218f799393fff0e2a4a58
CRs-Fixed: 2748399