CPE210v3 actual transmit power limited to 21 dBm, bug?

With CPE210v3 transmit power is limited to 21 dBm when setting to PA.
OpenWrt 21.02.1, r16325-88151b8303

global
country PA: DFS-FCC
        (2400 - 2483 @ 40), (N/A, 36), (N/A)
        (5150 - 5250 @ 80), (N/A, 36), (N/A), AUTO-BW
        (5250 - 5350 @ 80), (N/A, 30), (N/A), AUTO-BW
        (5470 - 5725 @ 160), (N/A, 30), (N/A)
        (5725 - 5850 @ 80), (N/A, 36), (N/A)
        (57000 - 64000 @ 2160), (N/A, 43), (N/A)

So 36 dBm are allowed.

iwinfo wlan0 txpowerlist
   0 dBm (   1 mW)
   1 dBm (   1 mW)
   2 dBm (   1 mW)
   3 dBm (   1 mW)
   4 dBm (   2 mW)
   5 dBm (   3 mW)
   6 dBm (   3 mW)
   7 dBm (   5 mW)
   8 dBm (   6 mW)
   9 dBm (   7 mW)
  10 dBm (  10 mW)
  11 dBm (  12 mW)
  12 dBm (  15 mW)
  13 dBm (  19 mW)
  14 dBm (  25 mW)
  15 dBm (  31 mW)
  16 dBm (  39 mW)
  17 dBm (  50 mW)
  18 dBm (  63 mW)
  19 dBm (  79 mW)
  20 dBm ( 100 mW)
* 21 dBm ( 125 mW)
  22 dBm ( 158 mW)
  23 dBm ( 199 mW)
  24 dBm ( 251 mW)
  25 dBm ( 316 mW)
uci get wireless.radio0.txpower
25

So txpower should be 25 dBm. Same problem exists for Australia

