mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
net: rps: change input_queue_tail_incr_save()
input_queue_tail_incr_save() is incrementing the sd queue_tail and save it in the flow last_qtail. Two issues here : - no lock protects the write on last_qtail, we should use appropriate annotations. - We can perform this write after releasing the per-cpu backlog lock, to decrease this lock hold duration (move away the cache line miss) Also move input_queue_head_incr() and rps helpers to include/net/rps.h, while adding rps_ prefix to better reflect their role. v2: Fixed a build issue (Jakub and kernel build bots) Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
f7efd01fe2
commit
36b83ffcf2
@@ -122,4 +122,27 @@ static inline void sock_rps_record_flow(const struct sock *sk)
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline u32 rps_input_queue_tail_incr(struct softnet_data *sd)
|
||||
{
|
||||
#ifdef CONFIG_RPS
|
||||
return ++sd->input_queue_tail;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void rps_input_queue_tail_save(u32 *dest, u32 tail)
|
||||
{
|
||||
#ifdef CONFIG_RPS
|
||||
WRITE_ONCE(*dest, tail);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void rps_input_queue_head_incr(struct softnet_data *sd)
|
||||
{
|
||||
#ifdef CONFIG_RPS
|
||||
sd->input_queue_head++;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* _NET_RPS_H */
|
||||
|
||||
Reference in New Issue
Block a user