mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
iw: update to v3.1, add support for per-chain signal strength info
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28385 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
68
package/iw/patches/120-per_chain_signal_strength.patch
Normal file
68
package/iw/patches/120-per_chain_signal_strength.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
--- a/station.c
|
||||
+++ b/station.c
|
||||
@@ -61,6 +61,31 @@ static void print_sta_bitrate(struct nla
|
||||
}
|
||||
}
|
||||
|
||||
+static char *get_chain_signal(struct nlattr *attr_list)
|
||||
+{
|
||||
+ struct nlattr *attr;
|
||||
+ static char buf[64];
|
||||
+ char *cur = buf;
|
||||
+ int i = 0, rem;
|
||||
+ const char *prefix;
|
||||
+
|
||||
+ if (!attr_list)
|
||||
+ return "";
|
||||
+
|
||||
+ nla_for_each_nested(attr, attr_list, rem) {
|
||||
+ if (i++ > 0)
|
||||
+ prefix = ", ";
|
||||
+ else
|
||||
+ prefix = "[";
|
||||
+
|
||||
+ cur += snprintf(cur, sizeof(buf) - (cur - buf), "%s%d", prefix,
|
||||
+ (int8_t) nla_get_u8(attr));
|
||||
+ }
|
||||
+ snprintf(cur, sizeof(buf) - (cur - buf), "] ");
|
||||
+
|
||||
+ return buf;
|
||||
+}
|
||||
+
|
||||
static int print_sta_handler(struct nl_msg *msg, void *arg)
|
||||
{
|
||||
struct nlattr *tb[NL80211_ATTR_MAX + 1];
|
||||
@@ -81,7 +106,10 @@ static int print_sta_handler(struct nl_m
|
||||
[NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 },
|
||||
[NL80211_STA_INFO_TX_RETRIES] = { .type = NLA_U32 },
|
||||
[NL80211_STA_INFO_TX_FAILED] = { .type = NLA_U32 },
|
||||
+ [NL80211_STA_INFO_CHAIN_SIGNAL] = { .type = NLA_NESTED },
|
||||
+ [NL80211_STA_INFO_CHAIN_SIGNAL_AVG] = { .type = NLA_NESTED },
|
||||
};
|
||||
+ char *chain;
|
||||
|
||||
nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
|
||||
genlmsg_attrlen(gnlh, 0), NULL);
|
||||
@@ -128,12 +156,18 @@ static int print_sta_handler(struct nl_m
|
||||
if (sinfo[NL80211_STA_INFO_TX_FAILED])
|
||||
printf("\n\ttx failed:\t%u",
|
||||
nla_get_u32(sinfo[NL80211_STA_INFO_TX_FAILED]));
|
||||
+
|
||||
+ chain = get_chain_signal(sinfo[NL80211_STA_INFO_CHAIN_SIGNAL]);
|
||||
if (sinfo[NL80211_STA_INFO_SIGNAL])
|
||||
- printf("\n\tsignal: \t%d dBm",
|
||||
- (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL]));
|
||||
+ printf("\n\tsignal: \t%d %sdBm",
|
||||
+ (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL]),
|
||||
+ chain);
|
||||
+
|
||||
+ chain = get_chain_signal(sinfo[NL80211_STA_INFO_CHAIN_SIGNAL_AVG]);
|
||||
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]));
|
||||
+ printf("\n\tsignal avg:\t%d %sdBm",
|
||||
+ (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG]),
|
||||
+ chain);
|
||||
|
||||
print_sta_bitrate(sinfo[NL80211_STA_INFO_TX_BITRATE], "tx bitrate");
|
||||
print_sta_bitrate(sinfo[NL80211_STA_INFO_RX_BITRATE], "rx bitrate");
|
||||
Reference in New Issue
Block a user