diff mbox

[v2] iw: display allowable channel bandwidth information

Message ID 1425452686-28196-1-git-send-email-arnagara@qti.qualcomm.com (mailing list archive)
State Changes Requested
Delegated to: Johannes Berg
Headers show

Commit Message

Ashok Raj Nagarajan March 4, 2015, 7:04 a.m. UTC
We already have allowable channel bandwidth information at userspace.
Display this information with 'iw list'. Excerpt of iw list command

Frequencies:
	* 5180 MHz [36] (17.0 dBm)
	  (10MHZ, 20MHZ, HT40+, VHT80, VHT160)
	* 5200 MHz [40] (17.0 dBm)
	  (10MHZ, 20MHZ, HT40-, HT40+, VHT80, VHT160)

Signed-off-by: Ashok Raj Nagarajan <arnagara@qti.qualcomm.com>
---
v2:
	Display channel bw information in separate line (Johannes)
	Updated commit log to reflect above change.
 info.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

Johannes Berg March 17, 2015, 10:18 a.m. UTC | #1
On Wed, 2015-03-04 at 12:34 +0530, Ashok Raj Nagarajan wrote:
> We already have allowable channel bandwidth information at userspace.
> Display this information with 'iw list'. Excerpt of iw list command
> 
> Frequencies:
> 	* 5180 MHz [36] (17.0 dBm)
> 	  (10MHZ, 20MHZ, HT40+, VHT80, VHT160)
> 	* 5200 MHz [40] (17.0 dBm)
> 	  (10MHZ, 20MHZ, HT40-, HT40+, VHT80, VHT160)
> 
> Signed-off-by: Ashok Raj Nagarajan <arnagara@qti.qualcomm.com>
> ---
> v2:
> 	Display channel bw information in separate line (Johannes)
> 	Updated commit log to reflect above change.

Thanks for the changes.

I was going to apply this, but then I realized that the above example is
probably incorrect, since I'm guessing it was done on a driver that
doesn't actually support 10 MHz? And if it was then it probably also
supported 5 MHz...

Now, the annoying thing is that to display the possible bandwidth we
need to parse a lot more information - i.e. the "supports 5 MHz" and
"supports 10 MHz" flags, along with the HT/VHT information.

The even more annoying thing is that we get that information only in
later nl80211 messages while printing this, so we can no longer parse
things in the right order.

One technical alternative would be to print exactly the attributes, i.e.
"no 5 MHz", "no 10 MHz", etc. instead of inverting and printing what's
supported, but that's perhaps a little too unfriendly for users?

I guess we can first collect all messages and print all the data later,
parsing them first for the capabilities and then the channels, but that
seems like a pretty big code change?

Additionally, the channel display information in "iw list" is getting
pretty big these days. Perhaps we should have a separate command that
prints the channel list with all the detail information, and then that
command can do all of the above?

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/info.c b/info.c
index 1df503f..728cb87 100644
--- a/info.c
+++ b/info.c
@@ -189,6 +189,31 @@  next:
 						printf(")");
 					printf("\n");
 
+					if (!tb_freq[NL80211_FREQUENCY_ATTR_DISABLED]) {
+						open = 0;
+						printf("\t\t\t ");
+						if (!tb_freq[NL80211_FREQUENCY_ATTR_NO_10MHZ])
+							print_flag("10MHz", &open);
+
+						if (!tb_freq[NL80211_FREQUENCY_ATTR_NO_20MHZ])
+							print_flag("20MHz", &open);
+
+						if (!tb_freq[NL80211_FREQUENCY_ATTR_NO_HT40_MINUS])
+							print_flag("HT40-", &open);
+
+						if (!tb_freq[NL80211_FREQUENCY_ATTR_NO_HT40_PLUS])
+							print_flag("HT40+", &open);
+
+						if (!tb_freq[NL80211_FREQUENCY_ATTR_NO_80MHZ])
+							print_flag("VHT80", &open);
+
+						if (!tb_freq[NL80211_FREQUENCY_ATTR_NO_160MHZ])
+							print_flag("VHT160", &open);
+						if (open)
+							printf(")");
+						printf("\n");
+					}
+
 					if (!tb_freq[NL80211_FREQUENCY_ATTR_DISABLED] && tb_freq[NL80211_FREQUENCY_ATTR_DFS_STATE]) {
 						enum nl80211_dfs_state state = nla_get_u32(tb_freq[NL80211_FREQUENCY_ATTR_DFS_STATE]);
 						unsigned long time;