It worked! Now it's showing 20dBm on 5Ghz. Thank you very much.
I had to adapt it to make it work with the latest openwrt git (the dtsi files changed a bit, now they are "partition@" instead of "partition at "), I leave my patch here so anyone can use it if they want:
----------- target/linux/ramips/dts/mt7621_netgear_sercomm_bzv.dtsi -----------
index eee6c535e1..19372dd926 100644
@@ -109,48 +109,209 @@
status = "okay";
partitions {
- compatible = "fixed-partitions";
+ compatible = "sercomm,sc-partitions", "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x100000>;
+ scpart-id = <0>;
read-only;
};
partition@100000 {
label = "SC PART_MAP";
reg = <0x100000 0x100000>;
+ scpart-id = <1>;
read-only;
};
partition@200000 {
label = "kernel";
reg = <0x200000 0x400000>;
+ scpart-id = <2>;
};
partition@600000 {
label = "ubi";
reg = <0x600000 0x2800000>;
+ scpart-id = <3>;
};
partition@2e00000 {
- label = "reserved0";
- reg = <0x2e00000 0x1800000>;
+ label = "English UI";
+ reg = <0x2e00000 0x200000>;
+ scpart-id = <4>;
+ read-only;
+ };
+
+ partition@3000000 {
+ label = "ML1";
+ reg = <0x3000000 0x200000>;
+ scpart-id = <5>;
+ read-only;
+ };
+
+ partition@3200000 {
+ label = "ML2";
+ reg = <0x3200000 0x200000>;
+ scpart-id = <6>;
+ read-only;
+ };
+
+ partition@3400000 {
+ label = "ML3";
+ reg = <0x3400000 0x200000>;
+ scpart-id = <7>;
+ read-only;
+ };
+
+ partition@3600000 {
+ label = "ML4";
+ reg = <0x3600000 0x200000>;
+ scpart-id = <8>;
+ read-only;
+ };
+
+ partition@3800000 {
+ label = "ML5";
+ reg = <0x3800000 0x200000>;
+ scpart-id = <9>;
+ read-only;
+ };
+
+ partition@3a00000 {
+ label = "ML6";
+ reg = <0x3a00000 0x200000>;
+ scpart-id = <10>;
+ read-only;
+ };
+
+ partition@3c00000 {
+ label = "ML7";
+ reg = <0x3c00000 0x200000>;
+ scpart-id = <11>;
+ read-only;
+ };
+
+ partition@3e00000 {
+ label = "ML8";
+ reg = <0x3e00000 0x200000>;
+ scpart-id = <12>;
+ read-only;
+ };
+
+ partition@4000000 {
+ label = "ML9";
+ reg = <0x4000000 0x200000>;
+ scpart-id = <13>;
+ read-only;
+ };
+
+ partition@4200000 {
+ label = "ML10";
+ reg = <0x4200000 0x200000>;
+ scpart-id = <14>;
+ read-only;
+ };
+
+ partition@4400000 {
+ label = "ML11";
+ reg = <0x4400000 0x200000>;
+ scpart-id = <15>;
read-only;
- };
+ };
factory: partition@4600000 {
label = "factory";
reg = <0x4600000 0x200000>;
+ scpart-id = <16>;
read-only;
};
- partition@4800000 {
- label = "reserved1";
- reg = <0x4800000 0x3800000>;
- read-only;
- };
+ partition@4800000 {
+ label = "SC Private Data";
+ reg = <0x4800000 0x200000>;
+ scpart-id = <17>;
+ read-only;
+ };
+
+ partition@4a00000 {
+ label = "POT";
+ reg = <0x4a00000 0x200000>;
+ scpart-id = <18>;
+ read-only;
+ };
+
+ partition@4c00000 {
+ label = "Traffic Meter";
+ reg = <0x4c00000 0x200000>;
+ scpart-id = <19>;
+ read-only;
+ };
+
+ partition@4e00000 {
+ label = "SC PID";
+ reg = <0x4e00000 0x200000>;
+ scpart-id = <20>;
+ read-only;
+ };
+
+ partition@5000000 {
+ label = "SC Nvram";
+ reg = <0x5000000 0x200000>;
+ scpart-id = <21>;
+ read-only;
+ };
+
+ partition@5200000 {
+ label = "Ralink Nvram";
+ reg = <0x5200000 0x200000>;
+ scpart-id = <22>;
+ read-only;
+ };
+
+ partition@5400000 {
+ label = "reserved0";
+ reg = <0x5400000 0x200000>;
+ scpart-id = <23>;
+ read-only;
+ };
+
+ partition@5600000 {
+ label = "reserved1";
+ reg = <0x5600000 0x200000>;
+ scpart-id = <24>;
+ read-only;
+ };
+
+ partition@5800000 {
+ label = "reserved2";
+ reg = <0x5800000 0x200000>;
+ scpart-id = <25>;
+ read-only;
+ };
+
+ partition@5a00000 {
+ label = "reserved3";
+ reg = <0x5a00000 0x200000>;
+ scpart-id = <26>;
+ read-only;
+ };
+
+ partition@5c00000 {
+ label = "reserved4";
+ reg = <0x5c00000 0x200000>;
+ scpart-id = <27>;
+ read-only;
+ };
+
+ partition@5e00000 {
+ label = "reserved5";
+ reg = <0x5e00000 0x2180000>;
+ scpart-id = <28>;
+ read-only;
+ };
};
};
----------- target/linux/ramips/dts/mt7621_netgear_sercomm_chj.dtsi -----------
index 0de2167e0a..eb9c5934e3 100644
@@ -137,48 +137,209 @@
status = "okay";
partitions {
- compatible = "fixed-partitions";
+ compatible = "sercomm,sc-partitions", "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x100000>;
+ scpart-id = <0>;
read-only;
};
partition@100000 {
label = "SC PART_MAP";
reg = <0x100000 0x100000>;
+ scpart-id = <1>;
read-only;
};
partition@200000 {
label = "kernel";
reg = <0x200000 0x400000>;
+ scpart-id = <2>;
};
partition@600000 {
label = "ubi";
reg = <0x600000 0x2800000>;
+ scpart-id = <3>;
};
partition@2e00000 {
- label = "reserved0";
- reg = <0x2e00000 0x1800000>;
- read-only;
- };
-
- factory: partition@4600000 {
- label = "factory";
- reg = <0x4600000 0x200000>;
- read-only;
- };
-
- partition@4800000 {
- label = "reserved1";
- reg = <0x4800000 0x3800000>;
- read-only;
- };
+ label = "English UI";
+ reg = <0x2e00000 0x200000>;
+ scpart-id = <4>;
+ read-only;
+ };
+
+ partition@3000000 {
+ label = "ML1";
+ reg = <0x3000000 0x200000>;
+ scpart-id = <5>;
+ read-only;
+ };
+
+ partition@3200000 {
+ label = "ML2";
+ reg = <0x3200000 0x200000>;
+ scpart-id = <6>;
+ read-only;
+ };
+
+ partition@3400000 {
+ label = "ML3";
+ reg = <0x3400000 0x200000>;
+ scpart-id = <7>;
+ read-only;
+ };
+
+ partition@3600000 {
+ label = "ML4";
+ reg = <0x3600000 0x200000>;
+ scpart-id = <8>;
+ read-only;
+ };
+
+ partition@3800000 {
+ label = "ML5";
+ reg = <0x3800000 0x200000>;
+ scpart-id = <9>;
+ read-only;
+ };
+
+ partition@3a00000 {
+ label = "ML6";
+ reg = <0x3a00000 0x200000>;
+ scpart-id = <10>;
+ read-only;
+ };
+
+ partition@3c00000 {
+ label = "ML7";
+ reg = <0x3c00000 0x200000>;
+ scpart-id = <11>;
+ read-only;
+ };
+
+ partition@3e00000 {
+ label = "ML8";
+ reg = <0x3e00000 0x200000>;
+ scpart-id = <12>;
+ read-only;
+ };
+
+ partition@4000000 {
+ label = "ML9";
+ reg = <0x4000000 0x200000>;
+ scpart-id = <13>;
+ read-only;
+ };
+
+ partition@4200000 {
+ label = "ML10";
+ reg = <0x4200000 0x200000>;
+ scpart-id = <14>;
+ read-only;
+ };
+
+ partition@4400000 {
+ label = "ML11";
+ reg = <0x4400000 0x200000>;
+ scpart-id = <15>;
+ read-only;
+ };
+
+ factory: partition@4600000 {
+ label = "factory";
+ reg = <0x4600000 0x200000>;
+ scpart-id = <16>;
+ read-only;
+ };
+
+ partition@4800000 {
+ label = "SC Private Data";
+ reg = <0x4800000 0x200000>;
+ scpart-id = <17>;
+ read-only;
+ };
+
+ partition@4a00000 {
+ label = "POT";
+ reg = <0x4a00000 0x200000>;
+ scpart-id = <18>;
+ read-only;
+ };
+
+ partition@4c00000 {
+ label = "Traffic Meter";
+ reg = <0x4c00000 0x200000>;
+ scpart-id = <19>;
+ read-only;
+ };
+
+ partition@4e00000 {
+ label = "SC PID";
+ reg = <0x4e00000 0x200000>;
+ scpart-id = <20>;
+ read-only;
+ };
+
+ partition@5000000 {
+ label = "SC Nvram";
+ reg = <0x5000000 0x200000>;
+ scpart-id = <21>;
+ read-only;
+ };
+
+ partition@5200000 {
+ label = "Ralink Nvram";
+ reg = <0x5200000 0x200000>;
+ scpart-id = <22>;
+ read-only;
+ };
+
+ partition@5400000 {
+ label = "reserved0";
+ reg = <0x5400000 0x200000>;
+ scpart-id = <23>;
+ read-only;
+ };
+
+ partition@5600000 {
+ label = "reserved1";
+ reg = <0x5600000 0x200000>;
+ scpart-id = <24>;
+ read-only;
+ };
+
+ partition@5800000 {
+ label = "reserved2";
+ reg = <0x5800000 0x200000>;
+ scpart-id = <25>;
+ read-only;
+ };
+
+ partition@5a00000 {
+ label = "reserved3";
+ reg = <0x5a00000 0x200000>;
+ scpart-id = <26>;
+ read-only;
+ };
+
+ partition@5c00000 {
+ label = "reserved4";
+ reg = <0x5c00000 0x200000>;
+ scpart-id = <27>;
+ read-only;
+ };
+
+ partition@5e00000 {
+ label = "reserved5";
+ reg = <0x5e00000 0x2180000>;
+ scpart-id = <28>;
+ read-only;
+ };
};
};
------------ target/linux/ramips/files/drivers/mtd/parsers/scpart.c ------------
new file mode 100644
index 0000000000..72acc145be
@@ -0,0 +1,257 @@
+/*
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Sercomm/Netgear FLASH partition table.
+ */
+
+
+#include <linux/kernel.h>
+#include <linux/slab.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/module.h>
+
+
+#define MOD_NAME "scpart"
+
+static const char sc_part_magic[] = {
+ 'S', 'C', 'F', 'L', 'M', 'A', 'P', 'O', 'K', '\0',
+};
+#define PART_MAGIC_LEN sizeof(sc_part_magic)
+
+/* assumes that all fields are set by CPU native endian */
+struct sc_part_desc {
+ uint32_t part_id;
+ uint32_t part_offs;
+ uint32_t part_bytes;
+};
+#define ID_ALREADY_FOUND (0xFFFFFFFFUL)
+
+#define MAP_OFFS_IN_BLK (0x800)
+
+#define MAP_MIRROR_NUM (2)
+
+static int scpart_desc_is_valid(struct sc_part_desc *pdesc)
+{
+ return !!((pdesc->part_id != 0xFFFFFFFFUL) &&
+ (pdesc->part_offs != 0xFFFFFFFFUL) &&
+ (pdesc->part_bytes != 0xFFFFFFFFUL));
+}
+
+static int scpart_scan_partmap(struct mtd_info *master, loff_t partmap_offs,
+ struct sc_part_desc **ppdesc)
+{
+ uint8_t *buf;
+ loff_t offs;
+ size_t retlen;
+ struct sc_part_desc *pdesc = NULL;
+ struct sc_part_desc *tmpdesc;
+ int cnt = 0;
+ int res2;
+ int res = 0;
+
+ buf = kzalloc(master->erasesize, GFP_KERNEL);
+ if (!buf) {
+ res = -ENOMEM;
+ goto out;
+ }
+
+ res2 = mtd_read(master, partmap_offs, master->erasesize, &retlen, buf);
+ if (res2 || (retlen != master->erasesize)) {
+ res = -EIO;
+ goto free;
+ }
+
+ offs = MAP_OFFS_IN_BLK;
+ while((offs + sizeof(*tmpdesc)) < master->erasesize) {
+ tmpdesc = (struct sc_part_desc*)&(buf[offs]);
+ if (!scpart_desc_is_valid(tmpdesc))
+ break;
+ cnt++;
+ offs += sizeof(*tmpdesc);
+ }
+
+ if (cnt > 0) {
+ int bytes = cnt * sizeof(*pdesc);
+
+ pdesc = kzalloc(bytes, GFP_KERNEL);
+ if (!pdesc) {
+ res = -ENOMEM;
+ goto free;
+ }
+ memcpy(pdesc, &(buf[MAP_OFFS_IN_BLK]), bytes);
+
+ *ppdesc = pdesc;
+ res = cnt;
+ }
+
+ free:
+ kfree(buf);
+
+ out:
+ return res;
+}
+
+static int scpart_find_partmap(struct mtd_info *master,
+ struct sc_part_desc **ppdesc)
+{
+ loff_t offs;
+ uint8_t rdbuf[PART_MAGIC_LEN];
+ size_t retlen;
+ int magic_found = 0;
+ int res2;
+ int res = 0;
+
+ offs = 0;
+ while((magic_found < MAP_MIRROR_NUM) &&
+ (offs < master->size) && !mtd_block_isbad(master, offs)) {
+ res2 = mtd_read(master, offs, PART_MAGIC_LEN, &retlen, rdbuf);
+ if (res2 || (retlen != PART_MAGIC_LEN)) {
+ res = -EIO;
+ goto out;
+ }
+ if (!memcmp(rdbuf, sc_part_magic, PART_MAGIC_LEN)) {
+ pr_debug("%s: signature found at 0x%llx\n", MOD_NAME, offs);
+ magic_found++;
+ res = scpart_scan_partmap(master, offs, ppdesc);
+ if (res > 0)
+ goto out;
+ }
+ offs += master->erasesize;
+ }
+
+ out:
+ if (res > 0)
+ pr_info("%s: valid 'SC PART MAP' found (%d partitions)\n", MOD_NAME, res);
+ else
+ pr_info("%s: no valid 'SC PART MAP'\n", MOD_NAME);
+
+ return res;
+}
+
+static int scpart_parse(struct mtd_info *master,
+ const struct mtd_partition **pparts,
+ struct mtd_part_parser_data *data)
+{
+ struct sc_part_desc *scpart_map = NULL;
+ struct mtd_partition *parts = NULL;
+ struct device_node *mtd_node;
+ struct device_node *ofpart_node;
+ struct device_node *pp;
+ const char *partname;
+ int nr_scparts;
+ int nr_parts = 0;
+ int n;
+ int res = 0;
+
+ mtd_node = mtd_get_of_node(master);
+ if (!mtd_node)
+ goto out;
+
+ ofpart_node = of_get_child_by_name(mtd_node, "partitions");
+ if (!ofpart_node)
+ goto out;
+
+ nr_scparts = scpart_find_partmap(master, &scpart_map);
+ if (nr_scparts <= 0) {
+ res = nr_scparts;
+ goto free;
+ }
+
+ for_each_child_of_node(ofpart_node, pp) {
+ u32 scpart_id;
+ struct mtd_partition *parts_tmp;
+
+ if(of_property_read_u32(pp, "scpart-id", &scpart_id))
+ continue;
+
+ for (n = 0 ; n < nr_scparts ; n++)
+ if ((scpart_map[n].part_id != ID_ALREADY_FOUND) &&
+ (scpart_id == scpart_map[n].part_id))
+ break;
+ if (n >= nr_scparts)
+ /* not match */
+ continue;
+
+ /* add the partition found in OF into MTD partition array */
+
+ /* reallocate partition array */
+ parts_tmp = parts;
+ parts = kzalloc((nr_parts + 1) * sizeof(*parts), GFP_KERNEL);
+ if (!parts) {
+ kfree(parts_tmp);
+ res = -ENOMEM;
+ goto free;
+ }
+ if (parts_tmp) {
+ memcpy(parts, parts_tmp, nr_parts * sizeof(*parts));
+ kfree(parts_tmp);
+ }
+
+ parts[nr_parts].offset = scpart_map[n].part_offs;
+ parts[nr_parts].size = scpart_map[n].part_bytes;
+ parts[nr_parts].of_node = pp;
+
+ if (!of_property_read_string(pp, "label", &partname) ||
+ !of_property_read_string(pp, "name", &partname))
+ parts[nr_parts].name = partname;
+
+ if (of_property_read_bool(pp, "read-only"))
+ parts[nr_parts].mask_flags |= MTD_WRITEABLE;
+ if (of_property_read_bool(pp, "lock"))
+ parts[nr_parts].mask_flags |= MTD_POWERUP_LOCK;
+
+ /* mark as 'done' */
+ scpart_map[n].part_id = ID_ALREADY_FOUND;
+
+ nr_parts++;
+ }
+ if (nr_parts > 0) {
+ *pparts = parts;
+ res = nr_parts;
+ } else
+ pr_info("%s: No partition in OF matches partition ID with 'SC PART MAP'.\n",
+ MOD_NAME);
+
+ of_node_put(pp);
+
+ free:
+ kfree(scpart_map);
+ if (res <= 0)
+ kfree(parts);
+
+ out:
+ return res;
+}
+
+static const struct of_device_id scpart_parser_of_match_table[] = {
+ { .compatible = "sercomm,sc-partitions" },
+ {},
+};
+MODULE_DEVICE_TABLE(of, scpart_parser_of_match_table);
+
+static struct mtd_part_parser scpart_parser = {
+ .parse_fn = scpart_parse,
+ .name = "scpart",
+ .of_match_table = scpart_parser_of_match_table,
+};
+module_mtd_part_parser(scpart_parser);
+
+/* mtd parsers will request the module by parser name */
+MODULE_ALIAS("scpart");
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("NOGUCHI Hiroshi <drvlabo at gmail.com>");
+MODULE_DESCRIPTION("Parsing code for Sercomm/Netgear partition table");
-------------------- target/linux/ramips/mt7621/config-5.4 --------------------
index b4c8ab1f1c..050a47a3d2 100644
@@ -202,6 +202,7 @@ CONFIG_MODULES_USE_ELF_REL=y
CONFIG_MT7621_WDT=y
# CONFIG_MTD_CFI_INTELEXT is not set
CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_SERCOMM_PARTS=y
CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_NAND_MT7621=y
--------- target/linux/ramips/patches-5.4/303-mtd-scpart-parser.patch ---------
new file mode 100644
index 0000000000..f125d9c6af
@@ -0,0 +1,19 @@
+--- a/drivers/mtd/parsers/Kconfig
++++ b/drivers/mtd/parsers/Kconfig
+@@ -185,3 +185,9 @@ config MTD_ROUTERBOOT_PARTS
+ flash, some of which are fixed and some of which are located at
+ variable offsets. This parser handles both cases via properly
+ formatted DTS.
++
++config MTD_SERCOMM_PARTS
++ tristate "SERCOMM partitioning information support"
++ depends on MTD_OF_PARTS
++ help
++ This provides partition table parser for SERCOMM partition map
+--- a/drivers/mtd/parsers/Makefile
++++ b/drivers/mtd/parsers/Makefile
+@@ -11,3 +11,4 @@ obj-$(CONFIG_MTD_PARSER_TRX) += parser_
+ obj-$(CONFIG_MTD_SHARPSL_PARTS) += sharpslpart.o
+ obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
+ obj-$(CONFIG_MTD_ROUTERBOOT_PARTS) += routerbootpart.o
++obj-$(CONFIG_MTD_SERCOMM_PARTS) += scpart.o
And my current partitions:
[ 0.901170] mt7621-nand 1e003000.nand: Using programmed access timing: 31c07388
[ 0.916012] nand: device found, Manufacturer ID: 0xc2, Chip ID: 0xf1
[ 0.928662] nand: Macronix MX30LF1G18AC
[ 0.936298] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[ 0.951375] mt7621-nand 1e003000.nand: ECC strength adjusted to 4 bits
[ 0.964409] mt7621-nand 1e003000.nand: Using programmed access timing: 21005134
[ 0.978974] mt7621-nand 1e003000.nand: Using programmed access timing: 21005134
[ 0.993533] Scanning device for bad blocks
[ 1.500759] Bad eraseblock 393 at 0x000003120000
[ 2.355373] scpart: valid 'SC PART MAP' found (29 partitions)
[ 2.366973] 29 scpart partitions found on MTD device mt7621-nand
[ 2.378938] Creating 29 MTD partitions on "mt7621-nand":
[ 2.389529] 0x000000000000-0x000000100000 : "u-boot"
[ 2.400735] 0x000000100000-0x000000200000 : "SC PART_MAP"
[ 2.412601] 0x000000200000-0x000000600000 : "kernel"
[ 2.423602] 0x000000600000-0x000002e00000 : "ubi"
[ 2.434311] 0x000002e00000-0x000003000000 : "English UI"
[ 2.446103] 0x000003000000-0x000003220000 : "ML1"
[ 2.456599] 0x000003220000-0x000003420000 : "ML2"
[ 2.467071] 0x000003420000-0x000003620000 : "ML3"
[ 2.477639] 0x000003620000-0x000003820000 : "ML4"
[ 2.488118] 0x000003820000-0x000003a20000 : "ML5"
[ 2.498700] 0x000003a20000-0x000003c20000 : "ML6"
[ 2.509450] 0x000003c20000-0x000003e20000 : "ML7"
[ 2.520174] 0x000003e20000-0x000004020000 : "ML8"
[ 2.530880] 0x000004020000-0x000004220000 : "ML9"
[ 2.541610] 0x000004220000-0x000004420000 : "ML10"
[ 2.552442] 0x000004420000-0x000004620000 : "ML11"
[ 2.563301] 0x000004620000-0x000004820000 : "factory"
[ 2.574668] 0x000004820000-0x000004a20000 : "SC Private Data"
[ 2.587430] 0x000004a20000-0x000004c20000 : "POT"
[ 2.598195] 0x000004c20000-0x000004e20000 : "Traffic Meter"
[ 2.610678] 0x000004e20000-0x000005020000 : "SC PID"
[ 2.621988] 0x000005020000-0x000005220000 : "SC Nvram"
[ 2.633608] 0x000005220000-0x000005420000 : "Ralink Nvram"
[ 2.645879] 0x000005420000-0x000005620000 : "reserved0"
[ 2.657665] 0x000005620000-0x000005820000 : "reserved1"
[ 2.669446] 0x000005820000-0x000005a20000 : "reserved2"
[ 2.681236] 0x000005a20000-0x000005c20000 : "reserved3"
[ 2.692964] 0x000005c20000-0x000005e20000 : "reserved4"
[ 2.704672] 0x000005e20000-0x000007f80000 : "reserved5"
And iw phy:
root@ap:~# iw phy
Wiphy phy1
wiphy index: 1
max # scan SSIDs: 4
max scan IEs length: 2304 bytes
max # sched scan SSIDs: 0
max # match sets: 0
max # scan plans: 1
max scan plan interval: 0
max scan plan iterations: 0
Retry short limit: 7
Retry long limit: 4
Coverage class: 0 (up to 0m)
Device supports AP-side u-APSD.
Device supports T-DLS.
Available Antennas: TX 0xf RX 0xf
Configured Antennas: TX 0xf RX 0xf
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
* P2P-client
* P2P-GO
Band 2:
Capabilities: 0x1ff
RX LDPC
HT20/HT40
SM Power Save disabled
RX Greenfield
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-31
VHT Capabilities (0x338001fa):
Max MPDU length: 11454
Supported Channel Width: 160 MHz, 80+80 MHz
RX LDPC
short GI (80 MHz)
short GI (160/80+80 MHz)
TX STBC
RX antenna pattern consistency
TX antenna pattern consistency
VHT RX MCS set:
1 streams: MCS 0-9
2 streams: MCS 0-9
3 streams: MCS 0-9
4 streams: MCS 0-9
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
VHT RX highest supported: 0 Mbps
VHT TX MCS set:
1 streams: MCS 0-9
2 streams: MCS 0-9
3 streams: MCS 0-9
4 streams: MCS 0-9
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
VHT TX highest supported: 0 Mbps
Frequencies:
* 5180 MHz [36] (23.0 dBm)
* 5200 MHz [40] (23.0 dBm)
* 5220 MHz [44] (23.0 dBm)
* 5240 MHz [48] (23.0 dBm)
* 5260 MHz [52] (20.0 dBm) (radar detection)
* 5280 MHz [56] (20.0 dBm) (radar detection)
* 5300 MHz [60] (20.0 dBm) (radar detection)
* 5320 MHz [64] (20.0 dBm) (radar detection)
* 5500 MHz [100] (25.0 dBm) (radar detection)
* 5520 MHz [104] (25.0 dBm) (radar detection)
* 5540 MHz [108] (25.0 dBm) (radar detection)
* 5560 MHz [112] (25.0 dBm) (radar detection)
* 5580 MHz [116] (25.0 dBm) (radar detection)
* 5600 MHz [120] (25.0 dBm) (radar detection)
* 5620 MHz [124] (25.0 dBm) (radar detection)
* 5640 MHz [128] (25.0 dBm) (radar detection)
* 5660 MHz [132] (25.0 dBm) (radar detection)
* 5680 MHz [136] (25.0 dBm) (radar detection)
* 5700 MHz [140] (25.0 dBm) (radar detection)
* 5720 MHz [144] (disabled)
* 5745 MHz [149] (13.0 dBm)
* 5765 MHz [153] (13.0 dBm)
* 5785 MHz [157] (13.0 dBm)
* 5805 MHz [161] (13.0 dBm)
* 5825 MHz [165] (13.0 dBm)
* 5845 MHz [169] (13.0 dBm)
* 5865 MHz [173] (13.0 dBm)
valid interface combinations:
* #{ IBSS } <= 1, #{ managed, AP, mesh point, P2P-client, P2P-GO } <= 4,
total <= 4, #channels <= 1, STA/AP BI must match, radar detect widths: { 20 MHz (no HT), 20 MHz, 40 MHz, 80 MHz, 80+80 MHz, 160 MHz }
HT Capability overrides:
* MCS: ff ff ff ff ff ff ff ff ff ff
* maximum A-MSDU length
* supported channel width
* short GI for 40 MHz
* max A-MPDU length exponent
* min MPDU start spacing
Supported extended features:
* [ VHT_IBSS ]: VHT-IBSS
* [ RRM ]: RRM
* [ SET_SCAN_DWELL ]: scan dwell setting
* [ CQM_RSSI_LIST ]: multiple CQM_RSSI_THOLD records
* [ CONTROL_PORT_OVER_NL80211 ]: control port over nl80211
* [ TXQS ]: FQ-CoDel-enabled intermediate TXQs
* [ AIRTIME_FAIRNESS ]: airtime fairness scheduling
* [ AQL ]: Airtime Queue Limits (AQL)
* [ CONTROL_PORT_NO_PREAUTH ]: disable pre-auth over nl80211 control port support
* [ DEL_IBSS_STA ]: deletion of IBSS station support
* [ SCAN_FREQ_KHZ ]: scan on kHz frequency support
* [ CONTROL_PORT_OVER_NL80211_TX_STATUS ]: tx status for nl80211 control port support
Wiphy phy0
wiphy index: 0
max # scan SSIDs: 4
max scan IEs length: 2257 bytes
max # sched scan SSIDs: 0
max # match sets: 0
max # scan plans: 1
max scan plan interval: -1
max scan plan iterations: 0
Retry short limit: 7
Retry long limit: 4
Coverage class: 0 (up to 0m)
Device supports AP-side u-APSD.
Device supports T-DLS.
Available Antennas: TX 0x3 RX 0x3
Configured Antennas: TX 0x3 RX 0x3
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
* P2P-client
* P2P-GO
Band 1:
Capabilities: 0x1fe
HT20/HT40
SM Power Save disabled
RX Greenfield
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-15
Frequencies:
* 2412 MHz [1] (20.0 dBm)
* 2417 MHz [2] (20.0 dBm)
* 2422 MHz [3] (20.0 dBm)
* 2427 MHz [4] (20.0 dBm)
* 2432 MHz [5] (20.0 dBm)
* 2437 MHz [6] (20.0 dBm)
* 2442 MHz [7] (20.0 dBm)
* 2447 MHz [8] (20.0 dBm)
* 2452 MHz [9] (20.0 dBm)
* 2457 MHz [10] (20.0 dBm)
* 2462 MHz [11] (20.0 dBm)
* 2467 MHz [12] (20.0 dBm)
* 2472 MHz [13] (20.0 dBm)
* 2484 MHz [14] (disabled)
valid interface combinations:
* #{ IBSS } <= 1, #{ managed, AP, mesh point, P2P-client, P2P-GO } <= 4,
total <= 4, #channels <= 1, STA/AP BI must match
HT Capability overrides:
* MCS: ff ff ff ff ff ff ff ff ff ff
* maximum A-MSDU length
* supported channel width
* short GI for 40 MHz
* max A-MPDU length exponent
* min MPDU start spacing
Supported extended features:
* [ RRM ]: RRM
* [ CQM_RSSI_LIST ]: multiple CQM_RSSI_THOLD records
* [ CONTROL_PORT_OVER_NL80211 ]: control port over nl80211
* [ TXQS ]: FQ-CoDel-enabled intermediate TXQs
* [ AIRTIME_FAIRNESS ]: airtime fairness scheduling
* [ AQL ]: Airtime Queue Limits (AQL)
* [ SCAN_RANDOM_SN ]: use random sequence numbers in scans
* [ SCAN_MIN_PREQ_CONTENT ]: use probe request with only rate IEs in scans
* [ CONTROL_PORT_NO_PREAUTH ]: disable pre-auth over nl80211 control port support
* [ DEL_IBSS_STA ]: deletion of IBSS station support
* [ SCAN_FREQ_KHZ ]: scan on kHz frequency support
* [ CONTROL_PORT_OVER_NL80211_TX_STATUS ]: tx status for nl80211 control port support
root@ap:~#
Thank you again.