Commit 71c0de9b authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski

net: move dev_rx_weight to net_hotdata

dev_rx_weight is read from process_backlog().

Move it to net_hotdata for better cache locality.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Acked-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20240306160031.874438-10-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 26722dc7
...@@ -4793,8 +4793,6 @@ void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s, ...@@ -4793,8 +4793,6 @@ void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
const struct pcpu_sw_netstats __percpu *netstats); const struct pcpu_sw_netstats __percpu *netstats);
void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s); void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s);
extern int dev_rx_weight;
enum { enum {
NESTED_SYNC_IMM_BIT, NESTED_SYNC_IMM_BIT,
NESTED_SYNC_TODO_BIT, NESTED_SYNC_TODO_BIT,
......
...@@ -22,6 +22,7 @@ struct net_hotdata { ...@@ -22,6 +22,7 @@ struct net_hotdata {
int tstamp_prequeue; int tstamp_prequeue;
int max_backlog; int max_backlog;
int dev_tx_weight; int dev_tx_weight;
int dev_rx_weight;
}; };
extern struct net_hotdata net_hotdata; extern struct net_hotdata net_hotdata;
......
...@@ -4408,7 +4408,6 @@ unsigned int sysctl_skb_defer_max __read_mostly = 64; ...@@ -4408,7 +4408,6 @@ unsigned int sysctl_skb_defer_max __read_mostly = 64;
int weight_p __read_mostly = 64; /* old backlog weight */ int weight_p __read_mostly = 64; /* old backlog weight */
int dev_weight_rx_bias __read_mostly = 1; /* bias for 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_weight_tx_bias __read_mostly = 1; /* bias for output_queue quota */
int dev_rx_weight __read_mostly = 64;
/* Called with irq disabled */ /* Called with irq disabled */
static inline void ____napi_schedule(struct softnet_data *sd, static inline void ____napi_schedule(struct softnet_data *sd,
...@@ -5978,7 +5977,7 @@ static int process_backlog(struct napi_struct *napi, int quota) ...@@ -5978,7 +5977,7 @@ static int process_backlog(struct napi_struct *napi, int quota)
net_rps_action_and_irq_enable(sd); 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) { while (again) {
struct sk_buff *skb; struct sk_buff *skb;
......
...@@ -17,5 +17,6 @@ struct net_hotdata net_hotdata __cacheline_aligned = { ...@@ -17,5 +17,6 @@ struct net_hotdata net_hotdata __cacheline_aligned = {
.tstamp_prequeue = 1, .tstamp_prequeue = 1,
.max_backlog = 1000, .max_backlog = 1000,
.dev_tx_weight = 64, .dev_tx_weight = 64,
.dev_rx_weight = 64,
}; };
EXPORT_SYMBOL(net_hotdata); EXPORT_SYMBOL(net_hotdata);
...@@ -301,7 +301,7 @@ static int proc_do_dev_weight(struct ctl_table *table, int write, ...@@ -301,7 +301,7 @@ static int proc_do_dev_weight(struct ctl_table *table, int write,
ret = proc_dointvec(table, write, buffer, lenp, ppos); ret = proc_dointvec(table, write, buffer, lenp, ppos);
if (!ret && write) { if (!ret && write) {
weight = READ_ONCE(weight_p); 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); WRITE_ONCE(net_hotdata.dev_tx_weight, weight * dev_weight_tx_bias);
} }
mutex_unlock(&dev_weight_mutex); mutex_unlock(&dev_weight_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment