]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/sched: add const qualifiers to gnet_stats helpers
authorEric Dumazet <edumazet@google.com>
Sun, 10 May 2026 09:14:52 +0000 (09:14 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 12 May 2026 01:28:08 +0000 (18:28 -0700)
In preparation of lockless qdisc dumps, add const qualifiers to:

- gnet_stats_add_basic()
- gnet_stats_copy_basic()
- gnet_stats_copy_basic_hw()
- gnet_stats_copy_queue()
- gnet_stats_read_basic()
- ___gnet_stats_copy_basic()
- qdisc_qstats_copy()

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Link: https://patch.msgid.link/20260510091455.4039245-6-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/gen_stats.h
include/net/sch_generic.h
net/core/gen_stats.c

index 7aa2b8e1fb298c4f994a745b114fc4da785ddf4b..856b5e90fbdb81416c2297278926660f809a2338 100644 (file)
@@ -47,19 +47,19 @@ int gnet_stats_start_copy_compat(struct sk_buff *skb, int type,
                                 int padattr);
 
 int gnet_stats_copy_basic(struct gnet_dump *d,
-                         struct gnet_stats_basic_sync __percpu *cpu,
-                         struct gnet_stats_basic_sync *b, bool running);
+                         const struct gnet_stats_basic_sync __percpu *cpu,
+                         const struct gnet_stats_basic_sync *b, bool running);
 void gnet_stats_add_basic(struct gnet_stats_basic_sync *bstats,
-                         struct gnet_stats_basic_sync __percpu *cpu,
-                         struct gnet_stats_basic_sync *b, bool running);
+                         const struct gnet_stats_basic_sync __percpu *cpu,
+                         const struct gnet_stats_basic_sync *b, bool running);
 int gnet_stats_copy_basic_hw(struct gnet_dump *d,
-                            struct gnet_stats_basic_sync __percpu *cpu,
-                            struct gnet_stats_basic_sync *b, bool running);
+                            const struct gnet_stats_basic_sync __percpu *cpu,
+                            const struct gnet_stats_basic_sync *b, bool running);
 int gnet_stats_copy_rate_est(struct gnet_dump *d,
                             struct net_rate_estimator __rcu **ptr);
 int gnet_stats_copy_queue(struct gnet_dump *d,
-                         struct gnet_stats_queue __percpu *cpu_q,
-                         struct gnet_stats_queue *q, __u32 qlen);
+                         const struct gnet_stats_queue __percpu *cpu_q,
+                         const struct gnet_stats_queue *q, __u32 qlen);
 void gnet_stats_add_queue(struct gnet_stats_queue *qstats,
                          const struct gnet_stats_queue __percpu *cpu_q,
                          const struct gnet_stats_queue *q);
index 0edf05d56862b113a9468ef2175d203123814ec5..2ce84b2c9423ee3b945c0a537620b2568279e1ca 100644 (file)
@@ -1054,7 +1054,7 @@ static inline void qdisc_qstats_overlimit(struct Qdisc *sch)
        WRITE_ONCE(sch->qstats.overlimits, sch->qstats.overlimits + 1);
 }
 
