luci-mod-network: add 802.11ax HE support

This commit adds the ability to configure HE-modes for radios
(HE20 / HE40 / HE80 / HE160) as well as HE rate information in the
assiciation view.

Tested-on: Ubiquiti UniFi 6 Lite / LR

Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
David Bauer 2021-04-20 17:42:02 +02:00
parent 7b11e848ac
commit f35e877dc6
2 changed files with 33 additions and 2 deletions

View file

@ -3982,6 +3982,17 @@ WifiNetwork = baseclass.extend(/** @lends LuCI.network.WifiNetwork.prototype */
* @property {number} [nss] * @property {number} [nss]
* Specifies the number of spatial streams used by the transmission. * Specifies the number of spatial streams used by the transmission.
* Only applicable to VHT rates. * 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.
*/ */
/** /**

View 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')), var s = '%.1f\xa0%s, %d\xa0%s'.format(rate.rate / 1000, _('Mbit/s'), rate.mhz, _('MHz')),
ht = rate.ht, vht = rate.vht, ht = rate.ht, vht = rate.vht,
mhz = rate.mhz, nss = rate.nss, 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 (ht || vht) {
if (vht) s += ', VHT-MCS\xa0%d'.format(mcs); 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 (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; return s;
} }
@ -320,7 +329,8 @@ var CBIWifiFrequencyValue = form.Value.extend({
this.modes = [ this.modes = [
'', 'Legacy', true, '', 'Legacy', true,
'n', 'N', hwmodelist.n, '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) var htmodelist = L.toArray(data[0] ? data[0].getHTModes() : null)
@ -337,6 +347,12 @@ var CBIWifiFrequencyValue = form.Value.extend({
'VHT40', '40 MHz', htmodelist.VHT40, 'VHT40', '40 MHz', htmodelist.VHT40,
'VHT80', '80 MHz', htmodelist.VHT80, 'VHT80', '80 MHz', htmodelist.VHT80,
'VHT160', '160 MHz', htmodelist.VHT160 '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': [ 'ac': [
'11a', '5 GHz', true '11a', '5 GHz', true
],
'ax': [
'11g', '2.4 GHz', this.channels['11g'].length > 3,
'11a', '5 GHz', this.channels['11a'].length > 3
] ]
}; };
}, this)); }, this));