can: fix SJA1000 dlc for RTR packets
authorKurt Van Dijck <[email protected]>
Mon, 2 May 2011 04:50:48 +0000 (04:50 +0000)
committerDavid S. Miller <[email protected]>
Thu, 5 May 2011 18:02:22 +0000 (11:02 -0700)
RTR frames do have a valid data length code on CAN.
The driver for SJA1000 did not handle that situation properly.

Signed-off-by: Kurt Van Dijck <[email protected]>
Acked-by: Marc Kleine-Budde <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
drivers/net/can/sja1000/sja1000.c

index a358ea9445a20b5cc37341502e9590dd9ab91253..f501bba1fc6fc9d48cb923f9c963bea83cd3b406 100644 (file)
@@ -346,10 +346,10 @@ static void sja1000_rx(struct net_device *dev)
                    | (priv->read_reg(priv, REG_ID2) >> 5);
        }
 
+       cf->can_dlc = get_can_dlc(fi & 0x0F);
        if (fi & FI_RTR) {
                id |= CAN_RTR_FLAG;
        } else {
-               cf->can_dlc = get_can_dlc(fi & 0x0F);
                for (i = 0; i < cf->can_dlc; i++)
                        cf->data[i] = priv->read_reg(priv, dreg++);
        }