/*
* socketcan/can/gw.h
*
- * Definitions for CAN frame Gateway/Router/Bridge
+ * Definitions for CAN frame Gateway/Router/Bridge
*
* $Id$
*
__s8 to_idx;
__s8 result_idx;
__u8 init_xor_val;
-} __attribute__ ((packed));
+} __attribute__((packed));
struct cgw_csum_crc8 {
__s8 from_idx;
__u8 crctab[256];
__u8 profile;
__u8 profile_data[20];
-} __attribute__ ((packed));
+} __attribute__((packed));
/* length of checksum operation parameters. idx = index in CAN frame data[] */
#define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor)
* The XOR checksum is calculated like this:
*
* xor = init_xor_val
- *
+ *
* for (i = from_idx .. to_idx)
* xor ^= can_frame.data[i]
*
* The CRC8 checksum is calculated like this:
*
* crc = init_crc_val
- *
+ *
* for (i = from_idx .. to_idx)
* crc = crctab[ crc ^ can_frame.data[i] ]
*
/* modification functions that are invoked in the hot path in can_can_gw_rcv */
-#define MODFUNC(func, op) static void func (struct can_frame *cf, \
- struct cf_mod *mod) { op ; }
+#define MODFUNC(func, op) static void func(struct can_frame *cf, \
+ struct cf_mod *mod) { op ; }
MODFUNC(mod_and_id, cf->can_id &= mod->modframe.and.can_id)
MODFUNC(mod_and_dlc, cf->can_dlc &= mod->modframe.and.can_dlc)
static int cgw_chk_csum_parms(s8 fr, s8 to, s8 re)
{
- /*
+ /*
* absolute dlc values 0 .. 7 => 0 .. 7, e.g. data [0]
* relative to received dlc -1 .. -8 :
- * e.g. for received dlc = 8
+ * e.g. for received dlc = 8
* -1 => index = 7 (data[7])
* -3 => index = 5 (data[5])
* -8 => index = 0 (data[0])
return 0;
else
return -EINVAL;
-}
+}
static inline int calc_idx(int idx, int rx_dlc)
{
if (from <= to) {
for (i = from; i <= to; i++)
- val ^= cf->data[i];
+ val ^= cf->data[i];
} else {
for (i = from; i >= to; i--)
- val ^= cf->data[i];
+ val ^= cf->data[i];
}
cf->data[res] = val;
hlist_for_each_entry_safe(gwj, n, nx, &cgw_list, list) {
- if (gwj->src.dev == dev || gwj->dst.dev == dev) {
+ if (gwj->src.dev == dev || gwj->dst.dev == dev) {
hlist_del(&gwj->list);
cgw_unregister_filter(gwj);
kfree(gwj);
}
/* check for common and gwtype specific attributes */
-static int cgw_parse_attr(struct nlmsghdr *nlh, struct cf_mod *mod,
+static int cgw_parse_attr(struct nlmsghdr *nlh, struct cf_mod *mod,
u8 gwtype, void *gwtypeattr)
{
struct nlattr *tb[CGW_MAX+1];
int err = 0;
/* initialize modification & checksum data space */
- memset(mod, 0, sizeof(*mod));
+ memset(mod, 0, sizeof(*mod));
err = nlmsg_parse(nlh, sizeof(struct rtcanmsg), tb, CGW_MAX, NULL);
if (err < 0)
/* check CGW_TYPE_CAN_CAN specific attributes */
struct can_can_gw *ccgw = (struct can_can_gw *)gwtypeattr;
- memset(ccgw, 0, sizeof(*ccgw));
+ memset(ccgw, 0, sizeof(*ccgw));
/* check for can_filter in attributes */
if (tb[CGW_FILTER] &&
if (gwj->dst.dev->type != ARPHRD_CAN)
goto put_src_dst_out;
-
+
if (gwj->dst.dev->header_ops)
goto put_src_dst_out;
-
+
ASSERT_RTNL();
err = cgw_register_filter(gwj);