reg_msr = at91_read(priv, AT91_MSR(mb));
if (reg_msr & AT91_MSR_MRTR)
cf->can_id |= CAN_RTR_FLAG;
- cf->can_dlc = GET_CAN_DLC((reg_msr >> 16) & 0xf);
+ cf->can_dlc = get_can_dlc((reg_msr >> 16) & 0xf);
*(u32 *)(cf->data + 0) = at91_read(priv, AT91_MDL(mb));
*(u32 *)(cf->data + 4) = at91_read(priv, AT91_MDH(mb));
}
cf->can_id = id;
- cf->can_dlc = GET_CAN_DLC((config & 0xf0) >> 4);
+ cf->can_dlc = get_can_dlc((config & 0xf0) >> 4);
for (i = 0; i < cf->can_dlc; i++)
cf->data[i] = cc770_read_reg(priv, msgobj[mo].data[i]);
}
if (eff)
cfrm->can_id |= CAN_EFF_FLAG;
- cfrm->can_dlc = GET_CAN_DLC(msg->len & ESD331_DLC_MASK);
+ cfrm->can_dlc = get_can_dlc(msg->len & ESD331_DLC_MASK);
for (i = 0; i < cfrm->can_dlc; ++i)
cfrm->data[i] = msg->data[i];
for (i = 1; i < RXBDAT_OFF; i++)
buf[i] = mcp251x_read_reg(spi, RXBCTRL(buf_idx) + i);
- len = GET_CAN_DLC(buf[RXBDLC_OFF] & RXBDLC_LEN_MASK);
+ len = get_can_dlc(buf[RXBDLC_OFF] & RXBDLC_LEN_MASK);
for (; i < (RXBDAT_OFF + len); i++)
buf[i] = mcp251x_read_reg(spi, RXBCTRL(buf_idx) + i);
} else {
(buf[RXBSIDL_OFF] >> RXBSIDL_SHIFT);
}
/* Data length */
- frame->can_dlc = GET_CAN_DLC(buf[RXBDLC_OFF] & RXBDLC_LEN_MASK);
+ frame->can_dlc = get_can_dlc(buf[RXBDLC_OFF] & RXBDLC_LEN_MASK);
memcpy(frame->data, buf + RXBDAT_OFF, frame->can_dlc);
priv->net->stats.rx_packets++;
if (can_id & 1)
frame->can_id |= CAN_RTR_FLAG;
- frame->can_dlc = GET_CAN_DLC(in_8(®s->rx.dlr) & 0xf);
+ frame->can_dlc = get_can_dlc(in_8(®s->rx.dlr) & 0xf);
if (!(frame->can_id & CAN_RTR_FLAG)) {
void __iomem *data = ®s->rx.dsr1_0;
if (fi & FI_RTR) {
id |= CAN_RTR_FLAG;
} else {
- cf->can_dlc = GET_CAN_DLC(fi & 0x0F);
+ cf->can_dlc = get_can_dlc(fi & 0x0F);
for (i = 0; i < cf->can_dlc; i++)
cf->data[i] = priv->read_reg(priv, dreg++);
}
if (cmd & CMD_ACK) {
}
*/
- msg.can_dlc = GET_CAN_DLC(*ptr++);
+ msg.can_dlc = get_can_dlc(*ptr++);
if (cmd & CMD_XTD) {
msg.can_id |= CAN_EFF_FLAG;
msg.can_id |= (ptr[0] << 0) | (ptr[1] << 8)
return;
cf->can_id = msg->msg.can_msg.id;
- cf->can_dlc = GET_CAN_DLC(msg->msg.can_msg.length);
+ cf->can_dlc = get_can_dlc(msg->msg.can_msg.length);
if (msg->type == CPC_MSG_TYPE_EXT_CAN_FRAME
|| msg->type == CPC_MSG_TYPE_EXT_RTR_FRAME)
#define ND2D(_ndev) (_ndev->dev.parent)
#endif
-#define GET_CAN_DLC(i) (min_t(__u8, (i), 8))
+/*
+ * get_can_dlc(value) - helper macro to cast a given data length code (dlc)
+ * to __u8 and ensure the dlc value to be max. 8 bytes.
+ *
+ * To be used in the CAN netdriver receive path to ensure conformance with
+ * ISO 11898-1 Chapter 8.4.2.3 (DLC field)
+ */
+#define get_can_dlc(i) (min_t(__u8, (i), 8))
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
#define IFF_ECHO IFF_LOOPBACK