After SAP switches the channel, policy manager needs to check if
the host needs to change HW mode. SAP state machine updates channel
change event to hdd to indicate SAP channel switch. Hence move logic
to change HW mode from start bss success event to channel change
event case in sap event callback.
Problem scenario:
1. DUT is in Single MAC mode by default.
2. SAP is up on Channel-1. So SAP is on MAC-0.
3. Host sets Policy Mgr Hw mode = DBS.
4. STA comes up on Channel-36. As host is in DBS mode, STA came up
on MAC-1.
5. SAP does CSA to Channel-36 (STA’s channel). So SAP moves from
MAC-1 to MAC-0.
6. Host sets Policy Mgr HW mode = Single MAC (As both VDEVs are on
same band).
7. Now, SAP does CSA to Channel-11. As Policy Manager Hw mode is still
Single MAC, SAP is still on MAC-0. So now STA (Channel-36) & SAP
(Channel-1) are in MAC-0 doing MCC.
Fix:
After SAP switches channel, policy manager checks and changes HW mode
change in hdd sap event callback.
Change-Id: If7964057592d85a11dd77197c889a4ed77ed039a
CRs-Fixed: 2719810
Currently idle timer does not gets de-initialize on tdls peer
reset because of which there could be a possibility that in
case of multiple tdls connection and disconnection with multiple
peers, this timer might get assigned and re-assigned to different
peers which may lead to an issue where this timer never gets
started for the required peer.
In current scenario whenever the first TDLS connection
(Peer a with sta_idx 0) happens, tdls peer idle timer object is
initialized with “&tdls_soc->tdls_conn_info[0];”.
Now if this peer a gets disconnected and peer b gets connected
and peer gets the same sta_idx 0, then peer will be associated
with timer “&tdls_soc->tdls_conn_info[0];”,hence 2 timer init
happens with the same sta_idx for peer a and peer b.
(here peer a is in disconnected state and peer b is in connected
state)
Now if peer a gets connected it will get the sta_idx 1, as timer
initialization is already done for peer a with sta index 0 so
timer initialization will not be done again.
Now if peer b gets disconnected it will set the tdls_info for
sta_idx 0 to invalid (INVALID_TDLS_PEER_INDEX).
Now for peer a timer will be started and when timer expires in
timer handler function “tdls_ct_idle_handler” will not be invoked
as sta_idx is already set to INVALID_TDLS_PEER_INDEX.
To address above issue, de-initialize the idle timer for tdls
peer on every tdls peer reset.
CRs-Fixed: 2746046
Change-Id: Icc2e64a9299852d5b29d26dec79b7f1efb2594b8
Add connection manager changes to send roam scan offload init
deinit. Add new enum roam_offload_init_flags to fill the roam
init/deinit flags, 4-way handshake offload, bmiss skip full scan
flags at connection manager instead of getting the ini and filling
at target if.
Change-Id: I558e868efd341b508d3df76c8d6ab90eac512432
CRs-Fixed: 2745585
In current implementation, vdev create command is sent to the FW from
vdevmgr_mlme_ext_post_hdl_create. By design vdev create command should
be sent to the firmware from vdevmgr_mlme_ext_hdl_create.
To align with the design, send vdev create command from
vdevmgr_mlme_ext_hdl_create.
Change-Id: I42203ae5c4f75388e520e7fc3bd9114dd3236492
CRs-Fixed: 2714533
Enhance BLM infra to include source,
reason for blacklist, original timeout,
received time for better debug.
Change-Id: Ia705a967a08412824063275f5073c338dabde539
CRs-Fixed: 2744402
Add changes to include new roam scan sub-reasons in host driver
roam logging and refactor few existing string.
Below are the new reasons:
WMI_ROAM_TRIGGER_SUB_REASON_LOW_RSSI_PERIODIC
WMI_ROAM_TRIGGER_SUB_REASON_INACTIVITY_TIMER_LOW_RSSI
WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER_AFTER_INACTIVITY_CU
WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER_AFTER_INACTIVITY_LOW_RSSI
WMI_ROAM_TRIGGER_SUB_REASON_INACTIVITY_TIMER_CU
Change-Id: I1aeb48d29561b48ac7b8762626fa0050f4fb9030
CRs-Fixed: 2742558
Print info related to WTC BTM roaming coming via
wmi_roam_trigger_reason_tlv_param.
Print timestamp, which indicates the time when btm response is sent
to AP, coming via wmi_roam_btm_response_info_tlv_param to HOST.
Change-Id: I2c408527739e1e2831015dd7b959ab17299abf6b
CRs-Fixed: 2740597
In scenarios where p2p is going to be the first connection,
while performing group negotiation, pass up the allowed non-pcl
channels with valid weight so that supplicant can include these
channels as well during negotiation.
Passing interface mode to policy_mgr_get_valid_chan_weights and
populating the channel list based on policy_mgr_is_concurrency_allowed
api for the given mode and assign WEIGHT_OF_NON_PCL_CHANNELS for all
allowed channels.
Change-Id: I8ff08163e6490642f9c2ebd9ca08f1275a2bb1b8
CRs-Fixed: 2734756
Change the usage of cfg parameters from Internal/External
to External in .h description for mlme, p2p, and
policy manager files.
External means that both internal teams and external
customers can modify the parameters.
Change-Id: Ic1e68d5a90be2c898ce66aa18e8d91f16561b408
CRs-Fixed: 2712773
- Limit the timeout value of the BLM entry if it has big comeback
value and allow connection to that BSSID.
- Fix the BLM entry time stamp boundary checks.
Change-Id: I07bf7b1fce1c1e8d349c4fc0a9b0fed07f237197
CRs-Fixed: 2741689
Mgmt txrx component clones skb and sends cloned
skb to its clients ex: packet capture component.
Need to Allocate memory and copy skb so that there
is enough space to copy radiotap header in skb for
packet capture mode.
Free skb cloned by Mgmt txrx component.
Change-Id: I6bc66b5916ec5a8cf28741e4fcb72f14650fdbfa
CRs-Fixed: 2730559
Deregistering packet capture callbacks can call while
processing mon thread which can lead to race condition.
To address this, deregister packet capture callbacks after
mon thread successfully processes its current packet.
Change-Id: I09640128a57ef6adac4e6a025cb81667e49b6e4c
CRs-Fixed: 2735587
In wlan_cm_roam_send_set_vdev_pcl(), pcl_req intially checked
for NULL can be dereferenced later.
Validate pcl_req and return error if pcl_req is NULL.
Change-Id: Iccc4e09c636d2643c319a1767bf8f673d6d36a80
CRs-Fixed: 2734082
Current implementation of external mode requires supplicant to
send tdls peer mac address. On matching of stats tdls implict
link procedure is trigger for configured peer.
Fix, to allow both configured peer and other peer that supports
tdls to establish the tdls link.
Change-Id: I8f65e6dcc9dec565623ac2d8d2c77e12570f8bfb
CRs-Fixed: 2733830
Currently, self recovery is being triggered when suspend/resume
timeout happens. The self recovery API will creates a work to
trigger recovery handler. But this work is not required if the
suspend/resume timeout happens due to FW down. In this case the
recovery will happen as part FW down indication and no need to
trigger recovery for suspend/resume timeout.
Change-Id: I75ea9f67efb21a3e9aaea99b53c256460ba696c5
CRs-Fixed: 2739385
Check the required security types allowed for 6GHz connection and
do not allow the connection if the secutiry check fails.
Change-Id: Ic680c4600b3f17151e42f8708ff8810e5d16e52e
CRs-Fixed: 2715086
Add new channel 177 to wiphy struct ieee80211_channel
hdd_etsi13_srd_ch and rename the struct to
hdd_5dot9_ghz_ch.
Add a new ini fcc_5dot9_ghz_chan_in_master_mode to
enable/disable new 5.9 GHz channels 169, 173 and 177
in master mode.
Change-Id: I68dc3be18277ca0e416a579327f406279458899e
CRs-Fixed: 2693707
To handle no-inter-band MCC scenarios for dual MAC non-DBS solutions,
add changes to detect capability at run-time based on service bits.
If the service is set then code for only intra-band MCC will be
exercised.
Change-Id: If62068f8f05c17278d279f36ec11bc9ca123dfbd
CRs-Fixed: 2730359
Currently, host driver sends NAN disable request to firmware and
firmware sends NAN disable indication as a response. Host driver
forwards this indication to framework. But when SSR happens,
driver needs to send this NAN disable indication to framework
as firmware lost the NAN context. This allows framework to
initiate NAN again. Send the NAN disable indication with success
status code to framework after recovery.
Change-Id: Ic2139e159f0c1d9c1fb5c39597ce18e0787e809b
CRs-Fixed: 2735047
The NAN configs gEnableNanSupport and genable_nan_datapath
are being removed from ini config file. So, enable them by
default in .h file.
Change-Id: Ibc1e91e6d010994b5e1419b2241f846e0fde8969
CRs-Fixed: 2710133
Reduce wow suspend/resume timeout to 4 seconds to accommodate
lower DPM WD timeout values. WoW suspend/resume timeout value
should be less than DPM WD timeout.
Change-Id: I481ae544de0d26b49bcc0f5c4d4a384693707a5b
CRs-Fixed: 2730955
Add macro ROAM_OFFLOAD_V1 for new code and implement below functions
for connection manager roam part:
csr_handle_roam_state_change() roam offload state related handler.
Filling WMI_ROAM_SCAN_RSSI_THRESHOLD cmd parameters related process.
Change-Id: I0351155ca5a3d68ade6568c7527c5708582ccf1a
CRs-Fixed: 2730826
FW sends a disconnect request to HOST while roaming failure
through event WMI_VDEV_DISCONNECT_EVENTID per vdev id.
Fix is:
1. Process WMI_VDEV_DISCONNECT_EVENTID and issue disconnection.
2. Make WMI_VDEV_DISCONNECT_EVENTID event as wakable
Change-Id: Ic1e83aace48a3e8424f23641b0e77c66f4283587
CRs-Fixed: 2731952
Currently if SSR happens and at the same time if driver gets
del virtual interface which is a vdev transition, it bloks
this vdev transition and queues into dsc queue assuming that
it will execute once SSR completes.
There is an issue with above assumption,
del virtual interface comes with rtnl lock held which may lead
for other processes to misbehave which are waiting for rtnl lock.
in current case kernel is waiting for rtnl lock to send
shutdown to driver as part of the SSR and this rtnl lock is held
by del virtual interface which is waiting inside dsc queue for
SSR to complete, this leads to the deadlock.
To address above issue, do not insert the vdev transintion in
dsc queue in case of SSR and return the failure instead.
Change-Id: I19c897d68086d885f340d35c686badb70601076a
CRs-Fixed: 2730903
Mgmt txrx component clones skb and sends cloned
skb to its clients ex: packet capture component.
Remove extra allocation of skb.
Change-Id: Ic130c13c9fcc52f250b52196b86c761d36a77ba2
CRs-Fixed: 2727370
While BSS are scored apply blacklist logic to remove
blacklist AP or move the avoid AP at the end.
Change-Id: Id5310ef53d31159104fd40af6670135bb1be4571
CRs-Fixed: 2725144
Userspace can configure different roam control params as
defined in qca_vendor_attr_roam_control through the roam subcmd
QCA_NL80211_VENDOR_SUBCMD_ROAM and the below attributes:
QCA_ATTR_ROAM_CONTROL_SCAN_FREQ_SCHEME
QCA_ATTR_ROAM_CONTROL_CONNECTED_RSSI_THRESHOLD
QCA_ATTR_ROAM_CONTROL_CANDIDATE_RSSI_THRESHOLD
QCA_ATTR_ROAM_CONTROL_USER_REASON
Send value of above attribute to fw through command
WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID for trigger
reason WMI_ROAM_TRIGGER_REASON_BTM_WTC.
Change-Id: I17502eebab56652192164144b7ebdadb32033117
CRs-Fixed: 2729119
The event WMI_ROAM_STATS_EVENTID is received after
every roam, once the roam synch complete is sent by the host.
This event contains details regarding the btm response.
This helps in debugging/understanding the scenario when roam
failure happens.
Print the info received related to btm rsp and roam initial
info into kmsg.
Change-Id: Icb2058eed5df3265018b3c53548d123f3a4faf4f
CRs-Fixed: 2728267
The band_capability field is used in other places to be
a bitmap over reg_wifi_band. Update the field in wma_tgt_cfg and
wlan_mlme_generic to take the same bitmap for consistency.
Update all references to these fields to expect a bitmap as well.
Change-Id: I8abd697e2fbe02b4eadd32f3027bef7408bac2a0
CRs-fixed: 2726710
Update calls from reg_get_curr_band to reg_get_band since
they provide the same functionality.
Update calls to reg_get_band to expect a bitmap since the API
has been updated.
Update getband driver command to convert the bitmap to the
old values. Also add the new vendor command getband.
Change-Id: I069489ebf4826f8f4bfcb974b74e4d0591d5b33f
CRs-fixed: 2726361
Currently, the mutex lock is acquired in the caller
functions before calling policy mgr api to check MCC.
Remove it and add the mutex lock within the policy
manager API instead.
Change-Id: I7be6081ed12c1882b808d3ca4e92392d175349e7
CRs-Fixed: 2732055
Introduce new INI sae_connect_retries to decide auth (initial connect
and roam auth) and connect retry for sae. MAX reties is capped to 2
and max for roam auth is 1.
Default is 0x49 i.e. 1 retry each.
Bits Retry Type
BIT[0:2] AUTH retries
BIT[3:5] Connection reties
BIT[6:8] ROAM AUTH retries
Change-Id: Idae86a7bdb32244c7f3a140b8591418b8238758a
CRs-Fixed: 2728458
Currently, policy mgr table entries correspond to NAN/NDI are
updated only if nan_dbs is supported. Update/access the
policy mgr table even when nan_conc_control is supported by host.
This allows the host to take care of NAN cuncurrencies through
policy mgr on the non-DBS platforms.
Process NAN enable request in host if nan_conc_control is
supported, which updates the NAN entry to policy mgr table.
Change-Id: Id6e58a9bfde6ceb66a8a0b33136880f75e36090f
CRs-Fixed: 2729995
Currently, non-dbs pcl tables don't have entries for
NAN/NDI when the target doesn't support DBS. Firmware takes care
of the NAN concurrencies in such targets.
But host has to take care of the NAN concurrencies when firmware
allows host to do so through WMI_SERVICE_NAN_DISABLE_SUPPORT.
So add entries in non-dbs pcl table to allow/block different
concurrencies in host.
Change-Id: I0c4c59065a2fbc3beae13b1217673e8290c1baa8
CRs-Fixed: 2729992
Currently, SAP has to be moved to NAN channel once NAN enable is
successful. The frequency is copied to a uint8_t variable but
it can't hold the frequency as the value would be more than 2412.
It was initially declared to hold channel number. Change the
variable to qdf_freq_t to hold the frequency.
Also, move the SAP to NAN 2.4GHz channel in non-DBS platforms.
Change-Id: I27186c3a5915db549336537702287ee67cdce011
CRs-Fixed: 2729991
When nan_sap and nan_disable are supported but nan_dbs is not
supported,
1. Allow SAP+NAN concurrency if force SCC is supported
2. Disable NAN if SAP comes up on a different band and force SCC is
not supported
3. Reject NAN enable if SAP is already on a different band and force SCC is
not supported
Change-Id: Ic53eedcda2e5b314f9be2a4bd913d5e63f6613a2
CRs-Fixed: 2729986
nan_disable_support is the firmware capability to allow host to
disable NAN. So that host can disable NAN in any unsupported
concurrencies. This was actually introduced to handle
NAN concurrencies. Rename the capability flag and corresponding
APIs across host driver to resemble the functionality.
Change-Id: I24805194fdb855040bcc518acc96459ee7cb5128
CRs-Fixed: 2729984
Add changes to handle transition to the 2 new states:
1. Roaming in progress: Switch to this state when roam
start notification is received from firmware.
2. Roam Synch in progress: Switch to this from RSO
STARTED state if roam synch indication event is received
from firmware. Change to this state is also allowed in
RSO STOPPED state if supplicant disabled roaming on that
vdev - to allow roam invoke to be processed.
Also query the state machine to get the roaming status instead
of using discrete flags at various layers. Clean the redundant
roaming in progress, roam synch related flags.
Change-Id: Ide20a30d9d8c20a96d8bba70367b51b8643cae09
CRs-Fixed: 2725443
Prevent wow if TDLS is started, allow wow if TDLS link disabled. This
feature is enabled only if lithium plaform isn't drv supported.
Change-Id: Ie66d62cb139fe9a1d292925a78f2dd861f16ef69
CRs-Fixed: 2716922
During NAN+TDLS case, when NAN is present dut is trying
to add TDLS peer and the ref is not released which results in
assert due to obj delete timeout.
Fix is to release the ref taken properly in default handing of
tdls serialization cmd and error handling.
Change-ID: Ie3e785f617d320dc88051bf6f22f8e291f120c14
CRs-Fixed: 2728865
During NAN+TDLS case, when NAN is present dut is trying
to add TDLS peer and the ref is not released which results in
assert due to obj delete timeout.
Fix is to release the ref taken properly in default handing of
tdls serialization cmd and error handling.
Change-ID: Ia1ff16fdde7f70e45b712d260c1eca372ceb947e
CRs-Fixed: 2727206
Currently, function mlme_is_freq_present_in_list calculates
index based on chanel frequency in a loop of num_freq.
But acs_weight array can hold NUM_CHANNELS number of values.
loop index more than NUM_CHANNELS may lead to OOB read issue.
Fix is to add a validation for loop index < NUM_CHANNELS to
avoid any OOB issue.
Change-Id: I3c1d3393cd2a40147c325fea8f76b1db1a51f457
CRs-Fixed: 2727312
Rename the existing roam offload states to include
WLAN_ prefix. Add 2 new states:
WLAN_ROAMING_IN_PROG - Roaming has started at firmware, this is
after candidate selection at firmware.
WLAN_ROAM_SYNCH_IN_PROG - State after handoff is complete at
firmware.
Also move the roam_offload_state enum to connection manager.
Change-Id: Ib1f38d200393849253893113172cdfc69e381fb3
CRs-Fixed: 2725387