From patchwork Wed Nov 4 15:48:33 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Haas X-Patchwork-Id: 37591 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 4BA13B7BDB for ; Thu, 5 Nov 2009 02:48:49 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756750AbZKDPsg (ORCPT ); Wed, 4 Nov 2009 10:48:36 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756561AbZKDPsg (ORCPT ); Wed, 4 Nov 2009 10:48:36 -0500 Received: from ems-wuensche.com ([81.169.132.244]:38380 "EHLO h559305.serverkompetenz.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755975AbZKDPse (ORCPT ); Wed, 4 Nov 2009 10:48:34 -0500 Received: from localhost (localhost [127.0.0.1]) by h559305.serverkompetenz.net (Postfix) with ESMTP id 21153308037; Wed, 4 Nov 2009 16:48:38 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at linux Received: from h559305.serverkompetenz.net ([127.0.0.1]) by localhost (h559305.serverkompetenz.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0oG-XGmHrThU; Wed, 4 Nov 2009 16:48:34 +0100 (CET) From: Sebastian Haas Subject: [PATCH] ems_usb: Fix byte order issues on big endian machines To: netdev@vger.kernel.org Cc: socketcan-core@lists.berlios.de Date: Wed, 04 Nov 2009 16:48:33 +0100 Message-ID: <20091104154833.18231.28984.stgit@localhost.localdomain> User-Agent: StGIT/0.14.2 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org CPC-USB is using a ARM7 core with little endian byte order. The "id" field in can_msg needs byte order conversion from/to CPU byte order. Signed-off-by: Sebastian Haas --- drivers/net/can/usb/ems_usb.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c index 9012e0a..abdbd9c 100644 --- a/drivers/net/can/usb/ems_usb.c +++ b/drivers/net/can/usb/ems_usb.c @@ -319,7 +319,7 @@ static void ems_usb_rx_can_msg(struct ems_usb *dev, struct ems_cpc_msg *msg) cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame)); - cf->can_id = msg->msg.can_msg.id; + cf->can_id = le32_to_cpu(msg->msg.can_msg.id); cf->can_dlc = min_t(u8, msg->msg.can_msg.length, 8); if (msg->type == CPC_MSG_TYPE_EXT_CAN_FRAME @@ -813,6 +813,9 @@ static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, struct net_device *ne msg->length = CPC_CAN_MSG_MIN_SIZE + cf->can_dlc; } + /* Respect byte order */ + msg->msg.can_msg.id = cpu_to_le32(msg->msg.can_msg.id); + for (i = 0; i < MAX_TX_URBS; i++) { if (dev->tx_contexts[i].echo_index == MAX_TX_URBS) { context = &dev->tx_contexts[i];