]> git.ipfire.org Git - thirdparty/iw.git/commitdiff
Prefer 32-bit bitrate
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Thu, 5 Jul 2012 11:36:19 +0000 (14:36 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 6 Jul 2012 06:56:57 +0000 (08:56 +0200)
If 32-bit bitrate reported, use it. Otherwise, use 16-bit one.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
link.c
station.c

diff --git a/link.c b/link.c
index 11ee0aa14be474b32cd178350eaf62c96a1b1a90..eb27de2f2ddabd510c1f05ca52b1fc8230040ff6 100644 (file)
--- a/link.c
+++ b/link.c
@@ -131,6 +131,7 @@ static int print_link_sta(struct nl_msg *msg, void *arg)
 
        static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
                [NL80211_RATE_INFO_BITRATE] = { .type = NLA_U16 },
+               [NL80211_RATE_INFO_BITRATE32] = { .type = NLA_U32 },
                [NL80211_RATE_INFO_MCS] = { .type = NLA_U8 },
                [NL80211_RATE_INFO_40_MHZ_WIDTH] = { .type = NLA_FLAG },
                [NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
@@ -174,11 +175,14 @@ static int print_link_sta(struct nl_msg *msg, void *arg)
                                     sinfo[NL80211_STA_INFO_TX_BITRATE], rate_policy)) {
                        fprintf(stderr, "failed to parse nested rate attributes!\n");
                } else {
+                       int rate = 0;
                        printf("\ttx bitrate: ");
-                       if (rinfo[NL80211_RATE_INFO_BITRATE]) {
-                               int rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+                       if (rinfo[NL80211_RATE_INFO_BITRATE32])
+                               rate = nla_get_u32(rinfo[NL80211_RATE_INFO_BITRATE32]);
+                       else if (rinfo[NL80211_RATE_INFO_BITRATE])
+                               rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+                       if (rate > 0)
                                printf("%d.%d MBit/s", rate / 10, rate % 10);
-                       }
 
                        if (rinfo[NL80211_RATE_INFO_MCS])
                                printf(" MCS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_MCS]));
index ac73e48d448dd08ef928768195084e15c17b5560..45e84adca426fa7e2cc135a23734a9904df69b01 100644 (file)
--- a/station.c
+++ b/station.c
@@ -58,6 +58,7 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)
 
        static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
                [NL80211_RATE_INFO_BITRATE] = { .type = NLA_U16 },
+               [NL80211_RATE_INFO_BITRATE32] = { .type = NLA_U32 },
                [NL80211_RATE_INFO_MCS] = { .type = NLA_U8 },
                [NL80211_RATE_INFO_40_MHZ_WIDTH] = { .type = NLA_FLAG },
                [NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
@@ -123,11 +124,14 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)
                                     sinfo[NL80211_STA_INFO_TX_BITRATE], rate_policy)) {
                        fprintf(stderr, "failed to parse nested rate attributes!\n");
                } else {
+                       int rate = 0;
                        printf("\n\ttx bitrate:\t");
-                       if (rinfo[NL80211_RATE_INFO_BITRATE]) {
-                               int rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+                       if (rinfo[NL80211_RATE_INFO_BITRATE32])
+                               rate = nla_get_u32(rinfo[NL80211_RATE_INFO_BITRATE32]);
+                       else if (rinfo[NL80211_RATE_INFO_BITRATE])
+                               rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+                       if (rate > 0)
                                printf("%d.%d MBit/s", rate / 10, rate % 10);
-                       }
 
                        if (rinfo[NL80211_RATE_INFO_MCS])
                                printf(" MCS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_MCS]));