aboutsummaryrefslogtreecommitdiffstats
path: root/net/can/af_can.h
diff options
context:
space:
mode:
authorOliver Hartkopp <socketcan@hartkopp.net>2009-12-25 06:47:47 +0000
committerDavid S. Miller <davem@davemloft.net>2010-01-03 21:31:03 -0800
commit20dd3850bcf860561496827b711fa10fecf6e787 (patch)
tree95ecd549717f2d654b870ffb44d342c04ab048b6 /net/can/af_can.h
parent75ed0a897208c3273fd8dc0f71e1417dba5a049b (diff)
downloadkernel_samsung_tuna-20dd3850bcf860561496827b711fa10fecf6e787.zip
kernel_samsung_tuna-20dd3850bcf860561496827b711fa10fecf6e787.tar.gz
kernel_samsung_tuna-20dd3850bcf860561496827b711fa10fecf6e787.tar.bz2
can: Speed up CAN frame receiption by using ml_priv
this patch removes the hlist that contains the CAN receiver filter lists. It uses the 'midlayer private' pointer ml_priv and links the filters directly to the CAN netdevice, which allows to omit the walk through the complete CAN devices hlist for each received CAN frame. This patch is tested and does not remove any locking. Signed-off-by: Oliver Hartkopp <oliver@hartkopp.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/can/af_can.h')
-rw-r--r--net/can/af_can.h4
1 files changed, 1 insertions, 3 deletions
diff --git a/net/can/af_can.h b/net/can/af_can.h
index 18f91e3..34253b8 100644
--- a/net/can/af_can.h
+++ b/net/can/af_can.h
@@ -63,10 +63,8 @@ struct receiver {
enum { RX_ERR, RX_ALL, RX_FIL, RX_INV, RX_EFF, RX_MAX };
+/* per device receive filters linked at dev->ml_priv */
struct dev_rcv_lists {
- struct hlist_node list;
- struct rcu_head rcu;
- struct net_device *dev;
struct hlist_head rx[RX_MAX];
struct hlist_head rx_sff[0x800];
int remove_on_zero_entries;