iwinfo: expose available HT rates
authorJo-Philipp Wich <jo@mein.io>
Wed, 29 Jun 2016 22:36:01 +0000 (00:36 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 29 Jun 2016 22:36:01 +0000 (00:36 +0200)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
iwinfo.c

index b24d0f53bc37ca813398cac0a0f362db899b3898..1849196bad38bd3853618ce755eeb8c8dcf8741a 100644 (file)
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -226,6 +226,41 @@ rpc_iwinfo_call_encryption(const char *name)
                rpc_iwinfo_add_encryption(name, &crypto);
 }
 
+static void
+rpc_iwinfo_call_htmodes(const char *name)
+{
+       int modes;
+       void *c;
+
+       if (!iw->htmodelist(ifname, &modes))
+       {
+               c = blobmsg_open_array(&buf, name);
+
+               if (modes & IWINFO_HTMODE_HT20)
+                       blobmsg_add_string(&buf, NULL, "HT20");
+
+               if (modes & IWINFO_HTMODE_HT40)
+                       blobmsg_add_string(&buf, NULL, "HT40");
+
+               if (modes & IWINFO_HTMODE_VHT20)
+                       blobmsg_add_string(&buf, NULL, "VHT20");
+
+               if (modes & IWINFO_HTMODE_VHT40)
+                       blobmsg_add_string(&buf, NULL, "VHT40");
+
+               if (modes & IWINFO_HTMODE_VHT80)
+                       blobmsg_add_string(&buf, NULL, "VHT80");
+
+               if (modes & IWINFO_HTMODE_VHT80_80)
+                       blobmsg_add_string(&buf, NULL, "VHT80+80");
+
+               if (modes & IWINFO_HTMODE_VHT160)
+                       blobmsg_add_string(&buf, NULL, "VHT160");
+
+               blobmsg_close_array(&buf, c);
+       }
+}
+
 static void
 rpc_iwinfo_call_hwmodes(const char *name)
 {
@@ -303,6 +338,7 @@ rpc_iwinfo_info(struct ubus_context *ctx, struct ubus_object *obj,
        rpc_iwinfo_call_int("bitrate", iw->bitrate, NULL);
 
        rpc_iwinfo_call_encryption("encryption");
+       rpc_iwinfo_call_htmodes("htmodes");
        rpc_iwinfo_call_hwmodes("hwmodes");
 
        c = blobmsg_open_table(&buf, "hardware");