net: move dev_tx_weight to net_hotdata
authorEric Dumazet <edumazet@google.com>
Wed, 6 Mar 2024 16:00:21 +0000 (16:00 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 8 Mar 2024 05:12:42 +0000 (21:12 -0800)
dev_tx_weight is used in tx fast path.

Move it to net_hotdata for better cache locality.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20240306160031.874438-9-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/netdevice.h
include/net/hotdata.h
net/core/dev.c
net/core/hotdata.c
net/core/sysctl_net_core.c
net/sched/sch_generic.c

index c9a671b..ad4b031 100644 (file)
@@ -4794,7 +4794,6 @@ void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
 void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s);
 
 extern int             dev_rx_weight;
-extern int             dev_tx_weight;
 
 enum {
        NESTED_SYNC_IMM_BIT,
index d86d02f..ffea9cc 100644 (file)
@@ -21,6 +21,7 @@ struct net_hotdata {
        int                     netdev_budget_usecs;
        int                     tstamp_prequeue;
        int                     max_backlog;
+       int                     dev_tx_weight;
 };
 
 extern struct net_hotdata net_hotdata;
index e23edba..5d6bd48 100644 (file)
@@ -4409,7 +4409,6 @@ int weight_p __read_mostly = 64;           /* old backlog weight */
 int dev_weight_rx_bias __read_mostly = 1;  /* bias for backlog weight */
 int dev_weight_tx_bias __read_mostly = 1;  /* bias for output_queue quota */
 int dev_rx_weight __read_mostly = 64;
-int dev_tx_weight __read_mostly = 64;
 
 /* Called with irq disabled */
 static inline void ____napi_schedule(struct softnet_data *sd,
index 35ed5a8..ec8c3b4 100644 (file)
@@ -16,5 +16,6 @@ struct net_hotdata net_hotdata __cacheline_aligned = {
 
        .tstamp_prequeue = 1,
        .max_backlog = 1000,
+       .dev_tx_weight = 64,
 };
 EXPORT_SYMBOL(net_hotdata);
index 8eaeeb2..a30016a 100644 (file)
@@ -302,7 +302,7 @@ static int proc_do_dev_weight(struct ctl_table *table, int write,
        if (!ret && write) {
                weight = READ_ONCE(weight_p);
                WRITE_ONCE(dev_rx_weight, weight * dev_weight_rx_bias);
-               WRITE_ONCE(dev_tx_weight, weight * dev_weight_tx_bias);
+               WRITE_ONCE(net_hotdata.dev_tx_weight, weight * dev_weight_tx_bias);
        }
        mutex_unlock(&dev_weight_mutex);
 
index 9b3e926..ff53364 100644 (file)
@@ -27,6 +27,7 @@
 #include <net/sch_generic.h>
 #include <net/pkt_sched.h>
 #include <net/dst.h>
+#include <net/hotdata.h>
 #include <trace/events/qdisc.h>
 #include <trace/events/net.h>
 #include <net/xfrm.h>
@@ -409,7 +410,7 @@ static inline bool qdisc_restart(struct Qdisc *q, int *packets)
 
 void __qdisc_run(struct Qdisc *q)
 {
-       int quota = READ_ONCE(dev_tx_weight);
+       int quota = READ_ONCE(net_hotdata.dev_tx_weight);
        int packets;
 
        while (qdisc_restart(q, &packets)) {