History log of /wlan-dirver/qca-wifi-host-cmn/umac/regulatory/core/src/reg_opclass.c (Results 1 – 25 of 67)
Revision Date Author Comments
# 10e648c5 30-Oct-2023 Priyadarshnee Srinivasan <quic_priys@quicinc.com>

qcacmn: Allow only 80P80 supported frequencies for 130 opclass

Pine and Spruce supports 80P80 mode of operation in 5 GHz band
and hence opclass 130 is sent to the user application in
MESH_MAP_OPCLAS

qcacmn: Allow only 80P80 supported frequencies for 130 opclass

Pine and Spruce supports 80P80 mode of operation in 5 GHz band
and hence opclass 130 is sent to the user application in
MESH_MAP_OPCLASS_FOR_CUR_HWMODE NL80211 command.
However, these chips support 80P80 mode of operation
only on CFI 138 and 155, but to the application all the 80 MHz
channels in the 5 GHz band are advertised as supported.
This causes the application's channel selection algorithm to fail.
The existing API reg_is_chan_supported() can determine if the input
frequency is 80P80 capable only if cfreq2 of the 80P80 channel is
provided and in reg_get_cfis_from_opclassmap_for_non6g() API, it is not
possible to determine all combinations of cfreq2 for the given primary
frequency. Hence, a call to is_freq_80p80_supported() is made to
determine if any 80P80 combination is possible for the given input
frequency.
Also, 6 GHz channels do not support 80P80 mode of operation.
reg_is_cfi_supported() does a lot of computation to find out that
80P80 is not supported. Hence, if the opclass entry
is 6 GHz 80P80, set 80p80_supported as false.

Hence, send only the supported 80P80 CFIs in the
supported channel list array in MESH_MAP_OPCLASS_FOR_CUR_HWMODE command.

CRs-Fixed: 3627501
Change-Id: Ib5d3e872b34b8df81b8466e877b10f2fd4e68e40

show more ...


# d45510b2 15-Sep-2023 Priyadarshnee Srinivasan <quic_priys@quicinc.com>

qcacmn: Fix the oplass cfi mismatch in AFC request

In this Change-ID I9e72c960fefe6fbdc106bb83fb240d84d8522b80, the
80P80 opclass is excluded if the device does not support 80P80
mode of operation.

qcacmn: Fix the oplass cfi mismatch in AFC request

In this Change-ID I9e72c960fefe6fbdc106bb83fb240d84d8522b80, the
80P80 opclass is excluded if the device does not support 80P80
mode of operation. The exclusion of 80P80 opclass is done only
in the AFC request size calculation. In
reg_dmn_fill_6g_opcls_chan_lists(), 80P80 CFIs are added in the
opclass index of 320 MHz. Hence, 320 MHz opclass (137) contains
cfis 7, 23 (which is actually 80P80 CFIS) and this request is sent
to the AFC server. Since, the AFC server does not support 320 MHz
SP operation in CFIs 7, 23, it does not return opclass 137 in the
AFC response. Hence, AP is unable to come up on 320 MHz in SP
power mode.

To fix this issue, exclude 80P80 CFIs in
reg_dmn_fill_6g_opcls_chan_lists() API as well if the device does
not support 80P80 mode of operation.

Change-Id: I3114f52c45f575ba3693dadc0d2a3d42ed513f68
CRs-Fixed: 3593497

show more ...


# 416c5700 03-Jul-2023 Vignesh U <quic_uvignesh@quicinc.com>

qcacmn: Include opclass 80p80 in AFC request only if device supports

AFC request is sent for all the opclass supported in the global opclass
including 80p80. Not all the devices support 80p80 and so

qcacmn: Include opclass 80p80 in AFC request only if device supports

AFC request is sent for all the opclass supported in the global opclass
including 80p80. Not all the devices support 80p80 and so, it is
unnecessarily included in the AFC request.

Create a callback function in regulatory to check if 80p80 is supported by
the device. If the support is present then the AFC request can include
80p80 opclass (opclass number 135 in global operating class). If not, then
the AFC request excludes 80p80 opclass.

Include 80p80 opclass in the AFC request based on the devices' support.

Change-Id: I9e72c960fefe6fbdc106bb83fb240d84d8522b80
CRs-Fixed: 3538926

show more ...


# 50956c43 06-Jul-2023 Divya R <quic_divraj@quicinc.com>

qcacmn: Use correct opclass table to populate 6 GHz op class

