summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Danzberger <daniel@dd-wrt.com>2019-11-27 18:29:51 +0100
committerHauke Mehrtens <hauke@hauke-m.de>2020-01-05 19:56:34 +0100
commitefe51f41d6288fa8503cc4f2efb37a777767d505 (patch)
treedc0dbbf707d5ba3e94ec47cebd79e8235d917429
parentaaa08366e6384d9933a405d1218b03c1b167f9e5 (diff)
downloadrpcd-efe51f41d6288fa8503cc4f2efb37a777767d505.tar.gz
iwinfo: add current hw and ht mode to info call
Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>
-rw-r--r--iwinfo.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/iwinfo.c b/iwinfo.c
index 3b74163..7780e69 100644
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -290,6 +290,48 @@ rpc_iwinfo_call_hwmodes(const char *name)
}
}
+static void rpc_iwinfo_call_hw_ht_mode()
+{
+ const char *hwmode_str;
+ const char *htmode_str;
+ int32_t htmode = 0;
+
+ if (iw->htmode(ifname, &htmode))
+ return;
+
+ switch (htmode) {
+ case IWINFO_HTMODE_HT20:
+ htmode_str = "HT20";
+ hwmode_str = "n";
+ break;
+ case IWINFO_HTMODE_HT40:
+ htmode_str = "HT40";
+ hwmode_str = "n";
+ break;
+ case IWINFO_HTMODE_VHT80:
+ htmode_str = "VHT80";
+ hwmode_str = "ac";
+ break;
+ case IWINFO_HTMODE_VHT80_80:
+ htmode_str = "VHT80+80";
+ hwmode_str = "ac";
+ break;
+ case IWINFO_HTMODE_VHT160:
+ htmode_str = "VHT160";
+ hwmode_str = "ac";
+ break;
+ case IWINFO_HTMODE_NOHT:
+ htmode_str = "20";
+ hwmode_str = "a/g";
+ break;
+ default:
+ htmode_str = hwmode_str = "unknown";
+ break;
+ }
+ blobmsg_add_string(&buf, "hwmode", hwmode_str);
+ blobmsg_add_string(&buf, "htmode", htmode_str);
+}
+
static void
rpc_iwinfo_call_str(const char *name, int (*func)(const char *, char *))
{
@@ -341,6 +383,8 @@ rpc_iwinfo_info(struct ubus_context *ctx, struct ubus_object *obj,
rpc_iwinfo_call_htmodes("htmodes");
rpc_iwinfo_call_hwmodes("hwmodes");
+ rpc_iwinfo_call_hw_ht_mode();
+
c = blobmsg_open_table(&buf, "hardware");
rpc_iwinfo_call_hardware_id("id");
rpc_iwinfo_call_str("name", iw->hardware_name);