iwinfo: add 802.11ax HE support

Expose 802.11ax HE rate as well as HW / HT mode information. This is
required to add 802.11ax support to LuCI.

Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
David Bauer 2021-04-17 23:42:30 +02:00
parent ccb75178cf
commit 7a560a1a57

View file

@ -260,6 +260,21 @@ rpc_iwinfo_call_htmodes(const char *name)
if (modes & IWINFO_HTMODE_VHT160) if (modes & IWINFO_HTMODE_VHT160)
blobmsg_add_string(&buf, NULL, "VHT160"); blobmsg_add_string(&buf, NULL, "VHT160");
if (modes & IWINFO_HTMODE_HE20)
blobmsg_add_string(&buf, NULL, "HE20");
if (modes & IWINFO_HTMODE_HE40)
blobmsg_add_string(&buf, NULL, "HE40");
if (modes & IWINFO_HTMODE_HE80)
blobmsg_add_string(&buf, NULL, "HE80");
if (modes & IWINFO_HTMODE_HE80_80)
blobmsg_add_string(&buf, NULL, "HE80+80");
if (modes & IWINFO_HTMODE_HE160)
blobmsg_add_string(&buf, NULL, "HE160");
blobmsg_close_array(&buf, c); blobmsg_close_array(&buf, c);
} }
} }
@ -280,6 +295,9 @@ rpc_iwinfo_call_hwmodes(const char *name)
if (modes & IWINFO_80211_AC) if (modes & IWINFO_80211_AC)
blobmsg_add_string(&buf, NULL, "ac"); blobmsg_add_string(&buf, NULL, "ac");
if (modes & IWINFO_80211_AX)
blobmsg_add_string(&buf, NULL, "ax");
if (modes & IWINFO_80211_A) if (modes & IWINFO_80211_A)
blobmsg_add_string(&buf, NULL, "a"); blobmsg_add_string(&buf, NULL, "a");
@ -332,6 +350,26 @@ static void rpc_iwinfo_call_hw_ht_mode()
htmode_str = "VHT160"; htmode_str = "VHT160";
hwmode_str = "ac"; hwmode_str = "ac";
break; break;
case IWINFO_HTMODE_HE20:
htmode_str = "HE20";
hwmode_str = "ax";
break;
case IWINFO_HTMODE_HE40:
htmode_str = "HE40";
hwmode_str = "ax";
break;
case IWINFO_HTMODE_HE80:
htmode_str = "HE80";
hwmode_str = "ax";
break;
case IWINFO_HTMODE_HE80_80:
htmode_str = "HE80+80";
hwmode_str = "ax";
break;
case IWINFO_HTMODE_HE160:
htmode_str = "HE160";
hwmode_str = "ax";
break;
case IWINFO_HTMODE_NOHT: case IWINFO_HTMODE_NOHT:
htmode_str = "20"; htmode_str = "20";
hwmode_str = "a/g"; hwmode_str = "a/g";
@ -491,6 +529,7 @@ rpc_iwinfo_add_rateinfo(struct iwinfo_rate_entry *r)
{ {
blobmsg_add_u8(&buf, "ht", r->is_ht); blobmsg_add_u8(&buf, "ht", r->is_ht);
blobmsg_add_u8(&buf, "vht", r->is_vht); blobmsg_add_u8(&buf, "vht", r->is_vht);
blobmsg_add_u8(&buf, "he", r->is_he);
blobmsg_add_u32(&buf, "mhz", r->mhz); blobmsg_add_u32(&buf, "mhz", r->mhz);
blobmsg_add_u32(&buf, "rate", r->rate); blobmsg_add_u32(&buf, "rate", r->rate);
@ -504,6 +543,12 @@ rpc_iwinfo_add_rateinfo(struct iwinfo_rate_entry *r)
blobmsg_add_u32(&buf, "nss", r->nss); blobmsg_add_u32(&buf, "nss", r->nss);
blobmsg_add_u8(&buf, "short_gi", r->is_short_gi); blobmsg_add_u8(&buf, "short_gi", r->is_short_gi);
} }
else if (r->is_he) {
blobmsg_add_u32(&buf, "mcs", r->mcs);
blobmsg_add_u32(&buf, "nss", r->nss);
blobmsg_add_u32(&buf, "he_gi", r->he_gi);
blobmsg_add_u32(&buf, "he_dcm", r->he_dcm);
}
} }
static int static int