diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-10-08 14:48:29 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-10-08 14:48:29 +0000 |
commit | a1aec68e09778905a2f83e9fe886cda3c67c0f4b (patch) | |
tree | 8450a0f0e31400f3ff12c5d8623d436f3146bbe6 /package/iw/patches/120-per_chain_signal_strength.patch | |
parent | a1428e33be9fef11814a1bc768e7ddcf4ab853d8 (diff) | |
download | upstream-a1aec68e09778905a2f83e9fe886cda3c67c0f4b.tar.gz upstream-a1aec68e09778905a2f83e9fe886cda3c67c0f4b.tar.bz2 upstream-a1aec68e09778905a2f83e9fe886cda3c67c0f4b.zip |
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
Diffstat (limited to 'package/iw/patches/120-per_chain_signal_strength.patch')
-rw-r--r-- | package/iw/patches/120-per_chain_signal_strength.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/package/iw/patches/120-per_chain_signal_strength.patch b/package/iw/patches/120-per_chain_signal_strength.patch new file mode 100644 index 0000000000..abdd6381c0 --- /dev/null +++ b/package/iw/patches/120-per_chain_signal_strength.patch @@ -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"); |