2020-07-15 13:03:22

by Felix Fietkau

[permalink] [raw]
Subject: [PATCH v3 1/4] dt-bindings: net: wireless: mt76: add power-limits node

This subnode can be used to set per-rate tx power limits either per
country code / regdomain or globally.
These limits are typically provided by the device manufacturers and are
used to limit sideband emissions and stay within regulatory limits

Co-developed-by: Shayne Chen <[email protected]>
Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
---
v3:
- fix S-o-b order
v2:
- merge 802.11ax rate changes from Shayne's patch
- document txs-delta property

.../bindings/net/wireless/mediatek,mt76.txt | 59 +++++++++++++++++++
1 file changed, 59 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
index ab7e7a00e534..e4859c974ef4 100644
--- a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
+++ b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
@@ -36,6 +36,7 @@ Optional nodes:
- led: Properties for a connected LED
Optional properties:
- led-sources: See Documentation/devicetree/bindings/leds/common.txt
+- power-limits: contains per-regdomain/channel rate power limit subnodes

&pcie {
pcie0 {
@@ -76,3 +77,61 @@ wmac: wmac@18000000 {

power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
};
+
+
+Subnodes of power-limits:
+
+Properties:
+- country: One or more country codes, as used by the cfg80211 regdomain code
+- regdomain: "FCC", "ETSI" or "JP"
+
+If neither country, nor regdomain is specified, the power limits node is used
+as a fallback when no other subnode matches.
+
+Subnodes txpower-2g, txpower-5g:
+
+Properties:
+- channels: pairs of first and last channel number
+- cck: 4 half-dBm per-rate power limit values
+- ofdm: 8 half-dBm per-rate power limit values
+- mcs:
+ sets of per-rate power limit values for 802.11n/802.11ac rates for
+ multiple channel bandwidth settings.
+ Each set starts with the number of channel bandwidth settings for
+ which the rate set applies, followed by either 8 (MT7603/MT7628) or
+ 10 (all other chips) power limit values.
+ The order of the channel bandwidth settings is: 20, 40, 80, 160 MHz.
+- ru:
+ sets of per-rate power limit values for 802.11ax rates for multiple
+ channel bandwidth or resource unit settings.
+ Each set starts with the number of channel bandwidth or resource unit
+ settings for which the rate set applies, followed by 12 power limit
+ values. The order of the channel resource unit settings is:
+ RU26, RU52, RU106, RU242/SU20, RU484/SU40, RU996/SU80, RU2x996/SU160.
+- txs-delta: half-dBm power delta for different numbers of antennas (1, 2, ...)
+
+
+power-limit example:
+
+power-limits {
+ r0 {
+ regdomain = "FCC";
+ txpower-5g {
+ r1 {
+ channels = <36 48>;
+ ofdm = <23 23 23 23 23 23 23 23>;
+ mcs = <1 23 23 23 23 23 23 23 23 23 23>,
+ <3 22 22 22 22 22 22 22 22 22 22>;
+ ru = <3 22 22 22 22 22 22 22 22 22 22 22 22>,
+ <4 20 20 20 20 20 20 20 20 20 20 20 20>;
+ };
+ r2 {
+ channels = <100 181>;
+ ofdm = <14 14 14 14 14 14 14 14>;
+ mcs = <4 14 14 14 14 14 14 14 14 14 14>;
+ txs-delta = <12 9 6>;
+ ru = <7 14 14 14 14 14 14 14 14 14 14 14 14>;
+ };
+ };
+ };
+};
--
2.24.0


2020-07-21 03:08:18

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v3 1/4] dt-bindings: net: wireless: mt76: add power-limits node

On Wed, Jul 15, 2020 at 03:01:34PM +0200, Felix Fietkau wrote:
> This subnode can be used to set per-rate tx power limits either per
> country code / regdomain or globally.
> These limits are typically provided by the device manufacturers and are
> used to limit sideband emissions and stay within regulatory limits
>
> Co-developed-by: Shayne Chen <[email protected]>
> Signed-off-by: Shayne Chen <[email protected]>
> Signed-off-by: Felix Fietkau <[email protected]>
> ---
> v3:
> - fix S-o-b order
> v2:
> - merge 802.11ax rate changes from Shayne's patch
> - document txs-delta property

This is an extensive enough change that I think it needs to be in schema
format.

> .../bindings/net/wireless/mediatek,mt76.txt | 59 +++++++++++++++++++
> 1 file changed, 59 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
> index ab7e7a00e534..e4859c974ef4 100644
> --- a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
> +++ b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
> @@ -36,6 +36,7 @@ Optional nodes:
> - led: Properties for a connected LED
> Optional properties:
> - led-sources: See Documentation/devicetree/bindings/leds/common.txt
> +- power-limits: contains per-regdomain/channel rate power limit subnodes
>
> &pcie {
> pcie0 {
> @@ -76,3 +77,61 @@ wmac: wmac@18000000 {
>
> power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
> };
> +
> +
> +Subnodes of power-limits:
> +
> +Properties:
> +- country: One or more country codes, as used by the cfg80211 regdomain code

What are the values? cfg80211 is a Linux thing and doesn't belong in
bindings.

> +- regdomain: "FCC", "ETSI" or "JP"

These aren't implied by the country code?

> +
> +If neither country, nor regdomain is specified, the power limits node is used
> +as a fallback when no other subnode matches.
> +
> +Subnodes txpower-2g, txpower-5g:
> +
> +Properties:
> +- channels: pairs of first and last channel number

What's the range in terms of channel numbers and pairs?

> +- cck: 4 half-dBm per-rate power limit values
> +- ofdm: 8 half-dBm per-rate power limit values
> +- mcs:
> + sets of per-rate power limit values for 802.11n/802.11ac rates for
> + multiple channel bandwidth settings.
> + Each set starts with the number of channel bandwidth settings for
> + which the rate set applies, followed by either 8 (MT7603/MT7628) or
> + 10 (all other chips) power limit values.
> + The order of the channel bandwidth settings is: 20, 40, 80, 160 MHz.

The example only has 2 sets, so which channels are they?

> +- ru:
> + sets of per-rate power limit values for 802.11ax rates for multiple
> + channel bandwidth or resource unit settings.
> + Each set starts with the number of channel bandwidth or resource unit
> + settings for which the rate set applies, followed by 12 power limit
> + values. The order of the channel resource unit settings is:
> + RU26, RU52, RU106, RU242/SU20, RU484/SU40, RU996/SU80, RU2x996/SU160.

Could be 8-bit? Doesn't really matter much for the example, but what's
the worst/typical case?

> +- txs-delta: half-dBm power delta for different numbers of antennas (1, 2, ...)
> +
> +
> +power-limit example:
> +
> +power-limits {
> + r0 {

What's 'r0'? Not documented.

> + regdomain = "FCC";
> + txpower-5g {
> + r1 {

What's 'r1' and 'r2'? Not documented.

> + channels = <36 48>;
> + ofdm = <23 23 23 23 23 23 23 23>;
> + mcs = <1 23 23 23 23 23 23 23 23 23 23>,
> + <3 22 22 22 22 22 22 22 22 22 22>;
> + ru = <3 22 22 22 22 22 22 22 22 22 22 22 22>,
> + <4 20 20 20 20 20 20 20 20 20 20 20 20>;
> + };
> + r2 {
> + channels = <100 181>;
> + ofdm = <14 14 14 14 14 14 14 14>;
> + mcs = <4 14 14 14 14 14 14 14 14 14 14>;
> + txs-delta = <12 9 6>;
> + ru = <7 14 14 14 14 14 14 14 14 14 14 14 14>;
> + };
> + };
> + };
> +};
> --
> 2.24.0
>

2020-07-21 18:20:45

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH v3 1/4] dt-bindings: net: wireless: mt76: add power-limits node

On 2020-07-21 05:04, Rob Herring wrote:
> On Wed, Jul 15, 2020 at 03:01:34PM +0200, Felix Fietkau wrote:
>> This subnode can be used to set per-rate tx power limits either per
>> country code / regdomain or globally.
>> These limits are typically provided by the device manufacturers and are
>> used to limit sideband emissions and stay within regulatory limits
>>
>> Co-developed-by: Shayne Chen <[email protected]>
>> Signed-off-by: Shayne Chen <[email protected]>
>> Signed-off-by: Felix Fietkau <[email protected]>
>> ---
>> v3:
>> - fix S-o-b order
>> v2:
>> - merge 802.11ax rate changes from Shayne's patch
>> - document txs-delta property
>
> This is an extensive enough change that I think it needs to be in schema
> format.
Okay, I will convert the existing file soon and then add these changes
afterwards.

>> .../bindings/net/wireless/mediatek,mt76.txt | 59 +++++++++++++++++++
>> 1 file changed, 59 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
>> index ab7e7a00e534..e4859c974ef4 100644
>> --- a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
>> +++ b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
>> @@ -36,6 +36,7 @@ Optional nodes:
>> - led: Properties for a connected LED
>> Optional properties:
>> - led-sources: See Documentation/devicetree/bindings/leds/common.txt
>> +- power-limits: contains per-regdomain/channel rate power limit subnodes
>>
>> &pcie {
>> pcie0 {
>> @@ -76,3 +77,61 @@ wmac: wmac@18000000 {
>>
>> power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
>> };
>> +
>> +
>> +Subnodes of power-limits:
>> +
>> +Properties:
>> +- country: One or more country codes, as used by the cfg80211 regdomain code
>
> What are the values? cfg80211 is a Linux thing and doesn't belong in
> bindings.
I'll change the description to leave out cfg80211.
It's a simple alpha2 country code.

>> +- regdomain: "FCC", "ETSI" or "JP"
>
> These aren't implied by the country code?
You use either country code or regdomain.

>> +If neither country, nor regdomain is specified, the power limits node is used
>> +as a fallback when no other subnode matches.
>> +
>> +Subnodes txpower-2g, txpower-5g:
>> +
>> +Properties:
>> +- channels: pairs of first and last channel number
>
> What's the range in terms of channel numbers and pairs?
802.11 channel numbers (0-255)

>> +- cck: 4 half-dBm per-rate power limit values
>> +- ofdm: 8 half-dBm per-rate power limit values
>> +- mcs:
>> + sets of per-rate power limit values for 802.11n/802.11ac rates for
>> + multiple channel bandwidth settings.
>> + Each set starts with the number of channel bandwidth settings for
>> + which the rate set applies, followed by either 8 (MT7603/MT7628) or
>> + 10 (all other chips) power limit values.
>> + The order of the channel bandwidth settings is: 20, 40, 80, 160 MHz.
>
> The example only has 2 sets, so which channels are they?
The format is <number_of_sets set_data>, so a set starting with <3 ...>
would contain the values for 20, 40 and 80 MHz and you'd add another one
with <1 ...> to describe 160 MHz.
Sets often contain the same data for multiple channel bandwidths, so
this reduces duplication.

>> +- ru:
>> + sets of per-rate power limit values for 802.11ax rates for multiple
>> + channel bandwidth or resource unit settings.
>> + Each set starts with the number of channel bandwidth or resource unit
>> + settings for which the rate set applies, followed by 12 power limit
>> + values. The order of the channel resource unit settings is:
>> + RU26, RU52, RU106, RU242/SU20, RU484/SU40, RU996/SU80, RU2x996/SU160.
>
> Could be 8-bit? Doesn't really matter much for the example, but what's
> the worst/typical case?
Yes, 8 bit would also work.

>> +- txs-delta: half-dBm power delta for different numbers of antennas (1, 2, ...)
>> +
>> +
>> +power-limit example:
>> +
>> +power-limits {
>> + r0 {
>
> What's 'r0'? Not documented.
>
>> + regdomain = "FCC";
>> + txpower-5g {
>> + r1 {
>
> What's 'r1' and 'r2'? Not documented.
You add an arbitrary number of subnodes (I just used r0, r1, ...)
containing rules with the documented properties.

- Felix