'wifitool athX setbssidpref' command is used to the
set bssid preference value for mac address.
'wifitool athX sendbstmreq' command is u

qcacmn: Use correct opclass table to populate 6 GHz op class

'wifitool athX setbssidpref' command is used to the
set bssid preference value for mac address.
'wifitool athX sendbstmreq' command is used to
trigger BTM request frame from the AP to make MCC STA roam from
one AP to another.The preference value from the 'setbssidpref'
command is not reflected in the 'Neighbor report' IE in the
BTM request frame in 5 GHz device. In case of 5 GHz device, 6 GHz op
class are not populated since two global op class structure are
maintained and 6 GHz channels are missing from the list of channels
supported from the old structure (global_operating_class).
This is causing the AP to exclude the preference value
from setbssidpref command.

To fix this, popluate 6 GHz supported op class from new
global_op_class structure instead of old global_operating_class structure.

Change-Id: Id2275c9862518c613773d6ae810d59dea8b854b1
CRs-Fixed: 3549953

show more ...


# 1768e99c 06-Jun-2023 Priyadarshnee Srinivasan <quic_priys@quicinc.com>

qcacmn: Add puncturing support for PDEV_GET_OPERABLE_CHAN

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 punct

qcacmn: Add puncturing support for PDEV_GET_OPERABLE_CHAN

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

show more ...


# 4cbabdad 07-Jun-2023 Aditya Kodukula <quic_akodukul@quicinc.com>

qcacmn: Fix typos in cmn

Fix typos spanned over multiple files in cmn.

Change-Id: I9886114cd9cde934e084d0977e6272f8dd04df76
CRs-Fixed: 3521888


# 30e5729e 23-Mar-2023 Priyadarshnee Srinivasan <quic_priys@quicinc.com>

qcacmn: Fill only supported opclass in the AFC request buffer

In case of a split-phy 6 GHz radio, there are 6 GHz opclasses and cfis
that do not intersect with the chip range for a given pdev.
The c

qcacmn: Fill only supported opclass in the AFC request buffer

In case of a split-phy 6 GHz radio, there are 6 GHz opclasses and cfis
that do not intersect with the chip range for a given pdev.
The current algorithm appends such opclasses with "num_cfis as 0" to
the AFC request buffer and the buffer with empty cfis are
sent to the AFC server.
This change ensures that the chip unsupported opclasses/cfis are not sent
to the AFC server.

Also, if the reg rule frequency range is not supported by the chip range,
reg_intersect_ranges() is expected to set the out_range as
{low_freq = 0,high_freq = 0}. However, it only sets the low_freq to 0.
Since high_freq is a non-zero value, the chip un-supported range is
considered as a valid range with frequency_low as 0.
This causes the following error from the AFC server:
"error": "The frequency range indicated in the Available Spectrum
Inquiry Request is at least partially outside of the frequency band
under the management of the AFC System (e.g. 5.925-6.425 GHz and
6.525-6.875 GHz bands in US).

To fix this issue, assign high_freq also to 0 if the
reg rule frequency range is not supported by the chip range.

CRs-Fixed: 3442719
Change-Id: I5504376ac31203045b32e23f54a9ab6a41e63a3f

show more ...


# aecdfaa7 20-Feb-2023 Hariharan Basuthkar <quic_hbasuthk@quicinc.com>

qcacmn: Rectify 20 MHz opclass check

When the CLI command wifitool athX disable_opclass_chans is executed
with a valid 20 MHz operating class, the command throws an error,
"Opclass should only be 20

qcacmn: Rectify 20 MHz opclass check

When the CLI command wifitool athX disable_opclass_chans is executed
with a valid 20 MHz operating class, the command throws an error,
"Opclass should only be 20 MHz opclass" on the console.

The opclass passed as an argument to reg_enable_disable_opclass_chans,
which is greater than 20 MHz in value, makes the API reg_is_20mhz_opclass,
always return false.

To fix the issue, pass channel spacing (in MHz units) as an argument to
the 'reg_is_20mhz_opclass'. Also rename 'reg_is_20mhz_opclass' to
'reg_is_chanspacing_20mhz' as we are verifying if the channel spacing
of an opclass is close to 20 MHz; not verifying the opclass itself.

Change-Id: I198b4d90c68613210377b96f6836c5b8c810dc7f
CRs-Fixed: 3410934

show more ...


