In arch 32 platform, the size of rnr_chan_info is 8 bytes, and it only
allocates 4 bytes for each of them. Which cause memory access out of
bounds.
Change-Id: I4f1798c5354c6a76e32bdfed13ade9667465b789
CRs-Fixed: 2827289
The regulatory structure which contains country and regulatory domain,
needs to be expanded to include 6Ghz superdomain.
Make changes in the regulatory component to send the 6G super domain
set by the user, to the target.
Change-Id: I84b96cd74012e33d464d98675158c9cd5eabff4e
CRs-Fixed: 2802131
WLAN_OBJMGR_TRACE is not needed. Ref id trace func is under
control of WLAN_OBJMGR_REF_ID_TRACE. Replace it by
WLAN_OBJMGR_REF_ID_TRACE.
Change-Id: I8877dad0a4f7c13258b2c9bf63dcafb46e5b8b94
CRs-Fixed: 2826259
As per table E-4 in Annex E, in the 11ax Draft 8.0, add the 5.9GHz
channels to the global_op_class table in the regulatory component.
Change-Id: I69225e5cae813d470ebaf2768e58672276f6bd2f
CRs-Fixed: 2823487
Add change to support mlme ops to enable enqueuing stop-start
cmd to serialization queue when CSA is triggered for a DFS channel.
Change-Id: I9f2dca3bc4ccfe40bd40c7e04b3ce035df56d19d
CRs-Fixed: 2825760
In current code logic, in case of channel utilization value less
than 3, the congestion value treated as “not present” and give
it a medium score. This will cause a very clean channel get a medium
score.
To fix the issue, need calculated congestion score from 1-100 and
not 0-100.
Change-Id: I6abb257e8298e4db3104fdc20351bbadaa7c2ec5
CRs-Fixed: 2812978
Scan entry fails if any coruppted IEs are present
Introduced new ini parameters to enable scan based on ie
corruption. If ini parameter is enable then scan module skips
all IEs following coruppted IEs and adds scan entry without
completely dropping the frame. Otherwise if ini parameter is
disable then scan entry fails on corrupted ie.
Change-Id: If17b68448dd3e6ac3e98ed854ed67d7f16d9dff7
CRs-Fixed: 2806932
Fix MBSSID IE pasring by properly incrementing offsets while
pasing the IE.
Copy ext IEs also in final iteration.
Minor code readability changes done along with the above fixes.
Change-Id: I3aaf5dd440b48c4229ddefc37f75703fc58ba994
CRs-Fixed: 2814732
Add new API to check if frequency is passive or not. The API checks
the channel flag against REGULATORY_CHAN_NO_IR.
Change-Id: I166a7a79517f81c23ff933d2657ef3f4c551c082
CRs-fixed: 2822205
On completion of connect/disconnect request, the command is removed from
serialization queue. If there if any connect or disconnect request in
serialization pending queue for the same vdev, the command is moved from
pending to active queue in the same context.
All this operation happens under CM SM lock. As part of activation of
next command, the CM tries to acquire same lock to dispatch even to
connection SM. As a result, deadlock is observed.
Add fix to Activate connect/disconnect from serialization pending queue
via deferred context using scheduler
Change-Id: I7f2873ab6d2a639b55ccc54e37463a892d9aae94
CRs-fixed: 2820539
After clear nol channel, the number of nol channel is 0. We should update
this information to platform.
Change-Id: Ia39be9a2c53067629460ead6000c2661ead07f63
CRs-Fixed: 2818936
When 5G open mode AP and 2G WEP mode AP use same ssid, and WEP mode AP is
selected to connect on UI, 5G open mode AP will be candidate in driver
too for wrong security filter(WLAN_CRYPTO_CIPHER_NONE is supported by
default, WEP match isn't checked at all for open AP).
Since 5G is preferred, 5G open mode AP is selected and connected at last,
peer is set as authenticated without waiting for key install.
But WEP mode AP is assumed connected in wpa supplicant, so WEP key is sent
to driver and F/W later. If peer is set as authenticated before PTK is
installed, data may be sent without encryption, so F/W add assert for such
order.
To fix this issue, when reset cipher and auth set in vdev, don't keep
WLAN_CRYPTO_CIPHER_NONE and WLAN_CRYPTO_AUTH_OPEN, just set to 0,
all cipher and auth set should be get from connect request,
scm_check_wep can be called for open mode AP in scm_is_security_match,
when only WEP cipher is set in filter, open mode AP won't be selected.
Change-Id: I48f9e74d0e8e31e789f33d038b11614d6b2ee6d0
CRs-Fixed: 2820129
Add reg_rx_ops for wlan_reg_is_range_overlap_6g, to use the API
outside the umac.ko module.
Change-Id: Iac64d9f15d5d5bed00b2656571dfba34e9933bc4
CRs-Fixed: 2818160
Add a static inline definition for wlan_reg_is_range_overlap_6g
when CONFIG_BAND_6GHZ is disabled, to fix the compilation error, that
is seen when CONFIG_BAND_6GHZ is disabled.
Change-Id: I26cf77c029d7d27887c242a1c7c300219c125256
CRs-Fixed: 2817943
Add logic to
- Check if connect req freq is 6Ghz and security
is not allowed for 6Ghz, reject connect.
- Ignore 6Ghz APs if connect req security is invalid
for 6Ghz
Also added user config key_mgmt_mask_6ghz mask
to allow specific AKMs, by default all are allowed.
Add added user config check_6Ghz_security to enable
security checks as per spec.
Change-Id: I37518731faa4de67a49853e5ac544efa3b3ce1d6
CRs-Fixed: 2813013
This change fixed compilation error about implicit-fallthrough and
pointer to in cast.
Change-Id: Iea2c25d97d8a039ed0f8083078427a8f8de70cd1
CRs-Fixed: 2814658
Currently the driver does not have a support to
filter out the 6ghz frequencies from the valid freq
list, and hence there is a high chance of selecting
the 6ghz freq as an operating freq for SAP, which
the legacy clients won't be able to scan.
Fix is to add a support for filtering out the 6ghz
frequencies from the valid freq list.
Change-Id: I8e3552a254e2b79cc1fc09da3e1e06ac378cbb07
CRs-Fixed: 2801414
As part of activaiton of serialization command from pending to
active queue, the lock is released. In the activation API, the
same API to move non scan cmds from pending to active queue can
be called if activation fails. This reentrant API may modify the
pending queue even before the control is given back to the caller
API leading to random behavior when accesing the next cmd from pending
queue via local variables.
Add fix to update queue size from pending queue after command activation
Change-Id: I8082e2a9dd3410369967ab20196853ddfa0639a7
CRs-Fixed: 2801956
While getting the bonded channels during radar, if preCAC timer
is running, we use the zeroCAC frequency as the secondary frequency.
Consider a device with agile DFS enabled and the home channel as
160MHz/80P80MHz. If radar is injected on the secondary segment of
the home channel, since agile preCAC is running, the zeroCAC frequency
is considered as the secondary center. This results in wrong
channels being added to NOL/failure (depending on the zeroCAC channels).
Use the zeroCAC frequency as secondary segment center during radar,
only if legacy preCAC is enabled.
Change-Id: I9a99b1c9968e622ffe55c662fd21586cfc587281
While checking for the radar source, the status of preCAC timer
is used to check if rolling CAC is active or not.
However, rolling CAC uses a different timer which results in
radar during rolling CAC to be treated as radar in home channel.
Check for preCAC timer only if agile preCAC is enabled.
CRs-Fixed: 2811313
Change-Id: I1f41e4fb83213abb8fd93531174063fad339f3b7
In concurrent mode active scan, both active and passive scan dwell
time should be updated. Because FW will use passive scan dwell for
DFS channel scan. If it still is default value 110ms, DFS channel
scan will spend much time. AP KPI will drop much.
So, for active scan, update passive and active scan dwell together
in concurrent mode.
Change-Id: I9ceb4ece6da2a794fff3b87c7be3214a9dbc46ab
CRs-Fixed: 2790910
Add change to enable bssid hint scoring for candidate selection in
connection manager.
Change-Id: I40a120781c93bf8fb09ec9591a94ee1484bb1a0c
CRs-Fixed: 2801397
While removing command from serialization, it is possible
that with the last command removal of a vdev,
the vdev could be deleted and before attempting the
movement of command from pending vdev queue to active queue,
we need check if the serialization vdev object is valid.
Add a check to ensure that serialization vdev object is
valid before trying to move command from pending to active
for a vdev.
CRs-Fixed: 2807736
Change-Id: Iea6df72eeeb62b7868f30337e7da99039df8b23a
Interface manager is not using the psoc private
object structure. Remove the allocate and attach code
in psoc create and destroy code.
Change-Id: I9450052345769ef6627d76731b2b51b5414bd146
CRs-Fixed: 2811077
Currently WLAN_UMAC_COMP_IF_MGR is deregistered during
initialization of WLAN_UMAC_COMP_IF_MGR . During deinitalization
wlan_if_mgr_deinit tries to unregister WLAN_UMAC_COMP_IF_MGR which
may introduce errorneous behaviour as WLAN_UMAC_COMP_IF_MGR is already
unregistered.
Fix is not to unregister WLAN_UMAC_COMP_IF_MGR during initialization.
Change-Id: I0ee117b9fa7b48df8a5edb4217971553dc1c4a49
CRs-Fixed: 2802673
6g sorting APIs scm_sort_6ghz_channel_list and scm_add_rnr_info
are under define FEATURE_6G_SCAN_CHAN_SORT_ALGO. This is not
enabled for WIN platforms, which results in compilation error.
Also, allocate memory to hold tmp_list_count no.of 6g channels
rrm info instead of MAX_6GHZ_CHANNEL.
Also, do duty cycle scan in connected state as well. Full scan
including 6g PSC and non-PSC channels in connected state would
take lot of time. So, it's better to do duty cycle scan in
connected state as well.
Change-Id: I6e2622c49012237929c5e952c32d44c087851928
CRs-Fixed: 2810923
Below optimizations can help to improve 6g scan,
1. RNR-only: Consider only 6g RNR(PSC and non-PSC) channels found
while scanning 2g and 5g bands, as the 6g APs are likely to
present in RNR channels.
2. Duty cycle: There is a chance to miss the standalone 6g APs as
they don't advertise RNR IEs. So, instead of optimizing all
scan requests, we can consider to do a full scan with duty
cycle(n) where optimization is skipped for every nth full scan.
The full scan requests 1 to n-1 are going to be optimized as
per RNR-only policy.
Driver shall maintain a scan count to track the full scans and
decides whether to optimize the scan (scan count 1 to n-1) or
send it as it is(scan count n) to firmware.
Change-Id: I35b31e900b74dbcd7791f4c2fcfe87b3c629758b
CRs-Fixed: 2806409
Add the below values to scan_mode_6ghz enum,
1. SCAN_MODE_6G_RNR_ONLY: Scan the channels (PSC and non-PSC)
found in RNR-IEs while scanning 2g and 5g bands. Host fills
all PSC and non-PSC channels in the scan request and set the
flag FLAG_SCAN_ONLY_IF_RNR_FOUND for each channel.
2. SCAN_MODE_6G_PSC_DUTY_CYCLE: Scan the complete PSC channel
list for every duty cycle. For every duty cycle scan, host
fills all 6g channels and sets the flag
FLAG_SCAN_ONLY_IF_RNR_FOUND only for non-PSC channels. Rest
of the scans will be done only on RNR channels(PSC and non-PSC).
3. SCAN_MODE_6G_ALL_DUTY_CYCLE: Scan the complete 6g(PSC and
non-PSC) channel list for every duty cycle. For every duty
cycle scan, host fills all 6g channels and doesn't set
the flag FLAG_SCAN_ONLY_IF_RNR_FOUND for any 6g
channel(PSC/non-PSC). Rest of the scans will be done only
on RNR(PSC/non-PSC) channels.
Change the default ini value to PSC_DUTY_CYCLE.
Change-Id: I73bc08d973bd57dbe2ba6644c3842da9ce850cec
CRs-Fixed: 2806406
Firmware advertises the service capability bit
WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL when it supports per channel
scan config flags. Get this and cache in psoc.
If firmware supports WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL, it uses
the upper-12 bits(bit-20 to bit 32) of channel_list for flags and
lower 20-bits(bit-0 to bit-19) for frequency. If firmware doesn't
support it, then channel_list holds the frequency value only.
Fill the flags and frequency accordingly.
Change-Id: I88a6f29f61e1ecea75bc5574cadcbbfbb7f8b188
CRs-Fixed: 2806405
Introduce scan_mode_6ghz_duty_cycle ini parameter.
It disables full scan optimization after every default value
provided in ini and forward scan request as it is to firmware
without optimization.
Change-Id: I68c1f79432ae646157be94241a779af8189c3c8c
CRs-Fixed: 2801797
Userspace/framework tracks last few days(e.g: 10 days) history of
connected APs and maintains best 10 channels out of that list by
considering multiple parameters like scoring, location etc.
It's likely to find an AP in one of these channels when a scan issued.
So, framework issues first scan request with a maximum of 10 channels
in the below cases currently,
1. When the wifi is turned on
2. When the wifi is in disconnected state and user turns on the screen.
Host driver shouldn't add any more channels to this scan request as
it's expected to complete the scan as soon as possible to connect
quickly to the known APs. Don't add 6g RNR channels also in the
scan request.
Further scans from framework would be full scans or with list a
of channels(more than 10) and RNR channels can be added to them.
Also, don't add all 6g channels if userspace hasn't given any as
the current framework/kernels are matured enough decide whether to
issue scan with 6g channels or not. RNR channels can be added as
mentioned. Remove SCAN_MODE_6G_NO_OPERATION as it's not needed
anymore with this.
Also, 6ghz scan functionality gets enahanced depending on various
requirements. This can be moved to a separate file so that core
scan_manager.c file won't be bloated with new code.
Change-Id: I1800a3e95e438720f94d8eec3544023cab16b081
CRs-Fixed: 2805900
There are some fils related compilation issues, add a fix
to resolve these compilation issues.
Change-Id: Ia8fc03885a42447a2f13a58840f3c5174c485bcc
CRs-Fixed: 2811623
There is a possibility that driver already has a vdev
with the mac address same as bssid, in this case sta
should not connect to this AP as it may lead to undefined
behavior.
To address above issue add a check to compare bssid with
already existing vdevs before connect start.
Along with above changes add few renaming changes also.
Change-Id: Ia12be0b392a01bf935b5261e505290064de68805
CRs-Fixed: 2809147
Release the spinlock which was taken to get a reference to the
oldest node in the scan database.
CRs-Fixed: 2811548
Change-Id: I7d274e80575774bb1b41732b20f170c3f1f2dc60
If ini vendor_roam_score_algorithm=1, for initial connect, select
candidate by estimated throughput(ETP). Calculate ETP of all
bssid of ssid selected by high layer, and try to connect AP by
order of ETP, legacy algorithm with following Parameters/Weightage
becomes useless. ETP should be [1Mbps, 20000Mbps],matches score
range: [1, 20000].
Add 11ax support besides 11ac/11abgn.
Change-Id: I3f55d2ae37801128b8a66f6d5c2ac55cb11a56d0
CRs-Fixed: 2704154
Fix below build error when feature WLAN_OBJMGR_REF_ID_TRACE
enabled:
1: "line_node" may be used without initialized in function
wlan_objmgr_trace_check_line. Fix by linking new
line node to link_head.
2: Use "peer_obj" to print trace info of peer object.
The "vdev_obj" is invalid when object type is WLAN_PEER_OP.
Change-Id: I067704976bb8d2dd11873af96fa4778adce7901b
CRs-Fixed: 2802642
Locks must be taken before accessing scan_db nodes to ensure
reference counts are not changed while changing entries within
the node or while freeing the node.
Ensure that a spinlock is used before increasing the reference
count to make sure that there is no other execution context
accessing the scan_db.
CRs-Fixed: 2791279
Change-Id: I4402ff15de7c8d4fc31009f7307ba262b4df6702
With bandwidth reduction enabled, when radar is detected during
80p80MHz operation, if the primary segment is unaffected, the
next expected BW for the device is 80MHz. However, the API
reg_set_channel_params has the following bw precedence list:
80P80 -> 160 -> 80 -> 40 -> 20 MHz.
This is valid in normal channel change cases but when used for
the bandwidth reduction feature, 80P80MHz should be considered
same as 160MHz and the next bandwidth (to be checked) should be
80MHz.
Update the channel width in the channel params to 80MHz if
the current channel is 80P80MHz and call the regulatory API
to check channel availability with the updated params.
CRs-Fixed: 2805939
Change-Id: I4337a3a797d1c4b0ef19e47d0933d4dd292733b5
Condition 4.9 GHz channels under a macro CONFIG_49GHZ_CHAN
since only WIN uses these channels and not MCC.
This reduces kmalloc memory allocation in regulatory
component.
Change-Id: Ie9241dd68909f68fa70012b664c7bc7cf050c1a5
CRs-Fixed: 2766046
Move disconnect wait logic from osif to connection mgr, so that
MLO/IF manager can use the wait logic for disconnect
during vdev delete.
Change-Id: Ied2bbcfd6a532209f8008499424f94acc41efc0e
CRs-Fixed: 2800990
If a connect req fails before serialization, with a disconnect req
Already queued. Indicating the failed connect req and moving
the SM to INIT state will lead to a invalid disconnected state
Even when, disconnect is in progress.
Thus in this case wait for disconnect to complete before indicating
connect failure and moving SM to INIT state.
Change-Id: Ib25ed43276410cd3e1bb717f64742d691bb17568
CRs-Fixed: 2802137