cli: fix marking the active channel

Match by frequency and not by channel as the radio might have the same
channel on multiple bands:

$ iwinfo radio0 freqlist
[snip]
* 2.432 GHz (Channel 5)
[snip]
* 5.975 GHz (Channel 5)
[snip]

Signed-off-by: Andre Heider <a.heider@gmail.com>
This commit is contained in:
Andre Heider 2022-11-17 21:59:46 +01:00 committed by Jo-Philipp Wich
parent 9e14e643c5
commit b1c8873e37

View file

@ -723,7 +723,7 @@ static void print_txpwrlist(const struct iwinfo_ops *iw, const char *ifname)
static void print_freqlist(const struct iwinfo_ops *iw, const char *ifname) static void print_freqlist(const struct iwinfo_ops *iw, const char *ifname)
{ {
int i, len, ch; int i, len, freq;
char buf[IWINFO_BUFSIZE]; char buf[IWINFO_BUFSIZE];
struct iwinfo_freqlist_entry *e; struct iwinfo_freqlist_entry *e;
@ -733,15 +733,15 @@ static void print_freqlist(const struct iwinfo_ops *iw, const char *ifname)
return; return;
} }
if (iw->channel(ifname, &ch)) if (iw->frequency(ifname, &freq))
ch = -1; freq = -1;
for (i = 0; i < len; i += sizeof(struct iwinfo_freqlist_entry)) for (i = 0; i < len; i += sizeof(struct iwinfo_freqlist_entry))
{ {
e = (struct iwinfo_freqlist_entry *) &buf[i]; e = (struct iwinfo_freqlist_entry *) &buf[i];
printf("%s %s (Channel %s)%s\n", printf("%s %s (Channel %s)%s\n",
(ch == e->channel) ? "*" : " ", (freq == e->mhz) ? "*" : " ",
format_frequency(e->mhz), format_frequency(e->mhz),
format_channel(e->channel), format_channel(e->channel),
e->restricted ? " [restricted]" : ""); e->restricted ? " [restricted]" : "");