From 49b6ec91e90df652b52eba2a0bfb37aa9414dfc5 Mon Sep 17 00:00:00 2001 From: Andre Heider Date: Mon, 21 Nov 2022 18:56:38 +0100 Subject: [PATCH] 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 --- iwinfo_cli.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) 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"); -- 2.30.2