1. Host receives QCA_NL80211_VENDOR_SUBCMD_MLO_LINK_STATE
vendor command.
2. parse the new attribute
QCA_WLAN_VENDOR_ATTR_LINK_STATE_MIXED_MODE_ACTIVE_NUM_LINKS
and get the number of MLO links to operate in the active state.
3. If any of the links is in an inactive state due to concurrency,
we need to reject the request.
4. Host sends to FW via WMI command WMI_MLO_LINK_SET_ACTIVE_CMDID via
the below WMI attributes with mode WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM
and set the wmi flag control_flags to indicate if FW need to use
force link number instead of force link bitmap.
Change-Id: I91759e6a1273d393f4bef1264478950416752355
CRs-Fixed: 3529489
Currently, during scanning, while parsing the received beacons,
the beacon IEs are checked to verify whether the channel
present in the beacon is invalid. If the channel is found to be
invalid, the corresponding beacons are dropped. This check treats
the channels in the NOL list as invalid channels.
Consider a case of a repeater with RCSA enabled; when the RE
detects a radar, the RE adds the radar detected channels to
NOL and sends an RCSA action frame to the Root AP to intimate
the Root about the radar detection. The RE will also wait for the
Root to send CSA to RE. But in this case, the RE will not parse
the CSA IE received from the Root, as the beacons from the Root
AP are dropped, as the channel present in the beacon is
considered invalid.
The purpose of the channel validity check in the beacon parsing is
to avoid receiving beacons from an invalid channel, that is, the
channels that are not supported by the device. Since NOL channels
are valid, we can parse the beacons received from an NOL channel.
Therefore, to fix this issue, use the regulatory API
'wlan_reg_is_freq_enabled' instead of the API
'wlan_reg_is_disable_for_pwrmode' to check if the channel is
invalid.
The API 'wlan_reg_is_freq_enabled' treats NOL channels as valid
channels.
Change-Id: Iad502363c0ad15be2a009480c49bffcf8e004943
CRs-Fixed: 3513560
ACS fetches EIRP powers of channels from the regulatory module using API
wlan_reg_get_eirp_pwr. The type returned by this API is unsigned and
hence any negative value is received as very high positive value. This
results in incorrect calculation of puncture bitmap and any other APIs
that use these power values.
To resolve this issue, modify the data type of EIRP and PSD variables
from uint to int in APIs used for calculating the best power mode.
Change-Id: I3af8e8bcda7cb872f8e295a78c579243a5469ab5
CRs-Fixed: 3515926
In current scenario during OWE roaming when HB failure occurs,
it should clean copied reassoc response and roaming info. But it
is not getting freed which leads to memory leak and host driver
crash while on idle shutdown.
Free copied reassoc response at mlo_dev_ctx_deinit().
Change-Id: I1a25e4ad1ba62d3d6b90da38cb5b7ab7c3f8e91a
CRs-Fixed: 3530058
dp_htt_process_smu_ppdu_stats_tlv API is defined inside
QCA_ENHANCED_STATS_SUPPORT along with WLAN_FEATURE_PKT_CAPTURE_V2
protection but API is called with WLAN_FEATURE_PKT_CAPTURE_V2.
There is a compilation error
a. if WLAN_FEATURE_PKT_CAPTURE_V2 is defined and if
QCA_ENHANCED_STATS_SUPPORT is not set.
b. if REMOVE_PKT_LOG and WLAN_FEATURE_PKT_CAPTURE_V2 is set.
This change is to move dp_htt_process_smu_ppdu_stats_tlv
out of QCA_ENHANCED_STATS_SUPPORT and add WLAN_FEATURE_PKT_CAPTURE_V2
protection to avoid compilation errors.
Change-Id: I50093ede0530afa34f501210e5a53fa88e61d863
CRs-Fixed: 3528736
Add wmi pdev param support for long range phy param like cts timeout
slot time etc as part of enabling user config.
Change-Id: If1f3d86e09e634cde43ef8211831511781e96672
CRs-Fixed: 3520970
Currently, OCAC status in DFS SOC object is defined as a boolean type,
whereas, individual OCAC status types are defined as macros. Hence, it
becomes difficult to differentiate between various status values.
To solve this issue, enumerate OCAC status types together and change
the OCAC status in the DFS SOC object from boolean to the enumerated
type.
Also, create a new object 'adfs_completion_params' to store the Off
channel CAC completion parameters within the wlan_dfs structure.
Create a new api 'dfs_agile_cleanup_rcac' to clear the agile RCAC
parameters.
Change-Id: Id95014f4f81b4a2137092a5dd107c570d70058b6
CRs-Fixed: 3501679
For mlo 5+6, 6 GHz band score is higher than 5 GHz, so 6+5 total score is
higher than 5+6, 6+5 is always selected before 5+6 even 6 GHz link score is
much worse than 5 GHz.
To fix it, calculate each link score for each MLO AP, if assoc link is
best link, add a boost score, then it can be selected first.
Update band weight and score for both SLO and MLO, select average of link
band score as MLO band score.
Change-Id: If0714fa94031d5746d89388917540f0e34086d86
CRs-Fixed: 3483850
Add support in driver to check if FW supports per link stats
in case of mlo connection, using the wmi service event
WMI_SERVICE_PER_LINK_STATS_SUPPORT
Change-Id: I85ea50877455efc3646d3b1892ce855dc07b1dbf
CRs-Fixed: 3520338
Recently wlan host might configure irq affinity for CE/DP,
but these irq affinity hint has not been cleared before they
are freed, kernel will raise warning.
Clear the irq affinity hint before freeing irq.
Change-Id: I17d0d6aee45572685fb2ed69112e9b6b4c9b303a
CRs-Fixed: 3528315
When some faulty AP changes the SSID from hidden to non-hidden
or vice versa, then unlink bss and update bss to kernel happens
multiple times. Then when disconnection happens, it causes
abnormal behavior since the bss entry looks corrupted.
So avoid unlink bss in INIT state to avoid corruption
since cfg80211_disconnected() calls
cfg80211_wdev_release_bsses(wdev) already.
Change-Id: If07d1b8fa92057c9320c9ab243b9cbef30ac21ba
CRs-Fixed: 3516816
Sometimes we receive duplicate packet buffer descriptors.
This results in corruption of descriptor freelist.
Add check to handle duplicate packet monitor descriptors.
Change-Id: I1dd33575fba78a7816063c40bf29ba41f9bcf226
CRs-Fixed: 3519326
Currently there is no feature capability support for ll_lt_sap
and host driver and user space assumes that support for ll_lt_sap
is always present which not always true.
This may result in unexpected behavior if firmware does not
support ll_lt_sap.
To address this issue, add a feature capability to indicate
to userspace if host driver and firmware supports ll_lt_sap.
Change-Id: I4a2cc4fdb3d48469a5b1a4be32a4e760543b16cb
CRs-Fixed: 3520969
When we bring up AP on channel 52 HT80 and inject radar on 56 with
dfs puncturing feature enabled, the channel 56 is put to NOL
and is punctured. However, channel 52 HT80 is still operable
with the puncture pattern 0x2.
But to the SON application, we do not report 52 HT80 as
an operable channel via PDEV_GET_OPERABLE_CHAN.
This is because reg_is_chan_supported() considers NOL channels as
disabled and does not support DFS puncturing feature.
Add puncturing support for reg_is_chan_supported() API. For every
channel/bw combination present in the opclass table, find out if there
are NOL infected subchannels and if so, calculate the DFS puncturing
pattern and feed that as an input to
reg_fill_channel_list_for_pwrmode(). This ensures
reg_fill_channel_list_for_pwrmode() does not validate the punctured
NOL channels and allows AP to come up on punctured NOL channel.
CRs-Fixed: 3518893
Change-Id: I4f23aa391598a4185933030cc6882ff9ae28f1d9
Currently in monitor mode, links are released to WBM through the
SW2WBM_RELEASE ring and WBM will feed the links back to RXDMA
through the WBM2RXDMA_LINK_RING.
WCN6450 uses SOFTUMAC architecture where WBM is not present.
Hence the WBM2RXDMA_LINK_RING is repurposed to SW2RXDMA_LINK_RING
where host will directly release the links to RXDMA using this ring.
Change-Id: I110f607e38c4c2ab10eb1bd7b1f5a7bce2f03692
CRs-Fixed: 3493368
Add support for sw2rxdma_link_ring size cfg ini.
Also add wrapper function to get the sw2rxdma_link_ring size.
Change-Id: Ic5b17f029fe6c735785701801b75284dd489ac1e
CRs-Fixed: 3525040
reg_is_range_overlap_6g() is not implemented for station solution,
if enable CONFIG_AFC_SUPPORT for mobile router, reg_set_ap_pwr_type()
will encounter compile issue.
reg_get_5g_bonded_channel_for_freq() updated to add more parameters
by Change Id I4c978c7f938b14d79d0eadf4251a86a9165f496e.
Fix it by adding CONFIG_REG_CLIENT check so reg_is_range_overlap_6g()
only valid for AP solution, because for mobile device there is no
deployment type (indoor/outdoor) set, so reg_set_ap_pwr_type() under
CONFIG_AFC_SUPPORT is for AP solution only, and only one pdev exist
for station solution so API reg_is_range_overlap_6g() is not needed,
query wmi_service_6ghz_support can get 6 GHz capability.
Update AFC/DCS function where call
wlan_reg_decide_6ghz_power_within_bw_for_freq().
Change-Id: Ie04262718504767bd252222e01258eab1d929aea
CRs-Fixed: 3529783
Add a new enum for SW2RXDMA_LINK_RING which is used to
handover the links to HW in monitor mode for wcn6450.
Change-Id: I0a3cd19f9891ae323742fd8bebfca5ff20b14b20
CRs-Fixed: 3525001
Add epcs_enable flag in mlme_vdev structure and APIs to
set/get the config from user.
Change-Id: I490ebf1b41c095478160109339355df421ebe42c
CRs-Fixed: 3522731
when station connected to AP in security type other than tkip header
size is incremented with security header length causing stack to
misunderstood the protocol and not responding to the ping.
additional security header added after decap is removed.
Change-Id: I521b0990fe9e5746a8c8cfb29de7064cf51d0687
CRs-Fixed: 3509594
Make provisions to explicitly set non assoc link as primary netdev for an
MLO association.
CRs-Fixed: 3508341
Change-Id: Iaef4eff6ac309f278a18f8ceee2ffb6c4ad604b6
To prevent APPS from suspending hold a wakelock
at the time of filter reserve and release at filter
release.
Change-Id: I5c15c50ccf2cebce677abd8ff6b568b7fafab49b
CRs-Fixed: 3498105
Change log level from error to debug since
it is non-critical case if spectral scan
disabled and do not need to setup netlink
socket.
Change-Id: Ib0eb61ddeea73ee23c9dd2874494a0334b177fcd
CRs-Fixed: 3527726
This change is to update eirp datatype from uint8_t to int8_t
to handle negative values of eirp.
Change-Id: I840d7911d0ac85181a09ea98658a661644f43b9c
CRs-Fixed: 3521850
With EasyMesh disable at runtime data from second vap is taking
slow path, due to wrong metadata mask and session id populated to
IPA driver.
Fix is pass correct metadata and session id based on EasyMesh
status to IPA.
Change-Id: I0735965c0d8bd257492343e3a27f9f1509091b87
CRs-Fixed: 3487546
Currently type of score is unit32_t due to which
negative value calculated is tried to change
to uint32_t and MLO score is getting boost instead
of deteriorate.
Fix is to calculate score in int32_t type and then move
to unsigned value.
Change-Id: Id28f58b44e1a1246f491b28a86de1c78c5e97215
CRs-Fixed: 3525654
Direct link refill ring HTT setup fails due to srng
ring id mismatch. IPA uses a max of two RXDMA_BUF
rings but the hal srng ring id has a max of 3 RXDMA
ring ids which is causing the ring id mismatch for
direct link refill ring.
The fix is to remove the addition IPA related hal srng
ring id and move the macros appropriately to make
it consistent for both IPA enabled and disabled
cases.
Change-Id: Ieb4bbf646f5f0360e4013ae3e235cc7368087731
CRs-Fixed: 3523851
Add support for filling fast_xmit in SKB for platform
which support skb_recycler feature.
Add a QDF abstraction to update fast_xmit in skb, when it is supported.
Change-Id: Ibc562023ddeb0bf5c2709bbb60b596676c932b5a
CRs-Fixed: 3522028
When we bring up AP on channel 100 HT320 with dfs puncturing
feature enabled and inject radar using bangradar at an offset of 70,
channel 144 gets added to the NOL. AP comes up on 100 HT320 with a
puncture pattern of 0xC0. AP's channel is changed to 149 HT80 and then
channel is changed again to 100 HT320 with 0xC0 puncture bitmap using
doth_ch_chwidth command.
Since 100 HT320 0xC0 is a DFS channel, AP does CAC and at the end of the
CAC expiry dfs_is_radar_on_punc_chan() API is invoked. This API checks
if radar infected channels are punctured by the user puncture bitmap
(dfs_ch_punc_pattern) and if so does not mark the CAC done chan as radar.
However, since 100 HT320 has a user puncture pattern of 0xFC00 and the
NOL infected bitmap is 0xC0, it considers radar is found on CAC
completed channel and tries to mark the channel as a radar as
dfs_ch_punc_pattern is equated to radar_bitmap in
dfs_is_radar_on_punc_chan(). This results in a cpu stall.
In dfs_is_radar_on_punc_chan(), if the radar bitmap is a subset of user
puncture bitmap, it implies that radar channels are punctured by the
user and hence there is no need of another radar detection at the CAC
expiry.
CRs-Fixed: 3519985
Change-Id: Ia8383500e89e2ac734d124e047bdbb94822bff3d
Include Umac reset irq line in the mask table only
when it is enabled for 8 msi group to make sure
the legacy devices are not impacted.
Change-Id: If8f6b7f948a7c9f45247e8ff934642f0a532ff0d
CRs-Fixed: 3499500
This change selects psoc with second highest bw link as primary link
for first ML STA.
Change-Id: I1b60f83f695b04d533e4851b3751b8e1dfd9790c
CRs-Fixed: 3521765
Define a QCA vendor command to configure MLO link id to the driver on
which the TDLS discovery response frame needs to be transmitted when the
local station is connected in MLO mode. This command is configured to
the driver the prior to every TDLS discover frame transmission when the
station is connected in MLO mode. If the station is connected in non-MLO
mode this command is not configured to the driver for TDLS discovery
frame transmission.
Change-Id: I5815a604d44549cd650744e3fd8c8ca79a076dbc
CRs-Fixed: 3523774