kernel: fq_codel: dont reinit flow state
[openwrt/staging/mkresin.git] / package / iw / patches / 100-rx_rate.patch
1 --- a/station.c
2 +++ b/station.c
3 @@ -29,13 +29,47 @@ enum plink_actions {
4 PLINK_ACTION_BLOCK,
5 };
6
7 +static void print_sta_bitrate(struct nlattr *nla, const char *name)
8 +{
9 + struct nlattr *rinfo[NL80211_RATE_INFO_MAX + 1];
10 +
11 + static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
12 + [NL80211_RATE_INFO_BITRATE] = { .type = NLA_U16 },
13 + [NL80211_RATE_INFO_BITRATE32] = { .type = NLA_U32 },
14 + [NL80211_RATE_INFO_MCS] = { .type = NLA_U8 },
15 + [NL80211_RATE_INFO_40_MHZ_WIDTH] = { .type = NLA_FLAG },
16 + [NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
17 + };
18 +
19 + if (!nla)
20 + return;
21 +
22 + if (nla_parse_nested(rinfo, NL80211_RATE_INFO_MAX, nla, rate_policy)) {
23 + fprintf(stderr, "failed to parse nested rate attributes!\n");
24 + } else {
25 + int rate = 0;
26 + printf("\n\t%s:\t", name);
27 + if (rinfo[NL80211_RATE_INFO_BITRATE32])
28 + rate = nla_get_u32(rinfo[NL80211_RATE_INFO_BITRATE32]);
29 + else if (rinfo[NL80211_RATE_INFO_BITRATE])
30 + rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
31 + if (rate > 0)
32 + printf("%d.%d MBit/s", rate / 10, rate % 10);
33 +
34 + if (rinfo[NL80211_RATE_INFO_MCS])
35 + printf(" MCS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_MCS]));
36 + if (rinfo[NL80211_RATE_INFO_40_MHZ_WIDTH])
37 + printf(" 40Mhz");
38 + if (rinfo[NL80211_RATE_INFO_SHORT_GI])
39 + printf(" short GI");
40 + }
41 +}
42
43 static int print_sta_handler(struct nl_msg *msg, void *arg)
44 {
45 struct nlattr *tb[NL80211_ATTR_MAX + 1];
46 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
47 struct nlattr *sinfo[NL80211_STA_INFO_MAX + 1];
48 - struct nlattr *rinfo[NL80211_RATE_INFO_MAX + 1];
49 char mac_addr[20], state_name[10], dev[20];
50 struct nl80211_sta_flag_update *sta_flags;
51 static struct nla_policy stats_policy[NL80211_STA_INFO_MAX + 1] = {
52 @@ -47,6 +81,7 @@ static int print_sta_handler(struct nl_m
53 [NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 },
54 [NL80211_STA_INFO_T_OFFSET] = { .type = NLA_U64 },
55 [NL80211_STA_INFO_TX_BITRATE] = { .type = NLA_NESTED },
56 + [NL80211_STA_INFO_RX_BITRATE] = { .type = NLA_NESTED },
57 [NL80211_STA_INFO_LLID] = { .type = NLA_U16 },
58 [NL80211_STA_INFO_PLID] = { .type = NLA_U16 },
59 [NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 },
60 @@ -56,14 +91,6 @@ static int print_sta_handler(struct nl_m
61 { .minlen = sizeof(struct nl80211_sta_flag_update) },
62 };
63
64 - static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
65 - [NL80211_RATE_INFO_BITRATE] = { .type = NLA_U16 },
66 - [NL80211_RATE_INFO_BITRATE32] = { .type = NLA_U32 },
67 - [NL80211_RATE_INFO_MCS] = { .type = NLA_U8 },
68 - [NL80211_RATE_INFO_40_MHZ_WIDTH] = { .type = NLA_FLAG },
69 - [NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
70 - };
71 -
72 nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
73 genlmsg_attrlen(gnlh, 0), NULL);
74
75 @@ -119,28 +146,8 @@ static int print_sta_handler(struct nl_m
76 printf("\n\tToffset:\t%lld us",
77 (unsigned long long)nla_get_u64(sinfo[NL80211_STA_INFO_T_OFFSET]));
78
79 - if (sinfo[NL80211_STA_INFO_TX_BITRATE]) {
80 - if (nla_parse_nested(rinfo, NL80211_RATE_INFO_MAX,
81 - sinfo[NL80211_STA_INFO_TX_BITRATE], rate_policy)) {
82 - fprintf(stderr, "failed to parse nested rate attributes!\n");
83 - } else {
84 - int rate = 0;
85 - printf("\n\ttx bitrate:\t");
86 - if (rinfo[NL80211_RATE_INFO_BITRATE32])
87 - rate = nla_get_u32(rinfo[NL80211_RATE_INFO_BITRATE32]);
88 - else if (rinfo[NL80211_RATE_INFO_BITRATE])
89 - rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
90 - if (rate > 0)
91 - printf("%d.%d MBit/s", rate / 10, rate % 10);
92 -
93 - if (rinfo[NL80211_RATE_INFO_MCS])
94 - printf(" MCS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_MCS]));
95 - if (rinfo[NL80211_RATE_INFO_40_MHZ_WIDTH])
96 - printf(" 40Mhz");
97 - if (rinfo[NL80211_RATE_INFO_SHORT_GI])
98 - printf(" short GI");
99 - }
100 - }
101 + print_sta_bitrate(sinfo[NL80211_STA_INFO_TX_BITRATE], "tx bitrate");
102 + print_sta_bitrate(sinfo[NL80211_STA_INFO_RX_BITRATE], "rx bitrate");
103
104 if (sinfo[NL80211_STA_INFO_LLID])
105 printf("\n\tmesh llid:\t%d",