diff options
author | Oliver Hartkopp <oliver@hartkopp.net> | 2008-12-03 15:52:35 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-03 15:52:35 -0800 |
commit | d253eee20195b25e298bf162a6e72f14bf4803e5 (patch) | |
tree | 4fd5fef75d52ecae3f41dbd9ae62436e917e1699 /net/can/bcm.c | |
parent | bd7df219202f44e71e2e975a0fb5f76f946c1aef (diff) | |
download | op-kernel-dev-d253eee20195b25e298bf162a6e72f14bf4803e5.zip op-kernel-dev-d253eee20195b25e298bf162a6e72f14bf4803e5.tar.gz |
can: Fix CAN_(EFF|RTR)_FLAG handling in can_filter
Due to a wrong safety check in af_can.c it was not possible to filter
for SFF frames with a specific CAN identifier without getting the
same selected CAN identifier from a received EFF frame also.
This fix has a minimum (but user visible) impact on the CAN filter
API and therefore the CAN version is set to a new date.
Indeed the 'old' API is still working as-is. But when now setting
CAN_(EFF|RTR)_FLAG in can_filter.can_mask you might get less traffic
than before - but still the stuff that you expected to get for your
defined filter ...
Thanks to Kurt Van Dijck for pointing at this issue and for the review.
Signed-off-by: Oliver Hartkopp <oliver@hartkopp.net>
Acked-by: Kurt Van Dijck <kurt.van.dijck@eia.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/can/bcm.c')
-rw-r--r-- | net/can/bcm.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/can/bcm.c b/net/can/bcm.c index d0dd382..da0d426 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -64,10 +64,11 @@ #define BCM_CAN_DLC_MASK 0x0F /* clean private flags in can_dlc by masking */ /* get best masking value for can_rx_register() for a given single can_id */ -#define REGMASK(id) ((id & CAN_RTR_FLAG) | ((id & CAN_EFF_FLAG) ? \ - (CAN_EFF_MASK | CAN_EFF_FLAG) : CAN_SFF_MASK)) +#define REGMASK(id) ((id & CAN_EFF_FLAG) ? \ + (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG) : \ + (CAN_SFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG)) -#define CAN_BCM_VERSION "20080415" +#define CAN_BCM_VERSION CAN_VERSION static __initdata const char banner[] = KERN_INFO "can: broadcast manager protocol (rev " CAN_BCM_VERSION ")\n"; |