Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

can: ems_usb: fix endianess of CAN ID

The device expects the CAN ID in little endian format.

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>

authored by

Gerhard Uttenthaler and committed by
Marc Kleine-Budde
8a4b5b0f 9911674f

+2 -5
+2 -5
drivers/net/can/usb/ems_usb.c
··· 123 123 * CPC_MSG_TYPE_EXT_CAN_FRAME or CPC_MSG_TYPE_EXT_RTR_FRAME. 124 124 */ 125 125 struct cpc_can_msg { 126 - u32 id; 126 + __le32 id; 127 127 u8 length; 128 128 u8 msg[8]; 129 129 }; ··· 765 765 766 766 msg = (struct ems_cpc_msg *)&buf[CPC_HEADER_SIZE]; 767 767 768 - msg->msg.can_msg.id = cf->can_id & CAN_ERR_MASK; 768 + msg->msg.can_msg.id = cpu_to_le32(cf->can_id & CAN_ERR_MASK); 769 769 msg->msg.can_msg.length = cf->can_dlc; 770 770 771 771 if (cf->can_id & CAN_RTR_FLAG) { ··· 782 782 783 783 msg->length = CPC_CAN_MSG_MIN_SIZE + cf->can_dlc; 784 784 } 785 - 786 - /* Respect byte order */ 787 - msg->msg.can_msg.id = cpu_to_le32(msg->msg.can_msg.id); 788 785 789 786 for (i = 0; i < MAX_TX_URBS; i++) { 790 787 if (dev->tx_contexts[i].echo_index == MAX_TX_URBS) {