iw reg get
global
country AU: DFS-ETSI
        (2400 - 2483 @ 40), (N/A, 36), (N/A)
        (5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
        (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
        (5470 - 5600 @ 80), (N/A, 27), (0 ms), DFS
        (5650 - 5730 @ 80), (N/A, 27), (0 ms), DFS
        (5730 - 5850 @ 80), (N/A, 36), (N/A)
        (57000 - 66000 @ 2160), (N/A, 43), (N/A), NO-OUTDOOR

Is this a bug in openwrt?

Aint the legal tx power always specified in W, or mW for this kind of transmitters?
dBm isn’t tx power to begin with, in radio it is the unit for transmission losses relative to W.

In this case it should be the allowed transmit power.

iw reg get
global
country CH: DFS-ETSI
        (2400 - 2483 @ 40), (N/A, 20), (N/A)
        (5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
        (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
        (5470 - 5725 @ 160), (N/A, 26), (0 ms), DFS
        (5725 - 5875 @ 80), (N/A, 13), (N/A)
        (57000 - 66000 @ 2160), (N/A, 40), (N/A)

For Switzerland for example. There are 100 mW allowed which is 20 dBm.

What does it say for Sweden (SE)?

iw reg get
global
country SE: DFS-ETSI
        (2400 - 2483 @ 40), (N/A, 20), (N/A)
        (5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
        (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
        (5470 - 5725 @ 160), (N/A, 26), (0 ms), DFS
        (5725 - 5875 @ 80), (N/A, 13), (N/A)
        (57000 - 66000 @ 2160), (N/A, 40), (N/A)

I can promise you that value is in mW and it is not allowed to transmit with more than 20mW here so for EU the list is right.

As far as I know Sweden is EU and thus 100 mW which is 20 dBm is allowed. See also https://w.wol.ph/2015/08/28/maximum-wifi-transmission-power-country/ there also Sweden is with 100 mW.

All radio equipment I know about has a specified tx power in W and on top of that you have losses in dBm mostly in the coax cable, connectors and antenna that will reduce the real tx power from the transmitter.

Output from device WR802N which transmits with 25 dBm. So 25 dBm is possible. That is why I'm asking if this is a bug with CPE210.

iwinfo phy0 txpowerlist
   0 dBm (   1 mW)
   1 dBm (   1 mW)
   2 dBm (   1 mW)
   3 dBm (   1 mW)
   4 dBm (   2 mW)
   5 dBm (   3 mW)
   6 dBm (   3 mW)
   7 dBm (   5 mW)
   8 dBm (   6 mW)
   9 dBm (   7 mW)
  10 dBm (  10 mW)
  11 dBm (  12 mW)
  12 dBm (  15 mW)
  13 dBm (  19 mW)
  14 dBm (  25 mW)
  15 dBm (  31 mW)
  16 dBm (  39 mW)
  17 dBm (  50 mW)
  18 dBm (  63 mW)
  19 dBm (  79 mW)
  20 dBm ( 100 mW)
  21 dBm ( 125 mW)
  22 dBm ( 158 mW)
  23 dBm ( 199 mW)
  24 dBm ( 251 mW)
* 25 dBm ( 316 mW)

Run iw list and see what's supported for the device.

On CPE210v3

iw list
Wiphy phy0
        wiphy index: 0
        max # scan SSIDs: 4
        max scan IEs length: 2257 bytes
        max # sched scan SSIDs: 0
        max # match sets: 0
        Retry short limit: 7
        Retry long limit: 4
        Coverage class: 0 (up to 0m)
        Device supports AP-side u-APSD.
        Device supports T-DLS.
        Available Antennas: TX 0x3 RX 0x3
        Configured Antennas: TX 0x3 RX 0x3
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * monitor
                 * mesh point
                 * P2P-client
                 * P2P-GO
                 * outside context of a BSS
        Band 1:
                Capabilities: 0x11ef
                        RX LDPC
                        HT20/HT40
                        SM Power Save disabled
                        RX HT20 SGI
                        RX HT40 SGI
                        TX STBC
                        RX STBC 1-stream
                        Max AMSDU length: 3839 bytes
                        DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 8 usec (0x06)
                HT TX/RX MCS rate indexes supported: 0-15
                Frequencies:
                        * 2412 MHz [1] (25.0 dBm)
                        * 2417 MHz [2] (25.0 dBm)
                        * 2422 MHz [3] (25.0 dBm)
                        * 2427 MHz [4] (25.0 dBm)
                        * 2432 MHz [5] (25.0 dBm)
                        * 2437 MHz [6] (25.0 dBm)
                        * 2442 MHz [7] (25.0 dBm)
                        * 2447 MHz [8] (25.0 dBm)
                        * 2452 MHz [9] (25.0 dBm)
                        * 2457 MHz [10] (25.0 dBm)
                        * 2462 MHz [11] (25.0 dBm)
                        * 2467 MHz [12] (25.0 dBm)
                        * 2472 MHz [13] (25.0 dBm)
                        * 2484 MHz [14] (disabled)
        valid interface combinations:
                 * #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1, #{ IBSS } <= 1,
                   total <= 2048, #channels <= 1, STA/AP BI must match, radar detect widths: { 20 MHz (no HT), 20 MHz, 40 MHz }

        HT Capability overrides:
                 * MCS: ff ff ff ff ff ff ff ff ff ff
                 * maximum A-MSDU length
                 * supported channel width
                 * short GI for 40 MHz
                 * max A-MPDU length exponent
                 * min MPDU start spacing
        max # scan plans: 1
        max scan plan interval: -1
        max scan plan iterations: 0
        Supported extended features:
                * [ RRM ]: RRM
                * [ CQM_RSSI_LIST ]: multiple CQM_RSSI_THOLD records
                * [ CONTROL_PORT_OVER_NL80211 ]: control port over nl80211
                * [ TXQS ]: FQ-CoDel-enabled intermediate TXQs
                * [ AIRTIME_FAIRNESS ]: airtime fairness scheduling
                * [ SCAN_RANDOM_SN ]: use random sequence numbers in scans
                * [ SCAN_MIN_PREQ_CONTENT ]: use probe request with only rate IEs in scans
                * [ CAN_REPLACE_PTK0 ]: can safely replace PTK 0 when rekeying
                * [ CONTROL_PORT_NO_PREAUTH ]: disable pre-auth over nl80211 control port support
                * [ DEL_IBSS_STA ]: deletion of IBSS station support
                * [ MULTICAST_REGISTRATIONS ]: mgmt frame registration for multicast
                * [ SCAN_FREQ_KHZ ]: scan on kHz frequency support
                * [ CONTROL_PORT_OVER_NL80211_TX_STATUS ]: tx status for nl80211 control port support

Did this already and as far as I understand this states that 25 dBm are supported.

What channel width are you using?

40 MHz

'radio0'
        option type 'mac80211'
        option hwmode '11g'
        option path 'platform/ahb/18100000.wmac'
        option cell_density '1'
        option noscan '1'
        option htmode 'HT40'
        option channel '1'
        option country 'PA'
        option txpower '30'

I believe at 20 MHz channel width.

Changed to 20 MHz channel width, still only 21 dBm.

WR802n is also configured to 40 MHz and 25 dBm work.