Merge pull request #5070 from blocktrron/pr-luci-wifi6
authorDavid Bauer <mail@david-bauer.net>
Sat, 5 Jun 2021 17:04:11 +0000 (19:04 +0200)
committerGitHub <noreply@github.com>
Sat, 5 Jun 2021 17:04:11 +0000 (19:04 +0200)
luci-mod-network: add 802.11ax HE support

libs/rpcd-mod-luci/src/luci.c
modules/luci-base/htdocs/luci-static/resources/network.js
modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js

index 030dabb82371a2e76171dd07f0343e8c6488602d..258d2ec86b58a5fd23a74a5425b2c716f2034754 100644 (file)
@@ -879,6 +879,9 @@ static bool rpc_luci_get_iwinfo(struct blob_buf *buf, const char *devname,
        if (!iw->hwmodelist(devname, &nret)) {
                a = blobmsg_open_array(buf, "hwmodes");
 
+               if (nret & IWINFO_80211_AX)
+                       blobmsg_add_string(buf, NULL, "ax");
+
                if (nret & IWINFO_80211_AC)
                        blobmsg_add_string(buf, NULL, "ac");
 
@@ -921,6 +924,18 @@ static bool rpc_luci_get_iwinfo(struct blob_buf *buf, const char *devname,
                if (nret & IWINFO_HTMODE_VHT160)
                        blobmsg_add_string(buf, NULL, "VHT160");
 
+               if (nret & IWINFO_HTMODE_HE20)
+                       blobmsg_add_string(buf, NULL, "HE20");
+
+               if (nret & IWINFO_HTMODE_HE40)
+                       blobmsg_add_string(buf, NULL, "HE40");
+
+               if (nret & IWINFO_HTMODE_HE80)
+                       blobmsg_add_string(buf, NULL, "HE80");
+
+               if (nret & IWINFO_HTMODE_HE160)
+                       blobmsg_add_string(buf, NULL, "HE160");
+
                blobmsg_close_array(buf, a);
        }
 
index b1dfcfd77c4e686a4a081991f170b71889686c38..39b8b2dc853c923b9acbcb803205e7d96f725ddd 100644 (file)
@@ -3303,6 +3303,7 @@ WifiDevice = baseclass.extend(/** @lends LuCI.network.WifiDevice.prototype */ {
         *  - `g` - Legacy 802.11g mode, 2.4 GHz, up to 54 Mbit/s
         *  - `n` - IEEE 802.11n mode, 2.4 or 5 GHz, up to 600 Mbit/s
         *  - `ac` - IEEE 802.11ac mode, 5 GHz, up to 6770 Mbit/s
+        *  - `ax` - IEEE 802.11ax mode, 2.4 or 5 GHz
         */
        getHWModes: function() {
                var hwmodes = this.ubus('dev', 'iwinfo', 'hwmodes');
@@ -3324,6 +3325,10 @@ WifiDevice = baseclass.extend(/** @lends LuCI.network.WifiDevice.prototype */ {
         *  - `VHT40` - applicable to IEEE 802.11ac, 40 MHz wide channels
         *  - `VHT80` - applicable to IEEE 802.11ac, 80 MHz wide channels
         *  - `VHT160` - applicable to IEEE 802.11ac, 160 MHz wide channels
+        *  - `HE20` - applicable to IEEE 802.11ax, 20 MHz wide channels
+        *  - `HE40` - applicable to IEEE 802.11ax, 40 MHz wide channels
+        *  - `HE80` - applicable to IEEE 802.11ax, 80 MHz wide channels
+        *  - `HE160` - applicable to IEEE 802.11ax, 160 MHz wide channels
         */
        getHTModes: function() {
                var htmodes = this.ubus('dev', 'iwinfo', 'htmodes');
@@ -4021,6 +4026,17 @@ WifiNetwork = baseclass.extend(/** @lends LuCI.network.WifiNetwork.prototype */
         * @property {number} [nss]
         * Specifies the number of spatial streams used by the transmission.
         * Only applicable to VHT rates.
+        *
+        * @property {boolean} [he]
+        * Specifies whether this rate is an HE (IEEE 802.11ax) rate.
+        *
+        * @property {number} [he_gi]
+        * Specifies whether the guard interval used for the transmission.
+        * Only applicable to HE rates.
+        *
+        * @property {number} [he_dcm]
+        * Specifies whether dual concurrent modulation is used for the transmission.
+        * Only applicable to HE rates.
         */
 
        /**
index 748cb6254f4aeb67300a2e1130aae894717bb455..e9707e85abf9277aff365c05bdc3b83fdfe6ef45 100644 (file)
@@ -199,7 +199,9 @@ function format_wifirate(rate) {
        var s = '%.1f\xa0%s, %d\xa0%s'.format(rate.rate / 1000, _('Mbit/s'), rate.mhz, _('MHz')),
            ht = rate.ht, vht = rate.vht,
            mhz = rate.mhz, nss = rate.nss,
-           mcs = rate.mcs, sgi = rate.short_gi;
+           mcs = rate.mcs, sgi = rate.short_gi,
+           he = rate.he, he_gi = rate.he_gi,
+           he_dcm = rate.he_dcm;
 
        if (ht || vht) {
                if (vht) s += ', VHT-MCS\xa0%d'.format(mcs);
@@ -208,6 +210,13 @@ function format_wifirate(rate) {
                if (sgi) s += ', ' + _('Short GI').replace(/ /g, '\xa0');
        }
 
+       if (he) {
+               s += ', HE-MCS\xa0%d'.format(mcs);
+               if (nss) s += ', HE-NSS\xa0%d'.format(nss);
+               if (he_gi) s += ', HE-GI\xa0%d'.format(he_gi);
+               if (he_dcm) s += ', HE-DCM\xa0%d'.format(he_dcm);
+       }
+
        return s;
 }
 
@@ -320,7 +329,8 @@ var CBIWifiFrequencyValue = form.Value.extend({
                        this.modes = [
                                '', 'Legacy', true,
                                'n', 'N', hwmodelist.n,
-                               'ac', 'AC', hwmodelist.ac
+                               'ac', 'AC', hwmodelist.ac,
+                               'ax', 'AX', hwmodelist.ax
                        ];
 
                        var htmodelist = L.toArray(data[0] ? data[0].getHTModes() : null)
@@ -337,6 +347,12 @@ var CBIWifiFrequencyValue = form.Value.extend({
                                        'VHT40', '40 MHz', htmodelist.VHT40,
                                        'VHT80', '80 MHz', htmodelist.VHT80,
                                        'VHT160', '160 MHz', htmodelist.VHT160
+                               ],
+                               'ax': [
+                                       'HE20', '20 MHz', htmodelist.HE20,
+                                       'HE40', '40 MHz', htmodelist.HE40,
+                                       'HE80', '80 MHz', htmodelist.HE80,
+                                       'HE160', '160 MHz', htmodelist.HE160
                                ]
                        };
 
@@ -351,6 +367,10 @@ var CBIWifiFrequencyValue = form.Value.extend({
                                ],
                                'ac': [
                                        '11a', '5 GHz', true
+                               ],
+                               'ax': [
+                                       '11g', '2.4 GHz', this.channels['11g'].length > 3,
+                                       '11a', '5 GHz', this.channels['11a'].length > 3
                                ]
                        };
                }, this));