-static inline int qdisc_qstats_copy(struct gnet_dump *d, struct Qdisc *sch)
+static inline int qdisc_qstats_copy(struct gnet_dump *d, const struct Qdisc *sch)
 {
        __u32 qlen = qdisc_qlen_sum(sch);
 
index 1a2380e74272de8eaf3d4ef453e56105a31e9edf..9468bc5ca3f46d09c267514bef62e88851c9040b 100644 (file)
@@ -124,13 +124,13 @@ void gnet_stats_basic_sync_init(struct gnet_stats_basic_sync *b)
 EXPORT_SYMBOL(gnet_stats_basic_sync_init);
 
 static void gnet_stats_add_basic_cpu(struct gnet_stats_basic_sync *bstats,
-                                    struct gnet_stats_basic_sync __percpu *cpu)
+                                    const struct gnet_stats_basic_sync __percpu *cpu)
 {
        u64 t_bytes = 0, t_packets = 0;
        int i;
 
        for_each_possible_cpu(i) {
-               struct gnet_stats_basic_sync *bcpu = per_cpu_ptr(cpu, i);
+               const struct gnet_stats_basic_sync *bcpu = per_cpu_ptr(cpu, i);
                unsigned int start;
                u64 bytes, packets;
 
@@ -147,8 +147,8 @@ static void gnet_stats_add_basic_cpu(struct gnet_stats_basic_sync *bstats,
 }
 
 void gnet_stats_add_basic(struct gnet_stats_basic_sync *bstats,
-                         struct gnet_stats_basic_sync __percpu *cpu,
-                         struct gnet_stats_basic_sync *b, bool running)
+                         const struct gnet_stats_basic_sync __percpu *cpu,
+                         const struct gnet_stats_basic_sync *b, bool running)
 {
        unsigned int start;
        u64 bytes = 0;
@@ -172,8 +172,8 @@ void gnet_stats_add_basic(struct gnet_stats_basic_sync *bstats,
 EXPORT_SYMBOL(gnet_stats_add_basic);
 
 static void gnet_stats_read_basic(u64 *ret_bytes, u64 *ret_packets,
-                                 struct gnet_stats_basic_sync __percpu *cpu,
-                                 struct gnet_stats_basic_sync *b, bool running)
+                                 const struct gnet_stats_basic_sync __percpu *cpu,
+                                 const struct gnet_stats_basic_sync *b, bool running)
 {
        unsigned int start;
 
@@ -182,8 +182,7 @@ static void gnet_stats_read_basic(u64 *ret_bytes, u64 *ret_packets,
                int i;
 
                for_each_possible_cpu(i) {
-                       struct gnet_stats_basic_sync *bcpu = per_cpu_ptr(cpu, i);
-                       unsigned int start;
+                       const struct gnet_stats_basic_sync *bcpu = per_cpu_ptr(cpu, i);
                        u64 bytes, packets;
 
                        do {
@@ -209,8 +208,8 @@ static void gnet_stats_read_basic(u64 *ret_bytes, u64 *ret_packets,
 
 static int
 ___gnet_stats_copy_basic(struct gnet_dump *d,
-                        struct gnet_stats_basic_sync __percpu *cpu,
-                        struct gnet_stats_basic_sync *b,
+                        const struct gnet_stats_basic_sync __percpu *cpu,
+                        const struct gnet_stats_basic_sync *b,
                         int type, bool running)
 {
        u64 bstats_bytes, bstats_packets;
@@ -258,8 +257,8 @@ ___gnet_stats_copy_basic(struct gnet_dump *d,
  */
 int
 gnet_stats_copy_basic(struct gnet_dump *d,
-                     struct gnet_stats_basic_sync __percpu *cpu,
-                     struct gnet_stats_basic_sync *b,
+                     const struct gnet_stats_basic_sync __percpu *cpu,
+                     const struct gnet_stats_basic_sync *b,
                      bool running)
 {
        return ___gnet_stats_copy_basic(d, cpu, b, TCA_STATS_BASIC, running);
@@ -285,8 +284,8 @@ EXPORT_SYMBOL(gnet_stats_copy_basic);
  */
 int
 gnet_stats_copy_basic_hw(struct gnet_dump *d,
-                        struct gnet_stats_basic_sync __percpu *cpu,
-                        struct gnet_stats_basic_sync *b,
+                        const struct gnet_stats_basic_sync __percpu *cpu,
+                        const struct gnet_stats_basic_sync *b,
                         bool running)
 {
        return ___gnet_stats_copy_basic(d, cpu, b, TCA_STATS_BASIC_HW, running);
@@ -385,8 +384,8 @@ EXPORT_SYMBOL(gnet_stats_add_queue);
  */
 int
 gnet_stats_copy_queue(struct gnet_dump *d,
-                     struct gnet_stats_queue __percpu *cpu_q,
-                     struct gnet_stats_queue *q, __u32 qlen)
+                     const struct gnet_stats_queue __percpu *cpu_q,
+                     const struct gnet_stats_queue *q, __u32 qlen)
 {
        struct gnet_stats_queue qstats = {0};