# 54beaf78 22-Feb-2023 Divyajyothi Goparaju <quic_dgoparaj@quicinc.com>

qcacmn: Replace callers of reg_set_channel_params_for_freq

Replace all callers of reg_set_channel_params_for_freq
with new api reg_set_chan_params_for_pwrmode

Change-Id: Ifefb8e0a2e9dc2dde5360f90b6

qcacmn: Replace callers of reg_set_channel_params_for_freq

Replace all callers of reg_set_channel_params_for_freq
with new api reg_set_chan_params_for_pwrmode

Change-Id: Ifefb8e0a2e9dc2dde5360f90b6c129573dfaddc1
CRs-Fixed: 3144601

show more ...


# c9105c1a 16-Feb-2023 Jeff Johnson <quic_jjohnson@quicinc.com>

qcacmn: Fix reg_enable_disable_chan_in_mas_chan_list() kernel-doc

The following change fixed all of the documentation issues in the
umac/regulatory/core folder:
qcacmn: Fix umac/regulatory/core docu

qcacmn: Fix reg_enable_disable_chan_in_mas_chan_list() kernel-doc

The following change fixed all of the documentation issues in the
umac/regulatory/core folder:
qcacmn: Fix umac/regulatory/core documentation
Change-Id Id666d5a92415158591e6379b619fb34c518aeca1

Unfortunately, before the patch was merged, the following change
introduced new errors in the documentation of function
reg_enable_disable_chan_in_mas_chan_list(), located in
umac/regulatory/core/src/reg_opclass.c:
qcacmn: Add an API to enable or disable channels based on opclass
Change-Id Ie9dbbadbe28e5b5fdc2ec9c60c284da9c9e2286f

Fix those errors.

Change-Id: I8396159a6af4ece0815f78355a0531aca5eff023
CRs-Fixed: 3408940

show more ...


# 058c19c0 14-Feb-2023 Priyadarshnee Srinivasan <quic_priys@quicinc.com>

qcacmn: Do not use a stack variable uninitialized

In reg_is_chan_supported() API, the stack object chan_list is
uninitialized and is used by channel search API. The puncture pattern
inside the chan_

qcacmn: Do not use a stack variable uninitialized

In reg_is_chan_supported() API, the stack object chan_list is
uninitialized and is used by channel search API. The puncture pattern
inside the chan_list is set to a random value and it causes channel find
failure.

CRs-Fixed: 3402977
Change-Id: Icec8e5f207d3d8bfb5a01dafe8aa6adc5bc18a9d

show more ...


# fca136e1 09-Feb-2023 Jeff Johnson <quic_jjohnson@quicinc.com>

qcacmn: Fix umac/regulatory/core documentation

The kernel-doc script identified some documentation issues in the
umac/regulatory/core folder, so fix them.

Change-Id: Id666d5a92415158591e6379b619fb3

qcacmn: Fix umac/regulatory/core documentation

The kernel-doc script identified some documentation issues in the
umac/regulatory/core folder, so fix them.

Change-Id: Id666d5a92415158591e6379b619fb34c518aeca1
CRs-Fixed: 3401870

show more ...


# 8d466ff3 20-Sep-2022 Hariharan Basuthkar <quic_hbasuthk@quicinc.com>

qcacmn: Add an API to enable or disable channels based on opclass

Add an API ucfg_reg_enable_disable_opclass_chans where given the
operating class, disable/enable the channels listed in the input
ch

qcacmn: Add an API to enable or disable channels based on opclass

Add an API ucfg_reg_enable_disable_opclass_chans where given the
operating class, disable/enable the channels listed in the input
channel list.

The input channel list and operating class should be of 2 GHz or
5 GHz band.

Change-Id: Ie9dbbadbe28e5b5fdc2ec9c60c284da9c9e2286f
CRs-Fixed: 3301654

show more ...


# a53c0e8a 20-Jan-2023 Vijay Krishnan <quic_vijkri@quicinc.com>

qcacmn: Perform null check before memory allocation

When calculating 6 GHz Opclasses and channels through API
reg_dmn_get_6g_opclasses_and_channels, memory allocation
is performed based on number of

qcacmn: Perform null check before memory allocation

When calculating 6 GHz Opclasses and channels through API
reg_dmn_get_6g_opclasses_and_channels, memory allocation
is performed based on number of opclasses.

In some cases if the number of opclasses is zero, we
try to memory allocate for 0 bytes resulting in error
in console.

