2011-01-11 00:50:14

by Bruno Randolf

[permalink] [raw]
Subject: [PATCH v2 1/4] iw: survey: Mark frequency in use

From: Felix Fietkau <[email protected]>

Survey: Mark frequency in use according to NL80211_SURVEY_INFO_IN_USE.

This patch comes from OpenWRT. Original author: Felix Fietkau

Cc: Felix Fietkau <[email protected]>
Signed-off-by: Bruno Randolf <[email protected]>
---
survey.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/survey.c b/survey.c
index f9f2508..83c54b3 100644
--- a/survey.c
+++ b/survey.c
@@ -44,8 +44,9 @@ static int print_survey_handler(struct nl_msg *msg, void *arg)
}

if (sinfo[NL80211_SURVEY_INFO_FREQUENCY])
- printf("\tfrequency:\t%u MHz\n",
- nla_get_u32(sinfo[NL80211_SURVEY_INFO_FREQUENCY]));
+ printf("\tfrequency:\t%u MHz%s\n",
+ nla_get_u32(sinfo[NL80211_SURVEY_INFO_FREQUENCY]),
+ sinfo[NL80211_SURVEY_INFO_IN_USE] ? " [in use]" : "");
if (sinfo[NL80211_SURVEY_INFO_NOISE])
printf("\tnoise:\t\t%d dBm\n",
(int8_t)nla_get_u8(sinfo[NL80211_SURVEY_INFO_NOISE]));



2011-01-11 00:50:25

by Bruno Randolf

[permalink] [raw]
Subject: [PATCH v2 4/4] iw: Add signal average to station dump information

Print station signal average in station dump.

Signed-off-by: Bruno Randolf <[email protected]>
---
station.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/station.c b/station.c
index be2301f..6581d50 100644
--- a/station.c
+++ b/station.c
@@ -107,6 +107,9 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)
if (sinfo[NL80211_STA_INFO_SIGNAL])
printf("\n\tsignal: \t%d dBm",
(int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL]));
+ if (sinfo[NL80211_STA_INFO_SIGNAL_AVG])
+ printf("\n\tsignal avg:\t%d dBm",
+ (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG]));

if (sinfo[NL80211_STA_INFO_TX_BITRATE]) {
if (nla_parse_nested(rinfo, NL80211_RATE_INFO_MAX,


2011-01-11 09:19:03

by Bruno Randolf

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] iw: Add channel busy time to survey

On Tue January 11 2011 17:32:24 Johannes Berg wrote:
> I've fixed it up, but two things: You should've lost the "original
> author" crap after you fixed up the git author field.

Sorry for that.

> Secondly,
>
> > + printf("\tchannel receive time:\t\t%llu ms\n",
> > +
> > (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX]));
>
> caused warnings:
> survey.c: In function ‘print_survey_handler’:
> survey.c:55: warning: format ‘%llu’ expects type ‘long long unsigned int’,
> but argument 2 has type ‘uint64_t’ survey.c:58: warning: format ‘%llu’
> expects type ‘long long unsigned int’, but argument 2 has type ‘uint64_t’
> survey.c:61: warning: format ‘%llu’ expects type ‘long long unsigned int’,
> but argument 2 has type ‘uint64_t’ survey.c:64: warning: format ‘%llu’
> expects type ‘long long unsigned int’, but argument 2 has type ‘uint64_t’
> survey.c:67: warning: format ‘%llu’ expects type ‘long long unsigned int’,
> but argument 2 has type ‘uint64_t’
>
>
> because uint64_t isn't guaranteed to be unsigned long long (in fact, it
> is unsigned long on many machines). Please look at the commit and check.

Looks good & compiles on my platforms (x86, mips).

Thanks,
bruno

2011-01-11 00:50:20

by Bruno Randolf

[permalink] [raw]
Subject: [PATCH v2 3/4] iw: add multicast rates to IBSS join

From: Felix Fietkau <[email protected]>

Add multicast rates to IBSS join command.

This patch comes from OpenWRT. Original author: Felix Fietkau.

Cc: Felix Fietkau <[email protected]>
Signed-off-by: Bruno Randolf <[email protected]>
---
ibss.c | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/ibss.c b/ibss.c
index 84ea7f2..ca8a4ec 100644
--- a/ibss.c
+++ b/ibss.c
@@ -95,6 +95,20 @@ static int join_ibss(struct nl80211_state *state,
argc--;
}

