Update offchannel frequency based on peer caps such as
1. If 6 GHz is supported then select the ini preferred 6 GHz channel
frequency if peer also supports the same channel.
2. If 6 GHz is supported and peer doesn't support the ini preffered
channel frequency then select the very first 6 GHz channel which
peer supports as preffered offchannel.
3. If peer doesn't support 6 GHz, then select ini preffered 5 GHz
off channel frequency, given that peer should also support it.
4. If peer doesn support 6 GHz and also doesn't support ini preferred
5 GHz offcahnnel, then select the very first 5 GHz channel it
supports.
Update preffered offchannel Bandwidth such as take minimum of peer
supported max bandwith which is extracted from supported opclass and
max Bw device supports.
Change-Id: I93412774f35280105b22d5ec44895572f9d7aeef
CRs-Fixed: 3266066
In STA+SAP concurrency, if the STA is connected in indoor
power, and if the country/channel supports VLP, then bringup
the SAP in VLP. Move the STA to VLP as well.
Restore the power of the STA, when the SAP is disconnected.
Add changes to:
a) Decide the power type for the concurrency during start bss,
stop bss, change channel request calls of the SAP interface.
b) Allow the 6 GHz SCC channel in ACS computation if the channel
supports VLP power or if the channel is indoor and enabled.
Change-Id: I151e2e3e8910a406bb5c1526f4f01715854d173f
CRs-Fixed: 3268100
Currently if SAP is up on 5 GHz DFS/non-DFS channel and country
change happens to world mode where SAP is not allowed on 5 GHz
channels then it moves to a 2.4 GHz channel and saves current
operating frequency band information, now again if a country
change happens SAP tries to move back to the first 5 GHz
active/passive channel.
Sap should come to active channel first. If not available then
it should come on DFS channel, but it shouldn't come up on
passive channel.
To address this issue, add a fix to filter out passive channels.
Change-Id: I32e8a81c2a5d9e785262edbeeef2c879c87f1302
CRs-Fixed: 3277965
For mlo AP, bssid in wmi_roam_synch_event_fixed_param of
WMI_ROAM_SYNCH_EVENT is AP MLD addr, when use it as link addr,
failed to register peer and set peer as connected, so all Tx
are not allowed including EAPOL.
Fix it by getting AP link addr and frequency of each link from
setup_links_param array of WMI_ROAM_SYNCH_EVENT.
Copy link info from roam sync event to connect response before notify
os_if roam complete, os_if will send link info from connect response
to wpa_supplicant, supplicant will use it to add MLO Link KDE(s) into
EAPOL-Key 2/4.
Change-Id: I87833784a4e0b9240725223069c55fb0db3bc88f
CRs-Fixed: 3277878
Hw mode change in progress is set after the set_hw_mode
command is queued in serialization. Its not reset in below
cases:
Active command timeout case, serialization command
cancelled case.
Before connect request is queued, if hw mode change is in
progress, there is 6 secs wait and if there is no hw mode
change response, connection failure. This causes subsequent
connection failures and there is no recovery.
Reset the wait for hw mode change event in serialization
command failure cases.
Change-Id: I716982f06198e9c3495685ddb158044778c4b1ff
CRs-Fixed: 3256424
There are two different name with different range of value for
aliasing INI's. So, it should pick the valid range of value wrt INI
name.
Change-Id: I36b578749567998980b300e5a8daf1acb201cddd
CRs-Fixed: 3269376
Currently rso enable for open and secure connection is handled
incorrectly.
For secure connection roaming should be enabled
after key exchange is complete.
For open connection rso enable is done twice.
Fix is for enabling roam offload for open and secure connection.
Change-Id: I0abde2a6001f176c97e4aa59947260a50c48e6cc
CRs-Fixed: 3271248
Currently if link specific probe response generation fails
STA keeps sending probe requests until proper probe response
is received or join timeout failure. This results in ML
connection failure
Change is to continue with single link ML connection if probe
response generation for link/s by clearing partner link information.
Change-Id: Ia969501a3bdd1ac70e14f3a0eafd0752207b66da
CRs-Fixed: 3238861
Currently, switch_to_rso_stop happens based on the
current state check and the expected state is
RSO_ENABLED/ROAMING_IN_PROGRESS/ROAM_SYNC_IN_PROGRESS.
The thread(e.g. user thread) that is sending rso_stop to
firmware might have got the expected state value when
it has read the state and proceeded with commands needed
to send to firmware. ROAM_SCAN_MODE is one of these commands
and firmware sends a response for the same. The response
gets processed in scheduler thread.
The expected sequence as per the current implementation is,
1. Check the current RSO state and proceed if it's any of
RSO_ENABLED/ROAMING_IN_PROGRESS/ROAM_SYNC_IN_PROGRESS.
2. Send all commands corresponds to switch_to_rso_stop to fw
3. Set the new state to RSO_STOPPED
4. In scheduler thread, get response for
ROAM_SCAN_MODE(one of the commands sent in step2) and
proceed from RSO state RSO_STOPPED
5. scheduler thread sets the state to DEINIT.
But the user thread may get suspended while sending commands
to firmware (step2) and may get resumed after step4. The new
sequence could be,
1. Check the current RSO state and proceed if it's any of
RSO_ENABLED/ROAMING_IN_PROGRESS/ROAM_SYNC_IN_PROGRESS.
2. Send some commands corresponds to switch_to_rso_stop and
thread gets suspended. Assume it has sent ROAM_SCAN_MODE.
3. In scheduler thread, get response for
ROAM_SCAN_MODE(one of the commands sent in step2) and
proceed from RSO state RSO_ENABLED.
4. As part of step-3, scheduler thread moves the state to
RSO_STOPPED and then to RSO_DEINIT.
5. User thread gets resumed and sets the new state
to RSO_STOPPED. This leaves the RSO state in invalid
state even after disconnect.
Set the state to RSO_STOPPED before sending any commands
to firmware. This is to ensure the state is not corrupted by
the scheduler thread.
Change-Id: I4d43508bdee2b33caba28579939fffdebfab121d
CRs-Fixed: 3278047
In SAP+GO concurrency, if move SAP to DFS channel (BW 160 MHz)
and cause MCC with GO, the target will do CAC on SAP, but target
doesn't support MCC with GO when SAP is CAC state.
Fix by checking correct BW of CSA target channel so that correct
DFS flag can be got and if target channel is DFS causing MCC
with other AP interface then reject CSA request.
Change-Id: Ic7821cf62d3b364e4d2ea052dc82d65d18054091
CRs-Fixed: 3275285
There are two different name with different range of value for
aliasing INI's. So, it should pick the valid range of value wrt INI
name.
Change-Id: I89a275500f1e1ad42f2cae534e9f67e1b9e3a4eb
CRs-Fixed: 3268673
Currently, host drivers drops NAN tx mgmt frames while transmitting
it to firmware as it is unable to find the peer for NAN and
also, random mac check is false because tx channel is not available
for NAN (kernel sends channel as null).
As peer does not exist for NAN, creates self peer while creating
vdev.
So, to fix this, add check for NAN iface to retrieve peer from vdev
mac address and use this peer in tx mgmt frames.
Change-Id: I8ef9e3502397a667841eb6e852ed5755049af44d
CRs-Fixed: 3275426
In case of single link mlo roaming, set both dp peer flags
is_first_link and is_primary_link to 1, then datapath will
create MLD peer.
Change-Id: I935c42b2c3eaa558028d45bdbf502007723f656c
CRs-Fixed: 3271224
SAE authentication frames during roaming should be cached and
printed after roam scan done print. This support is not present
in diag logging.
Enable SAE auth frame caching for diag logging.
Change-Id: I205bd2fd1c91253d1e6aaf3361857baf67ccd6fd
CRs-Fixed: 3254216
In certain concurrencies the total WOW patterns sent
to FW is exceeding the FW limit of five patterns which
can lead to ping failure as FW may drop the packet.
For STA mode ML adapter, send only the MLD MAC address
on which the data packet will be received.
Do not send ARP pattern in SAP/P2P-GO mode which is
sent with length zero.
On successful pattern delete request sent to FW,
decrement the default pattern count.
Change-Id: Ib45cf797a4bc3c6fbc23a2a95e877d7d8af34629
CRs-Fixed: 3257348
Add a flag to indicate assoc req is used for this roaming,
don't treat assoc req as reassoc req.
Change-Id: I3a13985b6b173892fbe281668d07f7179d1c364c
CRs-Fixed: 3274314
CH_WIDTH_320MHZ definition is in 11BE define currently and it's
causing duplicate code in 11BE supported/unsupported cases.
Definition need not be in 11BE define as it doesn't cause any
impact on memory.
Change-Id: I9fa391474f513755000368cc2e41e004446353d0
CRs-Fixed: 3246578
Fill param 'timeout' for WMI_WOW_COAP_ADD_KEEPALIVE_PATTERN_CMDID,
which represents the period to send CoAP keepalive message.
Change-Id: I86b87470277eee00de9e33a07e635dd1a5412f3d
CRs-Fixed: 3275955
Currently at multiple places there is no
NULL check for return value which might
result in NULL pointer dereference.
Add NULL check for return value to avoid any
NULL pointer dereference.
Change-Id: I986a48d9649b67cb5a078ec38eea64da4ef9244e
CRs-Fixed: 3273489
Currently as long as STA connection is present on DFS channel, host
driver doesn't trim 5 GHz channel lists even if there has SAP on DFS
channel. But for DBS capability chips, like Hasting, when DFS SAP is
present, it's still not allowed to do scan even if STA DFS connection
is available. If don't trim 5 GHz channel lists, the result is that
FW will return cancelled status for the last scan event of the DFS
BSS channel. So host driver would return aborted status even if 2.4
GHz channels can be normally scanned and upper layer cannot get any
scan results.
Change-Id: I885dbccd9beb8bc1c4956c89d90d33cda2bc301d
CRs-Fixed: 3274000
Since TDLS and STA share a common netdev interface,
when STA connection is made in 11a, 11b, 11g mode,
netdev parameters such as TSO/checksum are disabled.
If TDLS connection is formed over this Station,
TSO remains disabled as STA netdev is used.
This might result in loss of throughput when TDLS
connection is made with 11n, 11ac, 11ax dot11mode and
with wider bandwidth TDLS, this loss is more prominent.
Hence, overwrite the netdev params to enable TSO when
TDLS connection is formed in 11ax, 11ac, 11n mode if
the station is in 11a, 11b, 11g mode.
Also, disable the TSO params when TDLS tearsdown when
STA is in 11a, 11b, 11g mode.
Change-Id: I80deaef40d70030211e75a63e1339b1407627b52
CRs-Fixed: 3245258
Prensently for initial scan and roam passive scan dwell time,
the same ini CFG_PASSIVE_MAX_CHANNEL_TIME is used. This will
cause initial scan to have the roam passive scan value.
Decouple passive scan and roam passive scan ini parameter by
adding new ini param for roaming
Change-Id: I4b37c8faa26c971f173e8c8179e505ea4c69c27e
CRs-Fixed: 3268789
In case of failure policy_mgr_is_restart_sap_required
returns without releasing the lock. This leads to lock leak.
Fix is to release the lock before return in case of failure.
Change-Id: I032a6902de1bd0c8f87b660aac98a2fb08dd3f10
CRs-Fixed: 3269538
Reinitialize mon_register_event before wait_for_completion
to make sure that it waits for fresh completion.
"done" variable in struct completion increments in
complete() API and decrements in wait_for_completion() API.
In wait_for_completion() API, if "done" value is 0 then
it will wait for the completion else it will continue without
waiting.
If reinitialization is not done, there is a possibility that
wait_for_completion() may continue without waiting.
Change-Id: I780103f551938438f27a11b006cc7c3e6edc6820
CRs-Fixed: 3251876
On some projects, LFR3 roaming is not supported due to
limitation of FW memory, thus, add support for WPA3 LFR2
roaming.
Change-Id: I80888049a243c0d37e08377d89a6aa44e75a8850
CRs-Fixed: 2973554
If policy_mgr_is_concurrency_allowed is false, don't set
weighed_valid_list = WEIGHT_OF_NON_PCL_CHANNELS. Keep
WEIGHT_OF_DISALLOWED_CHANNELS for them so that the interface
won't start on disallowed channel. And in P2P+P2P or SAP+P2P
case strictly follow PCL weightage for second P2P interface.
Change-Id: I005e680e796269d3cd847b5df460506813d0d033
CRs-Fixed: 3265478
In GO+STA+SAP concurrency, if GO is MCC with STA, the new SAP
will not be allowed in same MAC. FW doesn't support MCC in same
MAC for 3 or more vdevs. Move GO to other band to avoid SAP
starting failed.
Change-Id: Ia19abd1b11f7416797af3e975ab8ffde9037c11f
CRs-Fixed: 3262185
If SAP+P2P GO SCC on 2.4 GHz, the new STA interface will be
allowed connect to AP on 2.4 GHz SCC channel of SAP/GO or
5/6 GHz band AP. And do same for 5 GHz band.
For 3rd SAP/P2P GO coming up, try to force SCC to
existing same band SAP/GO home channel if any, to avoid the
concurrency check failure.
Change-Id: I363e9c8307ac4cfa70d6d00bc0d01a545c3eca26
CRs-Fixed: 3249205
Add concurrency conditions to reject TDLS setup if
along with BSS STA, any other iface is in connected state.
In case where supplicant directly sends TDLS setup without
adding peer or Discovery been rejected because of
concurrency, driver adds the peer and update fw with the
same using UPDATE_TDLS_PEER_STATE command. This results
in fw crash as TDLS state is not yet set.
This check is required because setp_peer shouldn't be
processed if any other interface such as SAP, P2P already
have started otherwise it will result in FW crash.
Change-Id: Ia0f1f099a5fb5be0c4875a38842d97070964aaa0
CRs-Fixed: 3263513
Currently channel info stats are stored in LIM. Refactor
code to store channel info stats in cp stats component.
Change-Id: I2e7219c112e96916d3b73f974dd9803b9c2821c3
CRs-Fixed: 3265722
Previously when chains of BT and WLAN 2.4 GHz are separated,
hybrid mode will be used for BTC. Now adding fixed FDD mode
to fulfill different BTC scenarios.
Change-Id: I3a4d6919319f0f66e6b816566f24f4ac11b2c669
CRs-Fixed: 3244045
Update the Min and Max value for gNeighborLookupThreshold
/RoamRSSI_Trigger INI as per customer requirement.
Change-Id: I5af4552cd805b57861121a32704f4fe1e98a7002
CRs-Fixed: 3245135
Add component for the Constrained Application Protocol.
This component provides interfaces to enable/disable
offload reply/periodic transmitting for CoAP messages,
and also the interface for fetching CoAP messages those
been cached during offload processing.
Change-Id: I91397f598c2702a63e250d50641352d13117777e
CRs-Fixed: 3254535
Currently net dev stats are handled using QDF MACROS which is not
ideal approach. So modified it to OS agnostic inline API's for
handling net dev stats.
Change-Id: I1739779c4fa7699e867b9aa75aff48546b7754ac
CRs-Fixed: 3250935
Add ACS band check for indoor STA+SAP force SCC logic.
If SAP ACS band only support 2.4 GHz channels, do not move
to 5 GHz STA indoor channel for SCC.
Change-Id: I330dee9c35d2955cedc2b802a5bfb4d13ecb5d4c
CRs-Fixed: 3263428
There are two different name with different range of value for
aliasing INI's. So, it should pick the valid range of value wrt INI
name.
Change-Id: Ia0ea4ebc6b1f96b38243c4e0693e47be99868953
CRs-Fixed: 3258760
Currently vdev up status check is wrong
Handle the return status of vdev up properly
Change-Id: I9dbe226d572295038256d5ac42400a4063f358f8
CRs-Fixed: 3265590
When STA+SAP is operating in indoor channels, mandatory
channel list is added to the supported channel list of the
seconday interface.
But the API is common even for SAP+SAP and fails to detect
interfering channels in case of SAP+SAP due to this.
So, limit the mandatory channel list consideration only
for STA+SAP.
Change-Id: If7063e81d0daa9ef86b8af71ba517756f96edb32
CRs-Fixed: 3245034
In whitelist roaming, the roam offload event is sent
for an BSSID with different SSID, however host driver
copies the connected bssid in the external auth event
to the userspace. This leads to preauth failure.
Cache the ssid from the beacon received as part of the
roam frame event before every roam auth offload event
and use that ssid for external auth events to userspace.
Change-Id: I634992baf0c98054897707aaf3b1265e17d46f04
CRs-Fixed: 3262859
Add ucfg APIs to set/get feature status and dscp
values and structure to store values
Change-Id: I839c89696581b8aefd873a120d938a5cbbc32899
CRs-Fixed: 3255692
Reorder the BTM logging according to the below
scenarios:
Scenario 1: Roaming to AP2 and BTM query is sent to AP2.
1. Connected to AP1.
2. <Low RSSI> triggered roam to AP2. Successful roam to AP2.
==== Roam stats event 1 with full TLV case with AP1
(scan_type == partial, roam_trigger = low rssi) ====
3. BTM query to AP2 after 1sec.
4. BTM req from AP2
5. BTM resp to AP2
==== Roam stats event 2 with full TLV case having AP2 BTM info
(scan_type ==NO_SCAN, roam_trigger = BTM) ====
Scenario 2: Connected to AP1, send BTM query to AP1
==== Roam stats event 1 with full TLV case having AP1 BTM info
(scan_type ==NO_SCAN, roam_trigger = BTM) ====
Scenario 3: BTM request initiated by the AP
1. Connected to AP1.
2. AP1 sends BTM request with disassoc imminent set.
3. Roam scan is triggered.
4. BTM response to AP1
5. Roam to AP2.
==== Roam stats event 1 with full TLV case having AP1 BTM info
(scan_type = full or partial, roam_trigger = BTM) ====
6. Send BTM query to roamed AP2.
7. AP2 sends BTM req.
8. Send BTM resp to AP2
==== Roam stats event 2 with full TLV case having AP2 BTM info
(scan_type=NO_SCAN, roam_trigger = BTM) ====
Change-Id: I4571cbe75397fb795046abe8711571264ed98a65
CRs-Fixed: 3260060
In the api cm_roam_mgmt_frame_event(), TX status is sent
without conversion to the userspace resulting in
wrong value of tx status during logging.
Correct this by converting the tx status value before
sending to userspace in order for userspace to properly
evaluate the tx status.
Change-Id: Ie4b6b8bff5e8b9c88edfaf303ce6a4ae370edd67
CRs-Fixed: 3250473
Currently host starts the start_rso_stop_timer when it sends roam
stop related commands to firmware. And tries to stop the timer when
it receives roam event with reason ROAM_REASON_RSO_STATUS or
ROAM_REASON_HO_FAILED. Since firmware also sends roam event with
above reasons when host configs other roam parameters. This causes
host confused about whether to stop the timer or not.
To resolve this issue, add one more condition
roam_event->notif_params == WMI_ROAM_SCAN_MODE_NONE
Change-Id: Ia24d5bba1e35bc4102951adcafc76edda7769d35
CRs-Fixed: 3267506
Add support to populate MLO assoc request with EMLSR
subfields like EMLSR padding delay, transition delay that
are extracted from FW during ext service ready event.
Change-Id: Id5def8da6bef92ff6bf2101a7b3e0d8fb0cf3050
CRs-Fixed: 3262939
This reverts Change-Id: Id1f5172a7fc1792c83c8c1c20127de815f7e4980
to avoid deadlock between cnss_pm_notify and unregister_pm_notifier
during soft driver unload.
Change-Id: Ic82db9dc0ca9d6686df99926335af27abc61cdb5
CRs-Fixed: 3266366