To avoid this issue, verify that the number of opclasses
is non-zero before performing the allocation.

Change-Id: Ieae85130eb77c9637153ae1505c9d9b578e0bf2e
CRs-Fixed: 3379534

show more ...


# c50244f2 12-Oct-2022 Vinod Kumar Myadam <quic_vmyadam@quicinc.com>

qcacmn: Replace reg_is_chan_supported to use pwrmode API

The current channel list alone is not enough to represent the
capability of the chip or device. Given a channel, in many
cases it may be requ

qcacmn: Replace reg_is_chan_supported to use pwrmode API

The current channel list alone is not enough to represent the
capability of the chip or device. Given a channel, in many
cases it may be required to know all the power modes that are
supported by this channel.

Update callers of reg_is_chan_supported with super channel list.
reg_is_chan_supported to use the super channel list API
reg_is_chan_supported_for_pwrmode.

Change-Id: I5d33f7bb0bee6012c28d35e6138f5a03525c33ca
CRs-Fixed: 3357157

show more ...


# bbc6f89c 30-Sep-2022 Jeff Johnson <quic_jjohnson@quicinc.com>

qcacmn: umac: regulatory: Fix misspellings

Fix misspellings in umac/regulatory/...

Change-Id: I9ede258627348c877cc824f80caae903fa0b21f2
CRs-Fixed: 3304700


# 6efe5cf2 07-Jul-2022 Vignesh U <quic_uvignesh@quicinc.com>

qcacmn: Redefine the regulatory constant INVALID_CHANNEL

Currently the INVALID_CHANNEL assumes the value 0xBAD. When a channel list
array is indexed, there is an array out of bound error when the ch

qcacmn: Redefine the regulatory constant INVALID_CHANNEL

Currently the INVALID_CHANNEL assumes the value 0xBAD. When a channel list
array is indexed, there is an array out of bound error when the channel
list array is indexed using INVALID_CHANNEL or when the index is greater
than equal to NUM_CHANNELS. So a check for an invalid channel enum is
likely to be, (ch_enum == INVALID_CHANNEL) && (ch_enum >= NUM_CHANNEL).

Redefine INVALID_CHANNEL enum constant with NUM_CHANNELS constant so that,
the validity checks for channel enum is compressed as,
(ch_enum >= INVALID_CHANNEL).

Change-Id: I5be588fe6011ac85031325f56eff208f2aa7a1e5
CRs-Fixed: 3238386

show more ...


# f8cd3e01 18-Jul-2022 Hariharan Basuthkar <quic_hbasuthk@quicinc.com>

Revert "qcacmn: Check if opclass is supported by country"

This reverts change-id I3be0e0aa7dc2a41f987a6725bc74444311408e51.

Change-Id: I89b373e1445b62c0eb00850ad6bf969045a42f7a
CRs-Fixed: 3246260


# 967441ed 06-Jul-2022 Hariharan Basuthkar <quic_hbasuthk@quicinc.com>

qcacmn: Check if opclass is supported by country

When operating class 137 (320 MHz width) is filled in the AFC partial
request on a radio that supports upto 160 MHz bandwidth, there is a
crash obser

qcacmn: Check if opclass is supported by country

When operating class 137 (320 MHz width) is filled in the AFC partial
request on a radio that supports upto 160 MHz bandwidth, there is a
crash observed.

The 160 MHz platform on which the issue is reported does not have
enough memory to accommodate a 320 MHz AFC response. Therefore, the
crash happens.

To fix this issue, fill the operating class in the AFC partial request
based on the max_5g_bw sent in the WMI_REG_CHAN_LIST_CC_EXT_EVENT.

Change-Id: I3be0e0aa7dc2a41f987a6725bc74444311408e51
CRs-Fixed: 3238405

show more ...


# 63af5758 08-Jun-2022 Priyadarshnee Srinivasan <quic_priys@quicinc.com>

qcacmn: Add AFC changes for 320 MHz

Fetch sub-channels of 320 MHz in reg_get_subchannels_for_opclass
API.
Change MAX_AFC_BW to 320 and REG_MAX_20M_SUB_CH to 16 in case of
11BE.
Add cen320 as an inpu

qcacmn: Add AFC changes for 320 MHz

