iw: dump station rx bit rate information
PATCH 1/3 iw: dump station rx bit rate information
Signed-off-by Felix Fietkau <[email protected]>
--- iw.h | 2 +- link.c | 2 +- station.c | 12 ++++++++++-- 3 files changed, 12 insertions(+), 4 deletions(-)
iw.h +1 -1
@@ -170,7 +170,7 @@ enum print_ie_type {void print_ies (unsigned char *ie,int ielen,bool unknown,enum print_ie_type ptype); -void parse_tx_bitrate (struct nlattr *bitrate_attr,char *buf,int buflen); +void parse_bitrate (struct nlattr *bitrate_attr,char *buf,int buflen);DECLARE_SECTION (set);DECLARE_SECTION (get);
link.c +1 -1
@@ -165,7 +165,7 @@ static int print_link_sta(struct nl_msg *msg, void *arg)if (sinfo[NL80211_STA_INFO_TX_BITRATE ]) {char buf[100 ]; -parse_tx_bitrate (sinfo[NL80211_STA_INFO_TX_BITRATE ], buf,sizeof (buf)); +parse_bitrate (sinfo[NL80211_STA_INFO_TX_BITRATE ], buf,sizeof (buf));printf ("\ttx bitrate: %s\n" , buf); }
station.c +10 -2
@@ -43,7 +43,7 @@ static void print_power_mode(struct nlattr *a) } } -void parse_tx_bitrate (struct nlattr *bitrate_attr,char *buf,int buflen) +void parse_bitrate (struct nlattr *bitrate_attr,char *buf,int buflen) {int rate =0 ;char *pos = buf;
@@ -107,6 +107,7 @@ static int print_sta_handler(struct nl_msg *msg, void *arg) [NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 }, [NL80211_STA_INFO_T_OFFSET] = { .type = NLA_U64 }, [NL80211_STA_INFO_TX_BITRATE] = { .type = NLA_NESTED }, + [NL80211_STA_INFO_RX_BITRATE] = { .type = NLA_NESTED }, [NL80211_STA_INFO_LLID] = { .type = NLA_U16 }, [NL80211_STA_INFO_PLID] = { .type = NLA_U16 }, [NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 },
@@ -177,10 +178,17 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)if (sinfo[NL80211_STA_INFO_TX_BITRATE ]) {char buf[100 ]; -parse_tx_bitrate (sinfo[NL80211_STA_INFO_TX_BITRATE ], buf,sizeof (buf)); +parse_bitrate (sinfo[NL80211_STA_INFO_TX_BITRATE ], buf,sizeof (buf));printf ("\n\ttx bitrate:\t%s" , buf); } +if (sinfo[NL80211_STA_INFO_RX_BITRATE ]) { +char buf[100 ]; + +parse_bitrate (sinfo[NL80211_STA_INFO_RX_BITRATE ], buf,sizeof (buf)); +printf ("\n\trx bitrate:\t%s" , buf); + } +if (sinfo[NL80211_STA_INFO_LLID ])printf ("\n\tmesh llid:\t%d" ,nla_get_u16 (sinfo[NL80211_STA_INFO_LLID ]));
Signature · 1 line
1.8.0.2
PATCH 2/3 iw: dump station per-chain signal strength information
Signed-off-by Felix Fietkau <[email protected]>
--- station.c | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-)
station.c +41 -4
@@ -91,6 +91,33 @@ void parse_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen) " VHT-NSS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_VHT_NSS])); } +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)); + } + +if (i) +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 ];
@@ -118,7 +145,10 @@ static int print_sta_handler(struct nl_msg *msg, void *arg) [NL80211_STA_INFO_LOCAL_PM] = { .type = NLA_U32}, [NL80211_STA_INFO_PEER_PM] = { .type = NLA_U32}, [NL80211_STA_INFO_NONPEER_PM] = { .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 );
@@ -165,12 +195,19 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)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); +if (sinfo[NL80211_STA_INFO_T_OFFSET ])printf ("\n\tToffset:\t%lld us" , (unsigned long long )nla_get_u64 (sinfo[NL80211_STA_INFO_T_OFFSET ]));
Signature · 1 line
1.8.0.2
PATCH 3/3 iw: add the active monitor flag
In reply to Felix FietkauSigned-off-by Felix Fietkau <[email protected]>
--- interface.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
interface.c +3 -1
@@ -16,7 +16,8 @@"fcsfail: show frames with FCS errors\n" \"control: show control frames\n" \"otherbss: show frames from other BSSes\n" \ -"cook: use cooked mode" +"cook: use cooked mode\n" \ +"active: use active mode (ACK incoming unicast packets)" SECTION (interface);
@@ -27,6 +28,7 @@ static char *mntr_flags[NL80211_MNTR_FLAG_MAX + 1] = {"control" ,"otherbss" ,"cook" , + "active", }; static int parse_mntr_flags(int *_argc, char ***_argv,
Signature · 1 line
1.8.0.2
Johannes Berg
AppliedApplied all, thanks.
johannes