mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-30 18:07:52 +00:00
patches: carry forward Morse Micro iwinfo support (0053)
Adds iwinfo support for Morse Micro wireless chipsets. Renumbered from patches/0089. Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
@@ -1,22 +1,22 @@
|
|||||||
From 67adfbc5b4831ecb62a169370c102e0939ae884e Mon Sep 17 00:00:00 2001
|
From 40196b0604ffa46ae2df3741a9737695273d6c79 Mon Sep 17 00:00:00 2001
|
||||||
From: ian77_chen <ian77_chen@accton.com>
|
From: ian77_chen <ian77_chen@accton.com>
|
||||||
Date: Mon, 10 Mar 2025 15:21:57 +0800
|
Date: Mon, 10 Mar 2025 15:21:57 +0800
|
||||||
Subject: [PATCH] patch for Morse Micro iwinfo
|
Subject: [PATCH 53/55] patch for Morse Micro iwinfo
|
||||||
|
|
||||||
|
Adds Morse Micro HaLow (802.11ah) support to iwinfo library, including S1G channel mapping and device information reporting.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Chen <ian77_chen@accton.com>
|
||||||
---
|
---
|
||||||
.../utils/iwinfo/patches/MMiwinfo.patch | 1976 +++++++++++++++++
|
.../utils/iwinfo/patches/MMiwinfo.patch | 1943 +++++++++++++++++
|
||||||
1 file changed, 1976 insertions(+)
|
1 file changed, 1943 insertions(+)
|
||||||
create mode 100644 package/network/utils/iwinfo/patches/MMiwinfo.patch
|
create mode 100644 package/network/utils/iwinfo/patches/MMiwinfo.patch
|
||||||
|
|
||||||
diff --git a/package/network/utils/iwinfo/patches/MMiwinfo.patch b/package/network/utils/iwinfo/patches/MMiwinfo.patch
|
diff --git a/package/network/utils/iwinfo/patches/MMiwinfo.patch b/package/network/utils/iwinfo/patches/MMiwinfo.patch
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..c10d4bf881
|
index 0000000000..301687f0c0
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/package/network/utils/iwinfo/patches/MMiwinfo.patch
|
+++ b/package/network/utils/iwinfo/patches/MMiwinfo.patch
|
||||||
@@ -0,0 +1,1976 @@
|
@@ -0,0 +1,1943 @@
|
||||||
+diff --git a/.gitignore b/.gitignore
|
|
||||||
+new file mode 100644
|
|
||||||
+index 0000000..7f4922f
|
|
||||||
+--- /dev/null
|
+--- /dev/null
|
||||||
++++ b/.gitignore
|
++++ b/.gitignore
|
||||||
+@@ -0,0 +1,17 @@
|
+@@ -0,0 +1,17 @@
|
||||||
@@ -37,11 +37,9 @@ index 0000000000..c10d4bf881
|
|||||||
++*.o
|
++*.o
|
||||||
++
|
++
|
||||||
++.vscode/
|
++.vscode/
|
||||||
+diff --git a/Makefile b/Makefile
|
|
||||||
+index adb9e73..fac0abf 100644
|
|
||||||
+--- a/Makefile
|
+--- a/Makefile
|
||||||
++++ b/Makefile
|
++++ b/Makefile
|
||||||
+@@ -37,6 +37,7 @@ ifneq ($(filter nl80211,$(IWINFO_BACKENDS)),)
|
+@@ -37,6 +37,7 @@ ifneq ($(filter nl80211,$(IWINFO_BACKEND
|
||||||
+ IWINFO_CLI_LDFLAGS += -lnl-tiny
|
+ IWINFO_CLI_LDFLAGS += -lnl-tiny
|
||||||
+ IWINFO_LIB_LDFLAGS += -lnl-tiny
|
+ IWINFO_LIB_LDFLAGS += -lnl-tiny
|
||||||
+ IWINFO_LIB_OBJ += iwinfo_nl80211.o
|
+ IWINFO_LIB_OBJ += iwinfo_nl80211.o
|
||||||
@@ -49,11 +47,9 @@ index 0000000000..c10d4bf881
|
|||||||
+ endif
|
+ endif
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
+diff --git a/devices.txt b/devices.txt
|
|
||||||
+index eded184..397a1cf 100644
|
|
||||||
+--- a/devices.txt
|
+--- a/devices.txt
|
||||||
++++ b/devices.txt
|
++++ b/devices.txt
|
||||||
+@@ -192,6 +192,9 @@
|
+@@ -196,6 +196,9 @@
|
||||||
+ 0x02d0 0xa9a6 0x0000 0x0000 0 0 "Cypress" "CYW43455"
|
+ 0x02d0 0xa9a6 0x0000 0x0000 0 0 "Cypress" "CYW43455"
|
||||||
+ 0x02d0 0x4345 0x0000 0x0000 0 0 "Cypress" "CYW43455"
|
+ 0x02d0 0x4345 0x0000 0x0000 0 0 "Cypress" "CYW43455"
|
||||||
+ 0x1ae9 0x0310 0x1ae9 0x0000 0 0 "Wilocity" "Wil6210"
|
+ 0x1ae9 0x0310 0x1ae9 0x0000 0 0 "Wilocity" "Wil6210"
|
||||||
@@ -63,14 +59,11 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ # USB devices
|
+ # USB devices
|
||||||
+ # 0x0000 | 0x0000 | vendor id | product id | ...
|
+ # 0x0000 | 0x0000 | vendor id | product id | ...
|
||||||
+@@ -263,3 +266,4 @@
|
+@@ -267,3 +270,4 @@
|
||||||
+ "ralink,rt3883-wmac" 0 0 "Ralink" "Rt3883"
|
+ "ralink,rt3883-wmac" 0 0 "Ralink" "Rt3883"
|
||||||
+ "ralink,rt5350-wmac" 0 0 "Ralink" "Rt5350"
|
+ "ralink,rt5350-wmac" 0 0 "Ralink" "Rt5350"
|
||||||
+ "ralink,rt7620-wmac" 0 0 "MediaTek" "MT7620"
|
+ "ralink,rt7620-wmac" 0 0 "MediaTek" "MT7620"
|
||||||
++"morse,mm610x-spi" 0 0 "Morse Micro" "HaLow WiFi"
|
++"morse,mm610x-spi" 0 0 "Morse Micro" "HaLow WiFi"
|
||||||
+diff --git a/dot11ah_channel.c b/dot11ah_channel.c
|
|
||||||
+new file mode 100644
|
|
||||||
+index 0000000..24dfb0e
|
|
||||||
+--- /dev/null
|
+--- /dev/null
|
||||||
++++ b/dot11ah_channel.c
|
++++ b/dot11ah_channel.c
|
||||||
+@@ -0,0 +1,444 @@
|
+@@ -0,0 +1,444 @@
|
||||||
@@ -519,9 +512,6 @@ index 0000000000..c10d4bf881
|
|||||||
++ return rate_kbps;
|
++ return rate_kbps;
|
||||||
++}
|
++}
|
||||||
+\ No newline at end of file
|
+\ No newline at end of file
|
||||||
+diff --git a/dot11ah_channel.h b/dot11ah_channel.h
|
|
||||||
+new file mode 100644
|
|
||||||
+index 0000000..676906d
|
|
||||||
+--- /dev/null
|
+--- /dev/null
|
||||||
++++ b/dot11ah_channel.h
|
++++ b/dot11ah_channel.h
|
||||||
+@@ -0,0 +1,105 @@
|
+@@ -0,0 +1,105 @@
|
||||||
@@ -630,29 +620,27 @@ index 0000000000..c10d4bf881
|
|||||||
++int get_mmrc_throughput(const char* phyname);
|
++int get_mmrc_throughput(const char* phyname);
|
||||||
++
|
++
|
||||||
++#endif /* __DOT11AH_CHANNELS__ */
|
++#endif /* __DOT11AH_CHANNELS__ */
|
||||||
+diff --git a/include/iwinfo.h b/include/iwinfo.h
|
|
||||||
+index b50de69..0a9f157 100644
|
|
||||||
+--- a/include/iwinfo.h
|
+--- a/include/iwinfo.h
|
||||||
++++ b/include/iwinfo.h
|
++++ b/include/iwinfo.h
|
||||||
+@@ -31,6 +31,7 @@ enum iwinfo_80211 {
|
+@@ -32,6 +32,7 @@ enum iwinfo_80211 {
|
||||||
+ IWINFO_80211_AC,
|
|
||||||
+ IWINFO_80211_AD,
|
+ IWINFO_80211_AD,
|
||||||
+ IWINFO_80211_AX,
|
+ IWINFO_80211_AX,
|
||||||
|
+ IWINFO_80211_BE,
|
||||||
++ IWINFO_80211_AH,
|
++ IWINFO_80211_AH,
|
||||||
+
|
+
|
||||||
+ /* keep last */
|
+ /* keep last */
|
||||||
+ IWINFO_80211_COUNT
|
+ IWINFO_80211_COUNT
|
||||||
+@@ -43,6 +44,9 @@ enum iwinfo_80211 {
|
+@@ -45,6 +46,9 @@ enum iwinfo_80211 {
|
||||||
+ #define IWINFO_80211_AC (1 << IWINFO_80211_AC)
|
|
||||||
+ #define IWINFO_80211_AD (1 << IWINFO_80211_AD)
|
+ #define IWINFO_80211_AD (1 << IWINFO_80211_AD)
|
||||||
+ #define IWINFO_80211_AX (1 << IWINFO_80211_AX)
|
+ #define IWINFO_80211_AX (1 << IWINFO_80211_AX)
|
||||||
|
+ #define IWINFO_80211_BE (1 << IWINFO_80211_BE)
|
||||||
++#define IWINFO_80211_AH (1 << IWINFO_80211_AH)
|
++#define IWINFO_80211_AH (1 << IWINFO_80211_AH)
|
||||||
++
|
++
|
||||||
++#define S1G_CHAN_WIDTH_OFFSET (2)
|
++#define S1G_CHAN_WIDTH_OFFSET (2)
|
||||||
+
|
+
|
||||||
+ extern const char * const IWINFO_80211_NAMES[IWINFO_80211_COUNT];
|
+ extern const char * const IWINFO_80211_NAMES[IWINFO_80211_COUNT];
|
||||||
+
|
+
|
||||||
+@@ -52,7 +56,7 @@ enum iwinfo_band {
|
+@@ -54,7 +58,7 @@ enum iwinfo_band {
|
||||||
+ IWINFO_BAND_5,
|
+ IWINFO_BAND_5,
|
||||||
+ IWINFO_BAND_6,
|
+ IWINFO_BAND_6,
|
||||||
+ IWINFO_BAND_60,
|
+ IWINFO_BAND_60,
|
||||||
@@ -661,7 +649,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ /* keep last */
|
+ /* keep last */
|
||||||
+ IWINFO_BAND_COUNT
|
+ IWINFO_BAND_COUNT
|
||||||
+ };
|
+ };
|
||||||
+@@ -61,6 +65,7 @@ enum iwinfo_band {
|
+@@ -63,6 +67,7 @@ enum iwinfo_band {
|
||||||
+ #define IWINFO_BAND_5 (1 << IWINFO_BAND_5)
|
+ #define IWINFO_BAND_5 (1 << IWINFO_BAND_5)
|
||||||
+ #define IWINFO_BAND_6 (1 << IWINFO_BAND_6)
|
+ #define IWINFO_BAND_6 (1 << IWINFO_BAND_6)
|
||||||
+ #define IWINFO_BAND_60 (1 << IWINFO_BAND_60)
|
+ #define IWINFO_BAND_60 (1 << IWINFO_BAND_60)
|
||||||
@@ -669,7 +657,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ extern const char * const IWINFO_BAND_NAMES[IWINFO_BAND_COUNT];
|
+ extern const char * const IWINFO_BAND_NAMES[IWINFO_BAND_COUNT];
|
||||||
+
|
+
|
||||||
+@@ -290,6 +295,15 @@ struct iwinfo_crypto_entry {
|
+@@ -307,6 +312,15 @@ struct iwinfo_crypto_entry {
|
||||||
+ uint16_t pair_ciphers;
|
+ uint16_t pair_ciphers;
|
||||||
+ uint8_t auth_suites;
|
+ uint8_t auth_suites;
|
||||||
+ uint8_t auth_algs;
|
+ uint8_t auth_algs;
|
||||||
@@ -685,7 +673,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ struct iwinfo_scanlist_ht_chan_entry {
|
+ struct iwinfo_scanlist_ht_chan_entry {
|
||||||
+@@ -304,6 +318,19 @@ struct iwinfo_scanlist_vht_chan_entry {
|
+@@ -321,6 +335,19 @@ struct iwinfo_scanlist_vht_chan_entry {
|
||||||
+ uint8_t center_chan_2;
|
+ uint8_t center_chan_2;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
@@ -705,7 +693,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ extern const char * const ht_secondary_offset[4];
|
+ extern const char * const ht_secondary_offset[4];
|
||||||
+ /* 0 = 20 MHz
|
+ /* 0 = 20 MHz
|
||||||
+ 1 = 40 MHz or higher (refer to vht if supported) */
|
+ 1 = 40 MHz or higher (refer to vht if supported) */
|
||||||
+@@ -327,6 +354,7 @@ struct iwinfo_scanlist_entry {
|
+@@ -344,6 +371,7 @@ struct iwinfo_scanlist_entry {
|
||||||
+ struct iwinfo_crypto_entry crypto;
|
+ struct iwinfo_crypto_entry crypto;
|
||||||
+ struct iwinfo_scanlist_ht_chan_entry ht_chan_info;
|
+ struct iwinfo_scanlist_ht_chan_entry ht_chan_info;
|
||||||
+ struct iwinfo_scanlist_vht_chan_entry vht_chan_info;
|
+ struct iwinfo_scanlist_vht_chan_entry vht_chan_info;
|
||||||
@@ -713,7 +701,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ struct iwinfo_country_entry {
|
+ struct iwinfo_country_entry {
|
||||||
+@@ -412,6 +440,7 @@ extern const struct iwinfo_ops wext_ops;
|
+@@ -429,6 +457,7 @@ extern const struct iwinfo_ops wext_ops;
|
||||||
+ extern const struct iwinfo_ops madwifi_ops;
|
+ extern const struct iwinfo_ops madwifi_ops;
|
||||||
+ extern const struct iwinfo_ops nl80211_ops;
|
+ extern const struct iwinfo_ops nl80211_ops;
|
||||||
+ extern const struct iwinfo_ops wl_ops;
|
+ extern const struct iwinfo_ops wl_ops;
|
||||||
@@ -721,11 +709,9 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ #include "iwinfo/utils.h"
|
+ #include "iwinfo/utils.h"
|
||||||
+
|
+
|
||||||
+diff --git a/include/iwinfo/utils.h b/include/iwinfo/utils.h
|
|
||||||
+index 7b8ceea..d2a2788 100644
|
|
||||||
+--- a/include/iwinfo/utils.h
|
+--- a/include/iwinfo/utils.h
|
||||||
++++ b/include/iwinfo/utils.h
|
++++ b/include/iwinfo/utils.h
|
||||||
+@@ -66,6 +66,7 @@ int iwinfo_hardware_id_from_mtd(struct iwinfo_hardware_id *id);
|
+@@ -67,6 +67,7 @@ int iwinfo_hardware_id_from_mtd(struct i
|
||||||
+
|
+
|
||||||
+ void iwinfo_parse_rsn(struct iwinfo_crypto_entry *c, uint8_t *data, uint8_t len,
|
+ void iwinfo_parse_rsn(struct iwinfo_crypto_entry *c, uint8_t *data, uint8_t len,
|
||||||
+ uint16_t defcipher, uint8_t defauth);
|
+ uint16_t defcipher, uint8_t defauth);
|
||||||
@@ -733,8 +719,6 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ struct uci_section *iwinfo_uci_get_radio(const char *name, const char *type);
|
+ struct uci_section *iwinfo_uci_get_radio(const char *name, const char *type);
|
||||||
+ void iwinfo_uci_free(void);
|
+ void iwinfo_uci_free(void);
|
||||||
+diff --git a/iwinfo_cli.c b/iwinfo_cli.c
|
|
||||||
+index 5dcee9a..790803c 100644
|
|
||||||
+--- a/iwinfo_cli.c
|
+--- a/iwinfo_cli.c
|
||||||
++++ b/iwinfo_cli.c
|
++++ b/iwinfo_cli.c
|
||||||
+@@ -69,12 +69,12 @@ static char * format_channel(int ch)
|
+@@ -69,12 +69,12 @@ static char * format_channel(int ch)
|
||||||
@@ -752,7 +736,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ return buf;
|
+ return buf;
|
||||||
+ }
|
+ }
|
||||||
+@@ -351,6 +351,19 @@ static const char* format_chan_width(bool vht, uint8_t width)
|
+@@ -362,6 +362,19 @@ static const char* format_chan_width(boo
|
||||||
+ return "unknown";
|
+ return "unknown";
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@@ -772,7 +756,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ static const char * print_type(const struct iwinfo_ops *iw, const char *ifname)
|
+ static const char * print_type(const struct iwinfo_ops *iw, const char *ifname)
|
||||||
+ {
|
+ {
|
||||||
+@@ -689,13 +702,16 @@ static void print_scanlist(const struct iwinfo_ops *iw, const char *ifname)
|
+@@ -700,13 +713,16 @@ static void print_scanlist(const struct
|
||||||
+ format_quality_max(e->quality_max));
|
+ format_quality_max(e->quality_max));
|
||||||
+ printf(" Encryption: %s\n",
|
+ printf(" Encryption: %s\n",
|
||||||
+ format_encryption(&e->crypto));
|
+ format_encryption(&e->crypto));
|
||||||
@@ -796,7 +780,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ if (e->vht_chan_info.center_chan_1) {
|
+ if (e->vht_chan_info.center_chan_1) {
|
||||||
+ printf(" VHT Operation:\n");
|
+ printf(" VHT Operation:\n");
|
||||||
+@@ -707,6 +723,14 @@ static void print_scanlist(const struct iwinfo_ops *iw, const char *ifname)
|
+@@ -718,6 +734,14 @@ static void print_scanlist(const struct
|
||||||
+ format_chan_width(true, e->vht_chan_info.chan_width));
|
+ format_chan_width(true, e->vht_chan_info.chan_width));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@@ -811,7 +795,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ printf("\n");
|
+ printf("\n");
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+@@ -912,7 +936,7 @@ int main(int argc, char **argv)
|
+@@ -923,7 +947,7 @@ int main(int argc, char **argv)
|
||||||
+ char *p;
|
+ char *p;
|
||||||
+ const struct iwinfo_ops *iw;
|
+ const struct iwinfo_ops *iw;
|
||||||
+ glob_t globbuf;
|
+ glob_t globbuf;
|
||||||
@@ -820,7 +804,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ if (argc > 1 && argc < 3)
|
+ if (argc > 1 && argc < 3)
|
||||||
+ {
|
+ {
|
||||||
+ fprintf(stderr,
|
+ fprintf(stderr,
|
||||||
+@@ -1031,7 +1055,6 @@ int main(int argc, char **argv)
|
+@@ -1042,7 +1066,6 @@ int main(int argc, char **argv)
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@@ -828,19 +812,17 @@ index 0000000000..c10d4bf881
|
|||||||
+ iwinfo_finish();
|
+ iwinfo_finish();
|
||||||
+
|
+
|
||||||
+ return rv;
|
+ return rv;
|
||||||
+diff --git a/iwinfo_lib.c b/iwinfo_lib.c
|
|
||||||
+index 579efc4..02fbd9c 100644
|
|
||||||
+--- a/iwinfo_lib.c
|
+--- a/iwinfo_lib.c
|
||||||
++++ b/iwinfo_lib.c
|
++++ b/iwinfo_lib.c
|
||||||
+@@ -30,6 +30,7 @@ const char * const IWINFO_80211_NAMES[IWINFO_80211_COUNT] = {
|
+@@ -31,6 +31,7 @@ const char * const IWINFO_80211_NAMES[IW
|
||||||
+ "ac",
|
|
||||||
+ "ad",
|
+ "ad",
|
||||||
+ "ax",
|
+ "ax",
|
||||||
|
+ "be",
|
||||||
++ "ah",
|
++ "ah",
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ const char * const IWINFO_BAND_NAMES[IWINFO_BAND_COUNT] = {
|
+ const char * const IWINFO_BAND_NAMES[IWINFO_BAND_COUNT] = {
|
||||||
+@@ -37,6 +38,7 @@ const char * const IWINFO_BAND_NAMES[IWINFO_BAND_COUNT] = {
|
+@@ -38,6 +39,7 @@ const char * const IWINFO_BAND_NAMES[IWI
|
||||||
+ "5 GHz",
|
+ "5 GHz",
|
||||||
+ "6 GHz",
|
+ "6 GHz",
|
||||||
+ "60 GHz",
|
+ "60 GHz",
|
||||||
@@ -848,7 +830,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ const char * const IWINFO_CIPHER_NAMES[IWINFO_CIPHER_COUNT] = {
|
+ const char * const IWINFO_CIPHER_NAMES[IWINFO_CIPHER_COUNT] = {
|
||||||
+@@ -383,6 +385,7 @@ const struct iwinfo_iso3166_label IWINFO_ISO3166_NAMES[] = {
|
+@@ -390,6 +392,7 @@ const struct iwinfo_iso3166_label IWINFO
|
||||||
+
|
+
|
||||||
+ static const struct iwinfo_ops *backends[] = {
|
+ static const struct iwinfo_ops *backends[] = {
|
||||||
+ #ifdef USE_NL80211
|
+ #ifdef USE_NL80211
|
||||||
@@ -856,13 +838,11 @@ index 0000000000..c10d4bf881
|
|||||||
+ &nl80211_ops,
|
+ &nl80211_ops,
|
||||||
+ #endif
|
+ #endif
|
||||||
+ #ifdef USE_MADWIFI
|
+ #ifdef USE_MADWIFI
|
||||||
+diff --git a/iwinfo_lua.c b/iwinfo_lua.c
|
|
||||||
+index ecf257d..9def386 100644
|
|
||||||
+--- a/iwinfo_lua.c
|
+--- a/iwinfo_lua.c
|
||||||
++++ b/iwinfo_lua.c
|
++++ b/iwinfo_lua.c
|
||||||
+@@ -554,6 +554,9 @@ static int iwinfo_L_hwmodelist(lua_State *L, int (*func)(const char *, int *))
|
+@@ -565,6 +565,9 @@ static int iwinfo_L_hwmodelist(lua_State
|
||||||
+ lua_pushboolean(L, hwmodes & IWINFO_80211_AX);
|
+ lua_pushboolean(L, hwmodes & IWINFO_80211_BE);
|
||||||
+ lua_setfield(L, -2, "ax");
|
+ lua_setfield(L, -2, "be");
|
||||||
+
|
+
|
||||||
++ lua_pushboolean(L, hwmodes & IWINFO_80211_AH);
|
++ lua_pushboolean(L, hwmodes & IWINFO_80211_AH);
|
||||||
++ lua_setfield(L, -2, "ah");
|
++ lua_setfield(L, -2, "ah");
|
||||||
@@ -870,9 +850,6 @@ index 0000000000..c10d4bf881
|
|||||||
+ return 1;
|
+ return 1;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+diff --git a/iwinfo_morsecli.c b/iwinfo_morsecli.c
|
|
||||||
+new file mode 100644
|
|
||||||
+index 0000000..7156bd8
|
|
||||||
+--- /dev/null
|
+--- /dev/null
|
||||||
++++ b/iwinfo_morsecli.c
|
++++ b/iwinfo_morsecli.c
|
||||||
+@@ -0,0 +1,122 @@
|
+@@ -0,0 +1,122 @@
|
||||||
@@ -999,9 +976,6 @@ index 0000000000..c10d4bf881
|
|||||||
++ return found;
|
++ return found;
|
||||||
++}
|
++}
|
||||||
+\ No newline at end of file
|
+\ No newline at end of file
|
||||||
+diff --git a/iwinfo_morsecli.h b/iwinfo_morsecli.h
|
|
||||||
+new file mode 100644
|
|
||||||
+index 0000000..320f433
|
|
||||||
+--- /dev/null
|
+--- /dev/null
|
||||||
++++ b/iwinfo_morsecli.h
|
++++ b/iwinfo_morsecli.h
|
||||||
+@@ -0,0 +1,27 @@
|
+@@ -0,0 +1,27 @@
|
||||||
@@ -1033,8 +1007,6 @@ index 0000000000..c10d4bf881
|
|||||||
++
|
++
|
||||||
++#endif
|
++#endif
|
||||||
+\ No newline at end of file
|
+\ No newline at end of file
|
||||||
+diff --git a/iwinfo_nl80211.c b/iwinfo_nl80211.c
|
|
||||||
+index 2200249..dcb29b3 100644
|
|
||||||
+--- a/iwinfo_nl80211.c
|
+--- a/iwinfo_nl80211.c
|
||||||
++++ b/iwinfo_nl80211.c
|
++++ b/iwinfo_nl80211.c
|
||||||
+@@ -2,6 +2,7 @@
|
+@@ -2,6 +2,7 @@
|
||||||
@@ -1053,7 +1025,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ #define min(x, y) ((x) < (y)) ? (x) : (y)
|
+ #define min(x, y) ((x) < (y)) ? (x) : (y)
|
||||||
+
|
+
|
||||||
+@@ -408,8 +410,11 @@ static int nl80211_phy_idx_from_uci(const char *name)
|
+@@ -413,8 +415,11 @@ static int nl80211_phy_idx_from_uci(cons
|
||||||
+ int idx = -1;
|
+ int idx = -1;
|
||||||
+
|
+
|
||||||
+ s = iwinfo_uci_get_radio(name, "mac80211");
|
+ s = iwinfo_uci_get_radio(name, "mac80211");
|
||||||
@@ -1067,7 +1039,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ opt = uci_lookup_option_string(uci_ctx, s, "path");
|
+ opt = uci_lookup_option_string(uci_ctx, s, "path");
|
||||||
+ idx = nl80211_phy_idx_from_path(opt);
|
+ idx = nl80211_phy_idx_from_path(opt);
|
||||||
+@@ -1331,15 +1336,16 @@ static int nl80211_get_bssid(const char *ifname, char *buf)
|
+@@ -1359,15 +1364,16 @@ static int nl80211_get_bssid(const char
|
||||||
+
|
+
|
||||||
+ res = nl80211_phy2ifname(ifname);
|
+ res = nl80211_phy2ifname(ifname);
|
||||||
+
|
+
|
||||||
@@ -1091,7 +1063,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ /* failed, try to find mac from hostapd info */
|
+ /* failed, try to find mac from hostapd info */
|
||||||
+ if ((sb.bssid[0] == 0) &&
|
+ if ((sb.bssid[0] == 0) &&
|
||||||
+@@ -1771,7 +1777,8 @@ static const struct {
|
+@@ -1799,7 +1805,8 @@ static const struct {
|
||||||
+ { "EAP-SUITE-B-192", 4, IWINFO_KMGMT_8021x },
|
+ { "EAP-SUITE-B-192", 4, IWINFO_KMGMT_8021x },
|
||||||
+ { "EAP-SUITE-B", 4, IWINFO_KMGMT_8021x },
|
+ { "EAP-SUITE-B", 4, IWINFO_KMGMT_8021x },
|
||||||
+ { "EAP-SHA384", 4, IWINFO_KMGMT_8021x },
|
+ { "EAP-SHA384", 4, IWINFO_KMGMT_8021x },
|
||||||
@@ -1101,7 +1073,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ { "PSK-SHA256", 0, IWINFO_KMGMT_PSK },
|
+ { "PSK-SHA256", 0, IWINFO_KMGMT_PSK },
|
||||||
+ { "NONE", 0, IWINFO_KMGMT_NONE },
|
+ { "NONE", 0, IWINFO_KMGMT_NONE },
|
||||||
+ { "None", 0, IWINFO_KMGMT_NONE },
|
+ { "None", 0, IWINFO_KMGMT_NONE },
|
||||||
+@@ -1782,7 +1789,7 @@ static const struct {
|
+@@ -1810,7 +1817,7 @@ static const struct {
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ static void parse_wpa_suites(const char *str, int defversion,
|
+ static void parse_wpa_suites(const char *str, int defversion,
|
||||||
@@ -1110,7 +1082,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ {
|
+ {
|
||||||
+ size_t l;
|
+ size_t l;
|
||||||
+ int i, version;
|
+ int i, version;
|
||||||
+@@ -1817,6 +1824,35 @@ static void parse_wpa_suites(const char *str, int defversion,
|
+@@ -1845,6 +1852,35 @@ static void parse_wpa_suites(const char
|
||||||
+
|
+
|
||||||
+ p = q + strspn(q, sep);
|
+ p = q + strspn(q, sep);
|
||||||
+ }
|
+ }
|
||||||
@@ -1146,7 +1118,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ static const struct {
|
+ static const struct {
|
||||||
+@@ -1871,6 +1907,7 @@ static int nl80211_get_encryption(const char *ifname, char *buf)
|
+@@ -1899,6 +1935,7 @@ static int nl80211_get_encryption(const
|
||||||
+ uint8_t wpa_version = 0;
|
+ uint8_t wpa_version = 0;
|
||||||
+ char wpa[2], wpa_key_mgmt[64], wpa_pairwise[16], wpa_groupwise[16];
|
+ char wpa[2], wpa_key_mgmt[64], wpa_pairwise[16], wpa_groupwise[16];
|
||||||
+ char auth_algs[2], wep_key0[27], wep_key1[27], wep_key2[27], wep_key3[27];
|
+ char auth_algs[2], wep_key0[27], wep_key1[27], wep_key2[27], wep_key3[27];
|
||||||
@@ -1154,7 +1126,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ char mode[16];
|
+ char mode[16];
|
||||||
+
|
+
|
||||||
+ struct iwinfo_crypto_entry *c = (struct iwinfo_crypto_entry *)buf;
|
+ struct iwinfo_crypto_entry *c = (struct iwinfo_crypto_entry *)buf;
|
||||||
+@@ -1880,6 +1917,7 @@ static int nl80211_get_encryption(const char *ifname, char *buf)
|
+@@ -1908,6 +1945,7 @@ static int nl80211_get_encryption(const
|
||||||
+ "pairwise_cipher", wpa_pairwise, sizeof(wpa_pairwise),
|
+ "pairwise_cipher", wpa_pairwise, sizeof(wpa_pairwise),
|
||||||
+ "group_cipher", wpa_groupwise, sizeof(wpa_groupwise),
|
+ "group_cipher", wpa_groupwise, sizeof(wpa_groupwise),
|
||||||
+ "key_mgmt", wpa_key_mgmt, sizeof(wpa_key_mgmt),
|
+ "key_mgmt", wpa_key_mgmt, sizeof(wpa_key_mgmt),
|
||||||
@@ -1162,7 +1134,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ "mode", mode, sizeof(mode)))
|
+ "mode", mode, sizeof(mode)))
|
||||||
+ {
|
+ {
|
||||||
+ /* WEP or Open */
|
+ /* WEP or Open */
|
||||||
+@@ -1928,7 +1966,7 @@ static int nl80211_get_encryption(const char *ifname, char *buf)
|
+@@ -1956,7 +1994,7 @@ static int nl80211_get_encryption(const
|
||||||
+ wpa_version = 1;
|
+ wpa_version = 1;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@@ -1171,7 +1143,7 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ c->enabled = !!(c->wpa_version && c->auth_suites);
|
+ c->enabled = !!(c->wpa_version && c->auth_suites);
|
||||||
+ }
|
+ }
|
||||||
+@@ -1941,6 +1979,7 @@ static int nl80211_get_encryption(const char *ifname, char *buf)
|
+@@ -1969,6 +2007,7 @@ static int nl80211_get_encryption(const
|
||||||
+ "wpa", wpa, sizeof(wpa),
|
+ "wpa", wpa, sizeof(wpa),
|
||||||
+ "wpa_key_mgmt", wpa_key_mgmt, sizeof(wpa_key_mgmt),
|
+ "wpa_key_mgmt", wpa_key_mgmt, sizeof(wpa_key_mgmt),
|
||||||
+ "wpa_pairwise", wpa_pairwise, sizeof(wpa_pairwise),
|
+ "wpa_pairwise", wpa_pairwise, sizeof(wpa_pairwise),
|
||||||
@@ -1179,7 +1151,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ "auth_algs", auth_algs, sizeof(auth_algs),
|
+ "auth_algs", auth_algs, sizeof(auth_algs),
|
||||||
+ "wep_key0", wep_key0, sizeof(wep_key0),
|
+ "wep_key0", wep_key0, sizeof(wep_key0),
|
||||||
+ "wep_key1", wep_key1, sizeof(wep_key1),
|
+ "wep_key1", wep_key1, sizeof(wep_key1),
|
||||||
+@@ -1959,7 +1998,7 @@ static int nl80211_get_encryption(const char *ifname, char *buf)
|
+@@ -1987,7 +2026,7 @@ static int nl80211_get_encryption(const
|
||||||
+ if (!strncmp(p, "FT-", 3))
|
+ if (!strncmp(p, "FT-", 3))
|
||||||
+ p += 3;
|
+ p += 3;
|
||||||
+
|
+
|
||||||
@@ -1188,7 +1160,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ c->enabled = c->wpa_version ? 1 : 0;
|
+ c->enabled = c->wpa_version ? 1 : 0;
|
||||||
+@@ -2531,7 +2570,7 @@ static void nl80211_get_scancrypto(char *spec, struct iwinfo_crypto_entry *c)
|
+@@ -2571,7 +2610,7 @@ static void nl80211_get_scancrypto(char
|
||||||
+
|
+
|
||||||
+ c->enabled = 1;
|
+ c->enabled = 1;
|
||||||
+
|
+
|
||||||
@@ -1197,7 +1169,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ parse_wpa_ciphers(suites, &c->pair_ciphers);
|
+ parse_wpa_ciphers(suites, &c->pair_ciphers);
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+@@ -2588,6 +2627,9 @@ static void nl80211_get_scanlist_ie(struct nlattr **bss,
|
+@@ -2628,6 +2667,9 @@ static void nl80211_get_scanlist_ie(stru
|
||||||
+ e->vht_chan_info.center_chan_2 = ie[4];
|
+ e->vht_chan_info.center_chan_2 = ie[4];
|
||||||
+ }
|
+ }
|
||||||
+ break;
|
+ break;
|
||||||
@@ -1207,7 +1179,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ ielen -= ie[1] + 2;
|
+ ielen -= ie[1] + 2;
|
||||||
+@@ -3634,7 +3676,7 @@ const struct iwinfo_ops nl80211_ops = {
|
+@@ -3723,7 +3765,7 @@ const struct iwinfo_ops nl80211_ops = {
|
||||||
+ .mbssid_support = nl80211_get_mbssid_support,
|
+ .mbssid_support = nl80211_get_mbssid_support,
|
||||||
+ .hwmodelist = nl80211_get_hwmodelist,
|
+ .hwmodelist = nl80211_get_hwmodelist,
|
||||||
+ .htmodelist = nl80211_get_htmodelist,
|
+ .htmodelist = nl80211_get_htmodelist,
|
||||||
@@ -1216,7 +1188,7 @@ index 0000000000..c10d4bf881
|
|||||||
+ .mode = nl80211_get_mode,
|
+ .mode = nl80211_get_mode,
|
||||||
+ .ssid = nl80211_get_ssid,
|
+ .ssid = nl80211_get_ssid,
|
||||||
+ .bssid = nl80211_get_bssid,
|
+ .bssid = nl80211_get_bssid,
|
||||||
+@@ -3653,3 +3695,723 @@ const struct iwinfo_ops nl80211_ops = {
|
+@@ -3742,3 +3784,723 @@ const struct iwinfo_ops nl80211_ops = {
|
||||||
+ .phy_path = nl80211_phy_path,
|
+ .phy_path = nl80211_phy_path,
|
||||||
+ .close = nl80211_close
|
+ .close = nl80211_close
|
||||||
+ };
|
+ };
|
||||||
@@ -1941,8 +1913,6 @@ index 0000000000..c10d4bf881
|
|||||||
++ .close = nl80211_close
|
++ .close = nl80211_close
|
||||||
++};
|
++};
|
||||||
+\ No newline at end of file
|
+\ No newline at end of file
|
||||||
+diff --git a/iwinfo_utils.c b/iwinfo_utils.c
|
|
||||||
+index d96cbb3..a7c8abe 100644
|
|
||||||
+--- a/iwinfo_utils.c
|
+--- a/iwinfo_utils.c
|
||||||
++++ b/iwinfo_utils.c
|
++++ b/iwinfo_utils.c
|
||||||
+@@ -2,6 +2,7 @@
|
+@@ -2,6 +2,7 @@
|
||||||
@@ -1957,14 +1927,14 @@ index 0000000000..c10d4bf881
|
|||||||
+
|
+
|
||||||
+ size_t iwinfo_format_hwmodes(int modes, char *buf, size_t len)
|
+ size_t iwinfo_format_hwmodes(int modes, char *buf, size_t len)
|
||||||
+ {
|
+ {
|
||||||
+- // bit numbers as per IWINFO_80211_*: ad ac ax a b g n
|
+- // bit numbers as per IWINFO_80211_*: ad ac ax a b be g n
|
||||||
+- const int order[IWINFO_80211_COUNT] = { 5, 4, 6, 0, 1, 2, 3 };
|
+- const int order[IWINFO_80211_COUNT] = { 5, 4, 6, 0, 1, 7, 2, 3 };
|
||||||
++ // bit numbers as per IWINFO_80211_*: ad ac ax ah a b g n
|
++ // bit numbers as per IWINFO_80211_*: ad ac ax ah a b be g n
|
||||||
++ const int order[IWINFO_80211_COUNT] = { 5, 4, 6, 7, 0, 1, 2, 3 };
|
++ const int order[IWINFO_80211_COUNT] = { 5, 4, 6, 8, 0, 1, 7, 2, 3 };
|
||||||
+ size_t res = 0;
|
+ size_t res = 0;
|
||||||
+ int i;
|
+ int i;
|
||||||
+
|
+
|
||||||
+@@ -599,6 +600,25 @@ void iwinfo_parse_rsn(struct iwinfo_crypto_entry *c, uint8_t *data, uint8_t len,
|
+@@ -615,6 +616,25 @@ void iwinfo_parse_rsn(struct iwinfo_cryp
|
||||||
+ len -= 2 + (count * 4);
|
+ len -= 2 + (count * 4);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
Reference in New Issue
Block a user