From: Andre Heider Date: Mon, 21 Nov 2022 17:56:38 +0000 (+0100) Subject: cli: fix printing the scan channel width X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=49b6ec91e90df652b52eba2a0bfb37aa9414dfc5;p=project%2Fiwinfo.git cli: fix printing the scan channel width The "chan_width" var contains an index, not a value. While at it, make the 40 and 2040 description shorter and clearer. Signed-off-by: Andre Heider --- diff --git a/iwinfo_cli.c b/iwinfo_cli.c index 6ed60f2..c8436a4 100644 --- a/iwinfo_cli.c +++ b/iwinfo_cli.c @@ -340,16 +340,21 @@ static char * format_assocrate(struct iwinfo_rate_entry *r) return buf; } -static const char* format_chan_width(uint16_t width) -{ - switch (width) { - case 20: return "20 MHz"; - case 2040: return "40 MHz and upper or 20 MHz with intolerant bit"; - case 40: return "40 MHz or lower"; - case 80: return "80 MHz"; - case 8080: return "80+80 MHz"; - case 160: return "160 MHz"; - } +static const char* format_chan_width(bool vht, uint8_t width) +{ + if (!vht && width < ARRAY_SIZE(ht_chan_width)) + switch (ht_chan_width[width]) { + case 20: return "20 MHz"; + case 2040: return "40 MHz or higher"; + } + + if (vht && width < ARRAY_SIZE(vht_chan_width)) + switch (vht_chan_width[width]) { + case 40: return "20 or 40 MHz"; + case 80: return "80 MHz"; + case 8080: return "80+80 MHz"; + case 160: return "160 MHz"; + } return "unknown"; } @@ -674,16 +679,16 @@ static void print_scanlist(const struct iwinfo_ops *iw, const char *ifname) printf(" Secondary Channel Offset: %s\n", ht_secondary_offset[e->ht_chan_info.secondary_chan_off]); printf(" Channel Width: %s\n", - format_chan_width(e->ht_chan_info.chan_width)); + format_chan_width(false, e->ht_chan_info.chan_width)); if (e->vht_chan_info.center_chan_1) { printf(" VHT Operation:\n"); - printf(" Channel Width: %s\n", - format_chan_width(e->vht_chan_info.chan_width)); printf(" Center Frequency 1: %d\n", e->vht_chan_info.center_chan_1); printf(" Center Frequency 2: %d\n", e->vht_chan_info.center_chan_2); + printf(" Channel Width: %s\n", + format_chan_width(true, e->vht_chan_info.chan_width)); } printf("\n");