]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net: move dev_rx_weight to net_hotdata
authorEric Dumazet <edumazet@google.com>
Wed, 6 Mar 2024 16:00:22 +0000 (16:00 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 8 Mar 2024 05:12:42 +0000 (21:12 -0800)
dev_rx_weight is read from process_backlog().

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-10-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

index ad4b031098ff588431fdb08287c56c601b326982..dd641297e807c4a6942aa2ed0805843892b0ae2a 100644 (file)
@@ -4793,8 +4793,6 @@ void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
                           const struct pcpu_sw_netstats __percpu *netstats);
 void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s);
 
-extern int             dev_rx_weight;
-
 enum {
        NESTED_SYNC_IMM_BIT,
        NESTED_SYNC_TODO_BIT,
index ffea9cc263e50e4eb69f4f60e2f10c256d9b633f..e6595ed2c3be527fb90959984aca78349147f2eb 100644 (file)
@@ -22,6 +22,7 @@ struct net_hotdata {
        int                     tstamp_prequeue;
        int                     max_backlog;
        int                     dev_tx_weight;
+       int                     dev_rx_weight;
 };
 
 extern struct net_hotdata net_hotdata;
index 5d6bd481103f400c6dbe3acf2cbc737ef6ccaf59..40ba02e04bcb50cb1aae604b4a84dbd3d4fade20 100644 (file)
@@ -4408,7 +4408,6 @@ unsigned int sysctl_skb_defer_max __read_mostly = 64;
 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;
 
 /* Called with irq disabled */
 static inline void ____napi_schedule(struct softnet_data *sd,
@@ -5978,7 +5977,7 @@ static int process_backlog(struct napi_struct *napi, int quota)
                net_rps_action_and_irq_enable(sd);
        }
 
-       napi->weight = READ_ONCE(dev_rx_weight);
+       napi->weight = READ_ONCE(net_hotdata.dev_rx_weight);
        while (again) {
                struct sk_buff *skb;
 
index ec8c3b48e8fea57491c5870055cffb44c779db44..c8a7a451c18a383d091e413a510d84d163473f2f 100644 (file)
@@ -17,5 +17,6 @@ struct net_hotdata net_hotdata __cacheline_aligned = {
        .tstamp_prequeue = 1,
        .max_backlog = 1000,
        .dev_tx_weight = 64,
+       .dev_rx_weight = 64,
 };
 EXPORT_SYMBOL(net_hotdata);
index a30016a8660e09db89b3153e4103c185a800a2ef..8a4c698dad9c97636ca9cebfad925d4220e98f2a 100644 (file)
@@ -301,7 +301,7 @@ static int proc_do_dev_weight(struct ctl_table *table, int write,
        ret = proc_dointvec(table, write, buffer, lenp, ppos);
        if (!ret && write) {
                weight = READ_ONCE(weight_p);
-               WRITE_ONCE(dev_rx_weight, weight * dev_weight_rx_bias);
+               WRITE_ONCE(net_hotdata.dev_rx_weight, weight * dev_weight_rx_bias);
                WRITE_ONCE(net_hotdata.dev_tx_weight, weight * dev_weight_tx_bias);
        }
        mutex_unlock(&dev_weight_mutex);