[openwrt/openwrt] ramips: add support for Plasma Cloud PAX1800-Lite

LEDE Commits lede-commits at lists.infradead.org
Sat Oct 4 11:32:01 PDT 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/c7c54f313425d8f05203d141d056a104ee05c512

commit c7c54f313425d8f05203d141d056a104ee05c512
Author: Sven Eckelmann (Plasma Cloud) <se at simonwunderlich.de>
AuthorDate: Thu Oct 12 13:57:32 2023 +0200

    ramips: add support for Plasma Cloud PAX1800-Lite
    
    Plasma Cloud PAX1800-Lite is a dual-band Wi-Fi 6 router, based on MediaTek
    MT7621A + MT79x5D platform.
    
    Specifications:
    
    - SOC:      MT7621AT (880 MHz)
    - DRAM:     DDR3 448 MiB (Nanya NT5CC256M16DP-DI)
    - Flash:    2 MiB SPI NOR (S25FL016K) + 128 MB SPI NAND (W25N02KVZEIR)
    - Ethernet: 1x 10/100/1000 Mbps (SOC's built-in switch, with PoE+)
    - Wi-Fi:    2x2:2 2.4/5 GHz (MT7905DAN + MT7975DN)
                (MT7905DAN doesn't support background DFS scan/BT)
    - LED:      tri-color LED for status (red, blue, green)
    - Buttons:  1x (reset)
    - Antenna:  4x internal, non-detachable omnidirectional
    - UART:     1x 4-pin (2.54 mm pitch, marked as "3V3 G/RX GND W/TX")
    - Power:    12 V DC/2 A (DC jack)
    
    MAC addresses:
    
    WAN:     54:9C:27:xx:xx:00 (factory 0x3fff4, device label)
    2.4 GHz: 54:9C:27:xx:xx:02 (factory 0x4, device label +2)
    5 GHz:   54:9C:27:xx:xx:08 (factory 0xa, device label +8)
    
    Flashing instructions:
    ======================
    
    Various methods can be used to install the actual image on the flash.
    Two easy ones are:
    
    ap51-flash
    ----------
    
    The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be
    used to transfer the image to the u-boot when the device boots up.
    
    initramfs from TFTP
    -------------------
    
    The serial console (115200 8N1) must be used to access the u-boot shell
    during bootup. It can then be used to first boot up the initramfs image
    from a TFTP server (here with the IP 192.168.1.21):
    
        setenv serverip 192.168.1.21
        setenv ipaddr 192.168.1.1
        tftpboot 0x83001000 <filename-of-initramfs-kernel>.bin && bootm $fileaddr
    
    The actual sysupgrade image can then be transferred (on the LAN port) to the
    device via
    
        scp <filename-of-squashfs-sysupgrade>.bin root at 192.168.1.1:/tmp/
    
    On the device, the sysupgrade must then be started using
    
        sysupgrade -n /tmp/<filename-of-squashfs-sysupgrade>.bin
    
    Signed-off-by: Sven Eckelmann (Plasma Cloud) <se at simonwunderlich.de>
    Link: https://github.com/openwrt/openwrt/pull/20152
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/image-commands.mk                          |   13 +
 .../boot/uboot-tools/uboot-envtools/files/ramips   |    1 +
 scripts/nand-fwupgradecfg-gen.sh                   |   61 +
 .../ramips/dts/mt7621_plasmacloud_pax1800-lite.dts | 2229 ++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |   15 +
 .../mt7621/base-files/etc/board.d/02_network       |    1 +
 .../base-files/lib/upgrade/dualboot_datachk.sh     |   67 +
 .../mt7621/base-files/lib/upgrade/platform.sh      |    3 +
 target/linux/ramips/mt7621/config-6.12             |    1 +
 9 files changed, 2391 insertions(+)

diff --git a/include/image-commands.mk b/include/image-commands.mk
index 27a85d770e..7b2b346aa6 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -640,6 +640,19 @@ define Build/openmesh-image
 		"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
 endef
 
+define Build/dualboot-datachk-nand-image
+	$(TOPDIR)/scripts/nand-fwupgradecfg-gen.sh \
+		"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \
+		"$@-fwupgrade.cfg" \
+		"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" \
+		"$(call param_get_default,rootfs,$(1),$@)"
+	$(TOPDIR)/scripts/combined-ext-image.sh \
+		"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" "$@" \
+		"$@-fwupgrade.cfg" "fwupgrade.cfg" \
+		"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" "kernel" \
+		"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
+endef
+
 define Build/pad-extra
 	dd if=/dev/zero bs=$(1) count=1 >> $@
 endef
diff --git a/package/boot/uboot-tools/uboot-envtools/files/ramips b/package/boot/uboot-tools/uboot-envtools/files/ramips
index 49a2b90f73..5d6cbe3936 100644
--- a/package/boot/uboot-tools/uboot-envtools/files/ramips
+++ b/package/boot/uboot-tools/uboot-envtools/files/ramips
@@ -32,6 +32,7 @@ allnet,all0256n-4m|\
 allnet,all0256n-8m|\
 allnet,all5002|\
 asiarf,ap7621-004-v3|\
+plasmacloud,pax1800-lite|\
 yuncore,ax820)
 	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
 	;;
diff --git a/scripts/nand-fwupgradecfg-gen.sh b/scripts/nand-fwupgradecfg-gen.sh
new file mode 100755
index 0000000000..862cd94603
--- /dev/null
+++ b/scripts/nand-fwupgradecfg-gen.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+#
+# Copyright (C) 2011 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+usage() {
+	echo "Usage: $0 <TARGET> <out file path> <kernel path> <rootfs path>"
+	exit 1
+}
+
+[ "$#" -lt 4 ] && usage
+
+CE_TYPE=$1
+CFG_OUT=$2
+KERNEL_PATH=$3
+ROOTFS_PATH=$4
+
+case $CE_TYPE in
+PAX1800-Lite)
+	EXTRA_SETENV=""
+	;;
+*)
+	echo "Error - unsupported ce type: $CE_TYPE"
+	exit 1
+	;;
+esac
+
+# kernel calculation
+KERNEL_MD5=$(mkhash md5 $KERNEL_PATH)
+KERNEL_SHA256=$(mkhash sha256 $KERNEL_PATH)
+KERNEL_SIZE=$(stat -c%s "$KERNEL_PATH")
+KERNEL_CHECK_SIZE=$(printf '0x%x' $KERNEL_SIZE)
+
+# rootfs calculation
+ROOTFS_MD5=$(mkhash md5 $ROOTFS_PATH)
+ROOTFS_SHA256=$(mkhash sha256 $ROOTFS_PATH)
+ROOTFS_SIZE=$(stat -c%s "$ROOTFS_PATH")
+ROOTFS_CHECK_SIZE=$(printf '0x%x' $ROOTFS_SIZE)
+
+cat << EOF > $CFG_OUT
+[kernel]
+filename=kernel
+md5sum=$KERNEL_MD5
+filemd5sum=$KERNEL_MD5
+filesha256sum=$KERNEL_SHA256
+checksize=$KERNEL_CHECK_SIZE
+ubi=1
+cmd_success=setenv bootseq 1,2; $EXTRA_SETENV; saveenv
+
+[rootfs]
+filename=rootfs
+md5sum=$ROOTFS_MD5
+filemd5sum=$ROOTFS_MD5
+filesha256sum=$ROOTFS_SHA256
+checksize=$ROOTFS_CHECK_SIZE
+ubi=1
+cmd_success=setenv bootseq 1,2; $EXTRA_SETENV; saveenv
+EOF
diff --git a/target/linux/ramips/dts/mt7621_plasmacloud_pax1800-lite.dts b/target/linux/ramips/dts/mt7621_plasmacloud_pax1800-lite.dts
new file mode 100644
index 0000000000..2236bdf7a0
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_plasmacloud_pax1800-lite.dts
@@ -0,0 +1,2229 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	compatible = "plasmacloud,pax1800-lite", "mediatek,mt7621-soc";
+	model = "Plasma Cloud PAX1800-Lite";
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	aliases {
+		led-boot = &led_status_green;
+		led-failsafe = &led_status_green;
+		led-running = &led_status_green;
+		led-upgrade = &led_status_green;
+		label-mac-device = &gmac1;
+	};
+
+	gpio_export {
+		compatible = "gpio-export";
+		#size-cells = <0>;
+
+		dc_in {
+			gpio-export,name = "dc_in";
+			gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
+		};
+
+		poe_in {
+			gpio-export,name = "poe_in";
+			gpios = <&gpio 29 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		status_blue {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+		};
+
+		led_status_green: status_green {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		status_red {
+			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	watchdog {
+		compatible = "linux,wdt-gpio";
+		gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+		hw_algo = "toggle";
+		/* hw_margin_ms is actually 300s but driver limits it to 60s */
+		hw_margin_ms = <60000>;
+		always-running;
+	};
+};
+
+&i2c {
+	status = "okay";
+
+	g751: g751 at 48 {
+		compatible = "gmt,g751";
+		reg = <0x48>;
+		status = "okay";
+	};
+};
+
+&spi0 {
+	status = "okay";
+	num-cs = <2>;
+
+	flash at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <20000000>;
+		reg = <0>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "uboot";
+				reg = <0x00000 0x80000>;
+			};
+
+			partition at 80000 {
+				label = "uboot_env";
+				reg = <0x80000 0x10000>;
+			};
+
+			partition at 90000 {
+				label = "factory";
+				reg = <0x90000 0x80000>;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0xe00>;
+					};
+
+					macaddr_factory_3fff4: macaddr at 3fff4 {
+						reg = <0x3fff4 0x6>;
+					};
+				};
+			};
+
+			partition at 110000 {
+				label = "keys";
+				reg = <0x110000 0x10000>;
+			};
+
+			/* 0x120000 - 0x200000 unused */
+		};
+	};
+
+	flash at 1 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "spi-nand";
+		spi-max-frequency = <20000000>;
+		reg = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "firmware1";
+				reg = <0x0 0x4000000>;
+				compatible = "linux,ubi";
+			};
+
+			partition at 4000000 {
+				label = "firmware2";
+				reg = <0x4000000 0x4000000>;
+				compatible = "linux,ubi";
+			};
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi0: wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+
+		nvmem-cells = <&eeprom_factory_0>;
+		nvmem-cell-names = "eeprom";
+
+		mediatek,disable-radar-background;
+
+		power-limits {
+			r0 {
+				country = "CA";
+
+				txpower-2g {
+					b0 {
+						channels = <1 1>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <36 36 36 36 36 36 36 36>;
+						rates-mcs =
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 34 34 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <36 36 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <36 36 60 60>;
+						paths-ru =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b1 {
+						channels = <2 2>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <37 37 37 37 37 37 37 37>;
+						rates-mcs =
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 34 34 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <37 37 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <37 37 60 60>;
+						paths-ru =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b2 {
+						channels = <3 6>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b3 {
+						channels = <7 9>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b4 {
+						channels = <10 10>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <38 38 38 38 38 38 38 38>;
+						rates-mcs =
+							/bits/ 8 <1 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 36 36 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <38 38 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <38 38 60 60>;
+						paths-ru =
+							/bits/ 8 <4 36 36 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 36 36 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b5 {
+						channels = <11 11>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <35 35 35 35 35 35 35 35>;
+						rates-mcs =
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <35 35 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <35 35 60 60>;
+						paths-ru =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b6 {
+						channels = <12 14>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+				};
+				txpower-5g {
+					b0 {
+						channels = <184 196>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b1 {
+						channels = <8 16>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b2 {
+						channels = <36 44>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <18 18 18 18 18 18 18 18>;
+						rates-mcs =
+							/bits/ 8 <1 20 20 20 20 20 20 20 20 20 20>,
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 20 20 20 20 20 20 20 20 20 20 20 20>,
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <18 18 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <18 18 60 60>;
+						paths-ru =
+							/bits/ 8 <4 20 20 60 60 20 60 60 60 60 60>,
+							/bits/ 8 <1 24 24 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 25 25 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 17 17 60 60 20 60 60 60 60 60>,
+							/bits/ 8 <1 18 18 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 18 18 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b3 {
+						channels = <48 48>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <18 18 18 18 18 18 18 18>;
+						rates-mcs =
+							/bits/ 8 <1 19 19 19 19 19 19 19 19 19 19>,
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 19 19 19 19 19 19 19 19 19 19 19 19>,
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <18 18 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <18 18 60 60>;
+						paths-ru =
+							/bits/ 8 <4 19 19 60 60 19 60 60 60 60 60>,
+							/bits/ 8 <1 24 24 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 25 25 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 17 17 60 60 19 60 60 60 60 60>,
+							/bits/ 8 <1 18 18 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 18 18 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b4 {
+						channels = <52 60>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <24 24 24 24 24 24 24 24>;
+						rates-mcs =
+							/bits/ 8 <3 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <6 24 24 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <24 24 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <24 24 60 60>;
+						paths-ru =
+							/bits/ 8 <6 24 24 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 18 18 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 17 17 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 18 18 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b5 {
+						channels = <64 64>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <24 24 24 24 24 24 24 24>;
+						rates-mcs =
+							/bits/ 8 <1 23 23 23 23 23 23 23 23 23 23>,
+							/bits/ 8 <2 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 23 23 23 23 23 23 23 23 23 23 23 23>,
+							/bits/ 8 <2 24 24 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <24 24 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <24 24 60 60>;
+						paths-ru =
+							/bits/ 8 <4 23 23 60 60 23 60 60 60 60 60>,
+							/bits/ 8 <2 24 24 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 18 18 60 60 23 60 60 60 60 60>,
+							/bits/ 8 <1 17 17 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 18 18 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b6 {
+						channels = <68 96>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b7 {
+						channels = <100 100>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <32 32 32 32 32 32 32 32>;
+						rates-mcs =
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <32 32 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <32 32 60 60>;
+						paths-ru =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b8 {
+						channels = <104 104>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <3 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <6 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <6 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <6 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b9 {
+						channels = <108 112>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b10 {
+						channels = <116 128>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 32 32 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b11 {
+						channels = <132 136>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 30 30 30 30 30 30 30 30 30 30>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 30 30 30 30 30 30 30 30 30 30 30 30>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 30 30 60 60 30 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 30 30 60 60 30 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b12 {
+						channels = <140 140>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <29 29 29 29 29 29 29 29>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <29 29 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <29 29 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b13 {
+						channels = <144 144>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <30 30 30 30 30 30 30 30>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <30 30 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <30 30 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 31 31 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b14 {
+						channels = <149 149>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <39 39 39 39 39 39 39 39>;
+						rates-mcs =
+							/bits/ 8 <2 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <5 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <39 39 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <39 39 60 60>;
+						paths-ru =
+							/bits/ 8 <5 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <5 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b15 {
+						channels = <153 161>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b16 {
+						channels = <165 165>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <39 39 39 39 39 39 39 39>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <39 39 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <39 39 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b17 {
+						channels = <169 181>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+				};
+			};
+
+			r1 {
+				regdomain = "FCC";
+
+				txpower-2g {
+					b0 {
+						channels = <1 1>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <36 36 36 36 36 36 36 36>;
+						rates-mcs =
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 34 34 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <36 36 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <36 36 60 60>;
+						paths-ru =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b1 {
+						channels = <2 2>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <37 37 37 37 37 37 37 37>;
+						rates-mcs =
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 34 34 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <37 37 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <37 37 60 60>;
+						paths-ru =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b2 {
+						channels = <3 6>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b3 {
+						channels = <7 9>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b4 {
+						channels = <10 10>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <38 38 38 38 38 38 38 38>;
+						rates-mcs =
+							/bits/ 8 <1 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 36 36 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <38 38 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <38 38 60 60>;
+						paths-ru =
+							/bits/ 8 <4 36 36 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 36 36 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b5 {
+						channels = <11 11>;
+						rates-cck =
+							/bits/ 8 <40 40 40 40>;
+						rates-ofdm =
+							/bits/ 8 <35 35 35 35 35 35 35 35>;
+						rates-mcs =
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm =
+							/bits/ 8 <35 35 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <35 35 60 60>;
+						paths-ru =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b6 {
+						channels = <12 14>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+				};
+				txpower-5g {
+					b0 {
+						channels = <184 196>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b1 {
+						channels = <8 16>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b2 {
+						channels = <36 36>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <38 38 38 38 38 38 38 38>;
+						rates-mcs =
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <38 38 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <38 38 60 60>;
+						paths-ru =
+							/bits/ 8 <4 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b3 {
+						channels = <40 40>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <1 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 39 39 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 34 34 34 34 34 34 34 34 34 34 34 34>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 34 34 60 60 34 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b4 {
+						channels = <44 44>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <2 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <5 39 39 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <5 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <5 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b5 {
+						channels = <48 48>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <40 40 40 40 40 40 40 40>;
+						rates-mcs =
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 39 39 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b6 {
+						channels = <52 52>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 31 31 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b7 {
+						channels = <56 56>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 31 31 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 31 31 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b8 {
+						channels = <60 64>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 28 28 28 28 28 28 28 28 28 28 28 28>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 31 31 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <1 31 31 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 28 28 60 60 28 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b9 {
+						channels = <68 96>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b10 {
+						channels = <100 100>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <32 32 32 32 32 32 32 32>;
+						rates-mcs =
+							/bits/ 8 <1 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 33 33 33 33 33 33 33 33 33 33 33 33>,
+							/bits/ 8 <2 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <32 32 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <32 32 60 60>;
+						paths-ru =
+							/bits/ 8 <4 33 33 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 33 60 60 60 60 60>,
+							/bits/ 8 <2 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b11 {
+						channels = <104 104>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <3 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <6 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <6 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <6 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b12 {
+						channels = <108 112>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b13 {
+						channels = <116 128>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <2 37 37 37 37 37 37 37 37 37 37 37 37>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 37 37 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <2 32 32 60 60 37 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b14 {
+						channels = <132 136>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <31 31 31 31 31 31 31 31>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 30 30 30 30 30 30 30 30 30 30>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 30 30 30 30 30 30 30 30 30 30 30 30>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <31 31 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 30 30 60 60 30 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 30 30 60 60 30 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b15 {
+						channels = <140 140>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <29 29 29 29 29 29 29 29>;
+						rates-mcs =
+							/bits/ 8 <1 30 30 30 30 30 30 30 30 30 30>,
+							/bits/ 8 <1 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 30 30 30 30 30 30 30 30 30 30 30 30>,
+							/bits/ 8 <1 36 36 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <29 29 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <29 29 60 60>;
+						paths-ru =
+							/bits/ 8 <4 30 30 60 60 30 60 60 60 60 60>,
+							/bits/ 8 <1 36 36 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 30 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b16 {
+						channels = <144 144>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <30 30 30 30 30 30 30 30>;
+						rates-mcs =
+							/bits/ 8 <1 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 32 32 32 32 32 32 32 32 32 32 32 32>,
+							/bits/ 8 <1 36 36 36 36 36 36 36 36 36 36 36 36>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <30 30 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <30 30 60 60>;
+						paths-ru =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 36 36 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 32 32 60 60 32 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 36 60 60 60 60 60>,
+							/bits/ 8 <1 37 37 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b17 {
+						channels = <149 149>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <39 39 39 39 39 39 39 39>;
+						rates-mcs =
+							/bits/ 8 <2 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <5 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <39 39 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <39 39 60 60>;
+						paths-ru =
+							/bits/ 8 <5 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <5 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b18 {
+						channels = <153 161>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <40 40 38 38 38 38 37 36>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b19 {
+						channels = <165 165>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <39 39 39 39 39 39 39 39>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <39 39 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <39 39 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b20 {
+						channels = <169 181>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+				};
+			};
+
+			r2 {
+				regdomain = "ETSI";
+
+				txpower-2g {
+					b0 {
+						channels = <1 1>;
+						rates-cck =
+							/bits/ 8 <24 24 24 24>;
+						rates-ofdm =
+							/bits/ 8 <26 26 26 26 26 26 26 26>;
+						rates-mcs =
+							/bits/ 8 <1 26 26 26 26 26 26 26 26 26 26>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 26 26 26 26 26 26 26 26 26 26 26 26>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <24 24 60 60>;
+						paths-ofdm =
+							/bits/ 8 <26 26 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <20 20 60 60>;
+						paths-ru =
+							/bits/ 8 <1 26 26 60 60 26 60 60 60 60 60>,
+							/bits/ 8 <1 26 26 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 26 26 60 60 26 60 60 60 60 60>,
+							/bits/ 8 <1 25 25 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <5 19 19 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b1 {
+						channels = <2 12>;
+						rates-cck =
+							/bits/ 8 <24 24 24 24>;
+						rates-ofdm =
+							/bits/ 8 <25 25 25 25 25 25 25 25>;
+						rates-mcs =
+							/bits/ 8 <2 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <5 25 25 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <24 24 60 60>;
+						paths-ofdm =
+							/bits/ 8 <25 25 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <19 19 60 60>;
+						paths-ru =
+							/bits/ 8 <5 25 25 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 20 20 60 60 26 60 60 60 60 60>,
+							/bits/ 8 <1 19 19 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b2 {
+						channels = <13 13>;
+						rates-cck =
+							/bits/ 8 <24 24 24 24>;
+						rates-ofdm =
+							/bits/ 8 <25 25 25 25 25 25 25 25>;
+						rates-mcs =
+							/bits/ 8 <1 26 26 26 26 26 26 26 26 26 26>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 26 26 26 26 26 26 26 26 26 26 26 26>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <24 24 60 60>;
+						paths-ofdm =
+							/bits/ 8 <25 25 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <19 19 60 60>;
+						paths-ru =
+							/bits/ 8 <1 26 26 60 60 26 60 60 60 60 60>,
+							/bits/ 8 <1 26 26 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 26 26 60 60 26 60 60 60 60 60>,
+							/bits/ 8 <1 25 25 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 20 20 60 60 26 60 60 60 60 60>,
+							/bits/ 8 <1 19 19 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b3 {
+						channels = <14 14>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+				};
+				txpower-5g {
+					b0 {
+						channels = <184 196>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b1 {
+						channels = <8 16>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b2 {
+						channels = <36 48>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <24 24 24 24 24 24 24 24>;
+						rates-mcs =
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <2 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 24 24 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <2 25 25 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <24 24 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <18 18 60 60>;
+						paths-ru =
+							/bits/ 8 <4 24 24 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <2 25 25 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <6 19 19 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b3 {
+						channels = <52 64>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <23 23 25 25 25 25 25 25>;
+						rates-mcs =
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 24 24 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 25 25 25 25 25 25 25 25 25 25 25 25>,
+							/bits/ 8 <1 24 24 24 24 24 24 24 24 24 24 24 24>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <23 23 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <17 17 60 60>;
+						paths-ru =
+							/bits/ 8 <4 24 24 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 25 25 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 24 24 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 18 18 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 19 19 60 60 25 60 60 60 60 60>,
+							/bits/ 8 <1 18 18 60 60 24 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b4 {
+						channels = <68 96>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b5 {
+						channels = <100 128>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <38 38 38 38 38 38 38 38>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 39 39 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <38 38 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <32 32 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 33 33 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <2 32 32 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b6 {
+						channels = <132 136>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <38 38 38 38 38 38 38 38>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 39 39 39 39 39 39 39 39 39 39 39 39>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <38 38 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <32 32 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 39 39 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 33 33 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <1 32 32 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <2 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b7 {
+						channels = <140 140>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <37 37 37 37 37 37 37 37>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <37 37 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <31 31 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 33 33 60 60 39 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b8 {
+						channels = <144 144>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b9 {
+						channels = <149 149>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <39 39 39 39 39 39 39 39>;
+						rates-mcs =
+							/bits/ 8 <2 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <5 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <39 39 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <39 39 60 60>;
+						paths-ru =
+							/bits/ 8 <5 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <5 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b10 {
+						channels = <153 161>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <40 40 38 38 38 38 37 36>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 40 40 40 40 40 40 40 40 40 40 40 40>,
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <40 40 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <40 40 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 40 40 60 60 40 60 60 60 60 60>,
+							/bits/ 8 <1 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <1 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b11 {
+						channels = <165 165>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <39 39 39 39 39 39 39 39>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <39 39 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <39 39 60 60>;
+						paths-ru =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <4 38 38 60 60 38 60 60 60 60 60>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b12 {
+						channels = <169 169>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <39 39 39 39 39 39 39 39>;
+						rates-mcs =
+							/bits/ 8 <1 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <4 38 38 38 38 38 38 38 38 38 38 38 38>,
+							/bits/ 8 <3 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+					b13 {
+						channels = <173 181>;
+						rates-cck =
+							/bits/ 8 <60 60 60 60>;
+						rates-ofdm =
+							/bits/ 8 <60 60 60 60 60 60 60 60>;
+						rates-mcs =
+							/bits/ 8 <4 60 60 60 60 60 60 60 60 60 60>;
+						rates-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60 60 60>;
+						paths-cck =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm =
+							/bits/ 8 <60 60 60 60>;
+						paths-ofdm-bf =
+							/bits/ 8 <60 60 60 60>;
+						paths-ru =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+						paths-ru-bf =
+							/bits/ 8 <7 60 60 60 60 60 60 60 60 60 60>;
+					};
+				};
+			};
+		};
+	};
+};
+
+&xhci {
+	status = "okay";
+};
+
+&ethernet {
+	pinctrl-0 = <&mdio_pins>;
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_3fff4 0>;
+	nvmem-cell-names = "mac-address";
+	label = "dsa";
+};
+
+&switch0 {
+	ports {
+		port at 4 {
+			status = "okay";
+			label = "lan";
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		/* for LEDs + Button + watchdog */
+		groups = "uart3", "jtag", "wdt", "rgmii2";
+		function = "gpio";
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 744d8c6279..b8a7d2d220 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2528,6 +2528,21 @@ define Device/planex_vr500
 endef
 TARGET_DEVICES += planex_vr500
 
+define Device/plasmacloud_pax1800-lite
+  $(Device/nand)
+  IMAGE_SIZE := 60512k
+  DEVICE_VENDOR := Plasma Cloud
+  DEVICE_MODEL := PAX1800-Lite
+  DEVICE_DTS_CONFIG := config at plasmacloud.pax1800-lite
+  DEVICE_PACKAGES := kmod-mt7915-firmware kmod-usb3 kmod-hwmon-lm75
+  KERNEL_IN_UBI := 1
+  IMAGES += factory.bin
+  KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | pad-to $$(BLOCKSIZE)
+  IMAGE/factory.bin := append-rootfs | pad-to 1k | dualboot-datachk-nand-image ce_type=PAX1800-Lite
+  IMAGE/sysupgrade.bin := append-rootfs | pad-to 1k | sysupgrade-tar rootfs=$$$$@ | append-metadata
+endef
+TARGET_DEVICES += plasmacloud_pax1800-lite
+
 define Device/raisecom_msg1500-x-00
   $(Device/nand)
   $(Device/uimage-lzma-loader)
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
index b55eb892e8..81fea421c7 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -51,6 +51,7 @@ ramips_setup_interfaces()
 	netgear,eax12|\
 	netgear,ex6150|\
 	netgear,wax214v2|\
+	plasmacloud,pax1800-lite|\
 	sercomm,na502|\
 	sercomm,na502s|\
 	thunder,timecloud|\
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/dualboot_datachk.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/dualboot_datachk.sh
new file mode 100644
index 0000000000..d57c118c66
--- /dev/null
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/dualboot_datachk.sh
@@ -0,0 +1,67 @@
+# The U-Boot loader with the datachk patchset for dualbooting requires image
+# sizes and checksums to be provided in the U-Boot environment.
+# The devices come with 2 main partitions - while one is active
+# sysupgrade will flash the other. The boot order is changed to boot the
+# newly flashed partition. If the new partition can't be booted due to
+# upgrade failures the previously used partition is loaded.
+
+platform_do_upgrade_dualboot_datachk() {
+	local next_boot_part=1
+	local tar_file="$1"
+	local bootseq
+
+	local setenv_script="/tmp/fw_env_upgrade"
+
+	if [ "$(grep 'ubi.mtd=firmware1' /proc/cmdline)" ];  then
+		next_boot_part=2
+		bootseq="2,1"
+	else
+		next_boot_part=1
+		bootseq="1,2"
+	fi
+
+	local board_dir="$(tar tf "${tar_file}" | grep -m 1 '^sysupgrade-.*/$')"
+	board_dir="${board_dir%/}"
+
+	local kernel_length="$(tar xf "${tar_file}" "${board_dir}/kernel" -O | wc -c)"
+	local rootfs_length="$(tar xf "${tar_file}" "${board_dir}/root" -O | wc -c)"
+
+	local kernel_md5="$(tar xf "${tar_file}" "${board_dir}/kernel" -O | md5sum)"
+	kernel_md5="${kernel_md5%% *}"
+
+	local rootfs_md5="$(tar xf "${tar_file}" "${board_dir}/root" -O | md5sum)"
+	rootfs_md5="${rootfs_md5%% *}"
+
+	CI_UBIPART="firmware${next_boot_part}"
+	CI_KERNPART="kernel"
+	CI_ROOTPART="rootfs"
+
+	nand_upgrade_prepare_ubi "${rootfs_length}" "squashfs" "$kernel_length" "0"
+
+	local ubidev="$(nand_find_ubi "${CI_UBIPART}")"
+
+	local kern_ubivol="$(nand_find_volume "${ubidev}" "${CI_KERNPART}")"
+	tar xf "${tar_file}" "${board_dir}/kernel" -O | \
+		ubiupdatevol "/dev/${kern_ubivol}" -s "${kernel_length}" -
+
+	local root_ubivol="$(nand_find_volume "${ubidev}" "${CI_ROOTPART}")"
+	tar xf "${tar_file}" "${board_dir}/root" -O | \
+		ubiupdatevol "/dev/${root_ubivol}" -s "${rootfs_length}" -
+
+	[ -f "${UPGRADE_BACKUP}" ] && nand_restore_config "${UPGRADE_BACKUP}"
+
+	# write new new uboot-env
+	printf "bootseq ${bootseq}\n" > "${setenv_script}"
+
+	printf "kernel_%i_size 0x%08x\n" "${next_boot_part}" "${kernel_length}" >> "${setenv_script}"
+	printf "kernel_%i_checksum %s\n" "${next_boot_part}" "${kernel_md5}" >> "${setenv_script}"
+
+	printf "rootfs_%i_size 0x%08x\n" "${next_boot_part}" "${rootfs_length}" >> "${setenv_script}"
+	printf "rootfs_%i_checksum %s\n" "${next_boot_part}" "${rootfs_md5}" >> "${setenv_script}"
+
+	mkdir -p /var/lock
+	fw_setenv -s "${setenv_script}" || {
+		echo "failed to update U-Boot environment"
+		return 1
+	}
+}
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index a1f14f9d78..679b2c0f01 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -185,6 +185,9 @@ platform_do_upgrade() {
 		iodata_mstc_set_flag "bootnum" "persist" "0x4" "1,2" "1"
 		nand_do_upgrade "$1"
 		;;
+	plasmacloud,pax1800-lite)
+		platform_do_upgrade_dualboot_datachk "$1"
+		;;
 	tplink,er605-v2)
 		echo "Upgrading tplink,er605-v2"
 		CI_UBIPART="firmware"
diff --git a/target/linux/ramips/mt7621/config-6.12 b/target/linux/ramips/mt7621/config-6.12
index fd6f93afca..d5ed778593 100644
--- a/target/linux/ramips/mt7621/config-6.12
+++ b/target/linux/ramips/mt7621/config-6.12
@@ -164,6 +164,7 @@ CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_ROUTERBOOT_PARTS=y
 CONFIG_MTD_SERCOMM_PARTS=y
+CONFIG_MTD_SPI_NAND=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
 CONFIG_MTD_SPLIT_FIT_FW=y




More information about the lede-commits mailing list