diff options
author | Eric Dumazet <edumazet@google.com> | 2024-03-29 15:42:24 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2024-04-01 11:28:32 +0100 |
commit | c62fdf5b11ef12b89ac2450c25c12bffc3d924c5 (patch) | |
tree | d2e567fd8a48d2b68c7f8d6d9dbaedb99f9a2c1c /include/net/rps.h | |
parent | 36b83ffcf209a2e6099dae1070df6a2001dfab27 (diff) |
net: rps: add rps_input_queue_head_add() helper
process_backlog() can batch increments of sd->input_queue_head,
saving some memory bandwidth.
Also add READ_ONCE()/WRITE_ONCE() annotations around
sd->input_queue_head accesses.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/rps.h')
-rw-r--r-- | include/net/rps.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/net/rps.h b/include/net/rps.h index 10ca25731c1e..a93401d23d66 100644 --- a/include/net/rps.h +++ b/include/net/rps.h @@ -138,11 +138,16 @@ static inline void rps_input_queue_tail_save(u32 *dest, u32 tail) #endif } -static inline void rps_input_queue_head_incr(struct softnet_data *sd) +static inline void rps_input_queue_head_add(struct softnet_data *sd, int val) { #ifdef CONFIG_RPS - sd->input_queue_head++; + WRITE_ONCE(sd->input_queue_head, sd->input_queue_head + val); #endif } +static inline void rps_input_queue_head_incr(struct softnet_data *sd) +{ + rps_input_queue_head_add(sd, 1); +} + #endif /* _NET_RPS_H */ |