net: Improve cache line coherency of ingress qdisc
Subsystems (2)
PATCH 1/1 net: Improve cache line coherency of ingress qdisc
Move the ingress qdisc members of struct net_device from the transmit cache line to the receive cache line to avoid cache line ping-pong. These members are only used on the receive path.
Signed-off-by Neil Turton <[email protected]>
---
include/linux/netdevice.h +4 -4
@@ -597,37 +597,37 @@ struct net_device/* * Cache line mostly used on receive path (including eth_type_trans()) */ unsigned long last_rx;/* Time of last Rx */ /* Interface address info used in eth_type_trans() */ unsigned char dev_addr[MAX_ADDR_LEN ];/* hw address, (before bcast because most packets are unicast) */ unsigned char broadcast[MAX_ADDR_LEN ];/* hw bcast add */ +/* ingress path synchronizer */ +spinlock_t ingress_lock; +struct Qdisc *qdisc_ingress; +/* * Cache line mostly used on queue transmit path (qdisc) */ /* device queue lock */ spinlock_t queue_lock____cacheline_aligned_in_smp ;struct Qdisc *qdisc;struct Qdisc *qdisc_sleeping;struct list_head qdisc_list;unsigned long tx_queue_len;/* Max frames per queue allowed */ /* Partially transmitted GSO packet. */ struct sk_buff *gso_skb; -/* ingress path synchronizer */ -spinlock_t ingress_lock; -struct Qdisc *qdisc_ingress; -/* * One part is mostly used on xmit path (device) */ /* hard_start_xmit synchronizer */ spinlock_t _xmit_lock____cacheline_aligned_in_smp ;/* cpu id of processor entered to hard_start_xmit or -1, if nobody entered there. */ int xmit_lock_owner;void *priv;/* pointer to private data */
David Miller
maintainerFrom: Neil Turton <[email protected]>
Date: Thu, 17 Jan 2008 11:04:44 +0000
Quoted 5 lines
Move the ingress qdisc members of struct
net_devicefrom the transmit cache line to the receive cache line to avoid cache line ping-pong. These members are only used on the receive path.Signed-off-by Neil Turton <[email protected]>
Looks reasonable, applied, thanks!