--- a/station.c +++ b/station.c @@ -43,7 +43,7 @@ static void print_power_mode(struct nlat } } -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_m [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_m 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])); --- a/iw.h +++ b/iw.h @@ -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); --- a/link.c +++ b/link.c @@ -165,7 +165,7 @@ static int print_link_sta(struct nl_msg 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); }