Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94b05952 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

af_packet: Avoid cache line dirtying



While doing multiple captures, I found af_packet was dirtying cache line
containing its prot_hook.

This slow down machines where several cpus are necessary to handle capture
traffic, as each prot_hook is traversed for each packet coming in or out
the host.

This patches moves "struct packet_type prot_hook" to the end of
packet_sock, and uses a ____cacheline_aligned_in_smp to make sure
this remains shared by all cpus.

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7b6856a0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -188,7 +188,6 @@ struct packet_sock {
	struct packet_ring_buffer	tx_ring;
	int			copy_thresh;
#endif
	struct packet_type	prot_hook;
	spinlock_t		bind_lock;
	struct mutex		pg_vec_lock;
	unsigned int		running:1,	/* prot_hook is attached*/
@@ -204,6 +203,7 @@ struct packet_sock {
	unsigned int		tp_reserve;
	unsigned int		tp_loss:1;
#endif
	struct packet_type	prot_hook ____cacheline_aligned_in_smp;
};

struct packet_skb_cb {