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>
This commit is contained in:
committed by
David S. Miller
parent
bd7df21920
commit
d253eee201
@@ -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";
|
||||
|
||||
|
Reference in New Issue
Block a user