+ /* multicast rate */
+ if (argc > 1 && strcmp(argv[0], "mcast-rate") == 0) {
+ argv++;
+ argc--;
+
+ rate = strtod(argv[0], &end);
+ if (*end != '\0')
+ return 1;
+
+ NLA_PUT_U32(msg, NL80211_ATTR_MCAST_RATE, (int) rate * 10);
+ argv++;
+ argc--;
+ }
+
if (!argc)
return 0;

@@ -120,12 +134,13 @@ COMMAND(ibss, leave, NULL,
NL80211_CMD_LEAVE_IBSS, 0, CIB_NETDEV, leave_ibss,
"Leave the current IBSS cell.");
COMMAND(ibss, join,
- "<SSID> <freq in MHz> [fixed-freq] [<fixed bssid>] [beacon-interval "
- "<TU>] [basic-rates <rate in Mbps,rate2,...>] [key d:0:abcde]",
+ "<SSID> <freq in MHz> [fixed-freq] [<fixed bssid>] [beacon-interval <TU>]"
+ " [basic-rates <rate in Mbps,rate2,...>] [mcast-rate <rate in Mbps>] "
+ "[key d:0:abcde]",
NL80211_CMD_JOIN_IBSS, 0, CIB_NETDEV, join_ibss,
"Join the IBSS cell with the given SSID, if it doesn't exist create\n"
"it on the given frequency. When fixed frequency is requested, don't\n"
"join/create a cell on a different frequency. When a fixed BSSID is\n"
"requested use that BSSID and do not adopt another cell's BSSID even\n"
"if it has higher TSF and the same SSID. If an IBSS is created, create\n"
- "it with the specified basic-rates and beacon-interval (in TU).");
+ "it with the specified basic-rates, multicast-rate and beacon-interval.");


2011-01-11 00:50:14

by Bruno Randolf

[permalink] [raw]
Subject: [PATCH v2 2/4] iw: Add channel busy time to survey

From: Felix Fietkau <[email protected]>

Print channel busy time in survey dump.

This patch comes from OpenWRT. Original author: Felix Fietkau.
Fixed up for unsigned values.

Cc: Felix Fietkau <[email protected]>
Signed-off-by: Bruno Randolf <[email protected]>
---
survey.c | 19 +++++++++++++++++--
1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/survey.c b/survey.c
index 83c54b3..e71d21b 100644
--- a/survey.c
+++ b/survey.c
@@ -44,12 +44,27 @@ static int print_survey_handler(struct nl_msg *msg, void *arg)
}

if (sinfo[NL80211_SURVEY_INFO_FREQUENCY])
- printf("\tfrequency:\t%u MHz%s\n",
+ printf("\tfrequency:\t\t\t%u MHz%s\n",
nla_get_u32(sinfo[NL80211_SURVEY_INFO_FREQUENCY]),
sinfo[NL80211_SURVEY_INFO_IN_USE] ? " [in use]" : "");
if (sinfo[NL80211_SURVEY_INFO_NOISE])
- printf("\tnoise:\t\t%d dBm\n",
+ printf("\tnoise:\t\t\t\t%d dBm\n",
(int8_t)nla_get_u8(sinfo[NL80211_SURVEY_INFO_NOISE]));
+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME])
+ printf("\tchannel active time:\t\t%llu ms\n",
+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME]));
+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY])
+ printf("\tchannel busy time:\t\t%llu ms\n",
+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY]));
+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY])
+ printf("\textension channel busy time:\t%llu ms\n",
+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY]));
+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX])
+ printf("\tchannel receive time:\t\t%llu ms\n",
+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX]));
+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_TX])
+ printf("\tchannel transmit time:\t\t%llu ms\n",
+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_TX]));
return NL_SKIP;
}



2011-01-11 08:32:28

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] iw: Add channel busy time to survey

On Tue, 2011-01-11 at 09:51 +0900, Bruno Randolf wrote:
> From: Felix Fietkau <[email protected]>
>
> Print channel busy time in survey dump.
>
> This patch comes from OpenWRT. Original author: Felix Fietkau.
> Fixed up for unsigned values.

I've fixed it up, but two things: You should've lost the "original
author" crap after you fixed up the git author field.

Secondly,

>
> + printf("\tchannel receive time:\t\t%llu ms\n",
> + (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX]));

caused warnings:
survey.c: In function ‘print_survey_handler’:
survey.c:55: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 2 has type ‘uint64_t’
survey.c:58: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 2 has type ‘uint64_t’
survey.c:61: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 2 has type ‘uint64_t’
survey.c:64: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 2 has type ‘uint64_t’
survey.c:67: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 2 has type ‘uint64_t’


because uint64_t isn't guaranteed to be unsigned long long (in fact, it
is unsigned long on many machines). Please look at the commit and check.

johannes