Fetch sub-channels of 320 MHz in reg_get_subchannels_for_opclass
API.
Change MAX_AFC_BW to 320 and REG_MAX_20M_SUB_CH to 16 in case of
11BE.
Add cen320 as an input to reg_get_best_pwr_mode to fetch the eirp
afc power for the corresponding cen320 from the afc response.
Add dispatcher API for reg_get_chan_state_for_320.
Add band_center_320 as an argument to reg_get_chan_state_for_320
to fetch the channel state for the input 320 MHz band center.
Add logic in reg_find_eirp_in_afc_eirp_obj to fetch the eirp power
for the given center freq.

CRs-Fixed: 3211744
Change-Id: Ic37bfe6790385836f81a156dd6ccc071245ea1bb

show more ...


# 33e3e1d6 30-May-2022 Divya R <quic_divraj@quicinc.com>

qcacmn: Initialize the chan_params structure

chan_params structure is uninitialized, due to which variables
inside the chan_params structure have garbage values.
To avoid this, initialize the chan_p

qcacmn: Initialize the chan_params structure

chan_params structure is uninitialized, due to which variables
inside the chan_params structure have garbage values.
To avoid this, initialize the chan_params structure.

Change-Id: Ic09c0a2d24c2a1eac8f076c7bbd4d25d147370fd
CRs-Fixed: 3205502

show more ...


# 70e862a7 17-May-2022 Amith Ajith <quic_amitajit@quicinc.com>

qcacmn: Set global_tbl_lookup to true if country opclass is global

In function reg_freq_width_to_chan_op_class_auto, global_tbl_lookup is set
to false for 2.4 GHz and 5 GHz without considering the g

qcacmn: Set global_tbl_lookup to true if country opclass is global

In function reg_freq_width_to_chan_op_class_auto, global_tbl_lookup is set
to false for 2.4 GHz and 5 GHz without considering the global opclass set
by user command. This results in wrong opclass information in eCSA.

Add an api to check if global opclass is set and update global_tbl_lookup
accordingly in reg_freq_width_to_chan_op_class_auto.

Change-Id: I069131d6068fb546f2b59f1e752a3c8c50f15759
CRs-Fixed: 3168817

show more ...


# 2534a068 06-Apr-2022 Priyadarshnee Srinivasan <quic_priys@quicinc.com>

qcacmn: Get opclass details for current hwmode

Iterate through the opclass table and fetch the opclass
details for the channel widths supported by the current
hardware mode.

CRs-Fixed: 3168892
Chan

qcacmn: Get opclass details for current hwmode

Iterate through the opclass table and fetch the opclass
details for the channel widths supported by the current
hardware mode.

CRs-Fixed: 3168892
Change-Id: I9b418999e3745529e3db5bae3a46569e0d1bdc02

show more ...


# 56579a6a 29-Mar-2022 Will Huang <quic_wilhuang@quicinc.com>

qcacmn: Fix build error when enable AFC from MCL

&p_range->lowfreq, 'reg_assign_vars_with_range_vals' from incompatible
pointer type.
'low_limit_enum', 'high_limit_enum' may be used uninitialized.
'

qcacmn: Fix build error when enable AFC from MCL

&p_range->lowfreq, 'reg_assign_vars_with_range_vals' from incompatible
pointer type.
'low_limit_enum', 'high_limit_enum' may be used uninitialized.
'reg_is_val_within_range' defined but not used.

Change-Id: Id5ff2e0fa18555e4d27e955e6508bd23da280aff
CRs-Fixed: 3153499

show more ...


# b844c627 11-Mar-2022 Hariharan Basuthkar <quic_hbasuthk@quicinc.com>

qcacmn: Add reg API to treat NOL chan as disabled/enabled

By default, the regulatory module considers NOL channels as disabled
and these channels are excluded in channel search algorithm.

However,

qcacmn: Add reg API to treat NOL chan as disabled/enabled

By default, the regulatory module considers NOL channels as disabled
and these channels are excluded in channel search algorithm.

However, there are use cases where a search for NOL channel
is done and regulatory module fails to fetch the channel param.
Hence create an infrastructure to consider NOL channels
as "enabled" / "disabled" as per user's choice during channel search.
Setting "is_treat_nol_chan_as_disabled" flag to true considers
NOL channels as disabled and punctured.

The callers of reg_fill_channel_list() and
reg_set_channel_params_for_freq() APIs should set the flag
"is_treat_nol_chan_as_disabled" as per the desired use case.

CRs-Fixed: 3134870
Change-Id: Iae7cea18ecfd5e9972ea8e6934828898a6cd1e74

show more ...


123