summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorOliver Hartkopp <socketcan@hartkopp.net>2015-04-01 07:50:28 +0200
committerMarc Kleine-Budde <mkl@pengutronix.de>2015-04-01 11:27:41 +0200
commit514ac99c64b22d83b52dfee3b8becaa69a92bc4a (patch)
treedc44e61b13c9c7279ad7b5be1195f5cebeb422c2 /drivers/net
parenta0bc163a7cf2ceb413a76cfd7149c6591db829ea (diff)
can: fix multiple delivery of a single CAN frame for overlapping CAN filters
The CAN_RAW socket can set multiple CAN identifier specific filters that lead to multiple filters in the af_can.c filter processing. These filters are indenpendent from each other which leads to logical OR'ed filters when applied. This patch makes sure that every CAN frame which is filtered for a specific socket is only delivered once to the user space. This is independent from the number of matching CAN filters of this socket. As the raw_rcv() function is executed from NET_RX softirq the introduced variables are implemented as per-CPU variables to avoid extensive locking at CAN frame reception time. Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net')
0 files changed, 0 insertions, 0 deletions