[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";
+};
+
+ðernet {
+ 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