net_sched: extend packet counter to 64bit
authorEric Dumazet <edumazet@google.com>
Tue, 5 Nov 2019 03:13:14 +0000 (19:13 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Nov 2019 02:20:55 +0000 (18:20 -0800)
After this change, qdisc packet counter is no longer
a 32bit quantity. We still export 32bit values to user.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/gen_stats.h
net/core/gen_stats.c
net/sched/act_simple.c

index 5f3889e7ec1bb8b5148e9c552dd222b7f1c077d8..1424e02cef90c0139a175933577f1b8537bce51a 100644 (file)
@@ -10,8 +10,8 @@
 /* Note: this used to be in include/uapi/linux/gen_stats.h */
 struct gnet_stats_basic_packed {
        __u64   bytes;
-       __u32   packets;
-} __attribute__ ((packed));
+       __u64   packets;
+};
 
 struct gnet_stats_basic_cpu {
        struct gnet_stats_basic_packed bstats;
index 36888f5e09eb9292eac289d80ced264d73040c50..fe33e2a9841e698dc1a0ac086086fa9832c0b514 100644 (file)
@@ -123,8 +123,7 @@ __gnet_stats_copy_basic_cpu(struct gnet_stats_basic_packed *bstats,
        for_each_possible_cpu(i) {
                struct gnet_stats_basic_cpu *bcpu = per_cpu_ptr(cpu, i);
                unsigned int start;
-               u64 bytes;
-               u32 packets;
+               u64 bytes, packets;
 
                do {
                        start = u64_stats_fetch_begin_irq(&bcpu->syncp);
index 97639b259cd7d1995727385bf8c69a4ee4737fca..9813ca4006dd1de145a1ccdde5eb0a4217cf487e 100644 (file)
@@ -35,7 +35,7 @@ static int tcf_simp_act(struct sk_buff *skb, const struct tc_action *a,
         * Example if this was the 3rd packet and the string was "hello"
         * then it would look like "hello_3" (without quotes)
         */
-       pr_info("simple: %s_%d\n",
+       pr_info("simple: %s_%llu\n",
               (char *)d->tcfd_defdata, d->tcf_bstats.packets);
        spin_unlock(&d->tcf_lock);
        return d->tcf_action;