diff mbox

[v2,9/9] can: pch_can: don't copy data to rx'ed RTR frames

Message ID 1293296117-27624-10-git-send-email-mkl@pengutronix.de
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Marc Kleine-Budde Dec. 25, 2010, 4:55 p.m. UTC
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Tomoya <tomoya-linux@dsn.okisemi.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---

Changes since v1:
- fix data copy: copy if rtr is _not_ set (thanks Oliver)

 drivers/net/can/pch_can.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
index c42e972..cd6b27d 100644
--- a/drivers/net/can/pch_can.c
+++ b/drivers/net/can/pch_can.c
@@ -692,16 +692,17 @@  static int pch_can_rx_normal(struct net_device *ndev, u32 obj_num, int quota)
 			cf->can_id = id;
 		}
 
-		if (id2 & PCH_ID2_DIR)
-			cf->can_id |= CAN_RTR_FLAG;
-
 		cf->can_dlc = get_can_dlc((ioread32(&priv->regs->
 						    ifregs[0].mcont)) & 0xF);
 
-		for (i = 0; i < cf->can_dlc; i += 2) {
-			data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
-			cf->data[i] = data_reg;
-			cf->data[i + 1] = data_reg >> 8;
+		if (id2 & PCH_ID2_DIR)
+			cf->can_id |= CAN_RTR_FLAG;
+		else {
+			for (i = 0; i < cf->can_dlc; i += 2) {
+				data_reg = ioread16(&priv->regs->ifregs[0].data[i / 2]);
+				cf->data[i] = data_reg;
+				cf->data[i + 1] = data_reg >> 8;
+			}
 		}
 
 		netif_receive_skb(skb);