can: at91_can: don't copy data to rx'ed RTR frames

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
This commit is contained in:
Marc Kleine-Budde 2010-10-21 18:39:26 +02:00
parent 5613fff2dc
commit e14ee40bec
1 changed files with 6 additions and 4 deletions

View File

@ -513,12 +513,14 @@ static void at91_read_mb(struct net_device *dev, unsigned int mb,
cf->can_id = (reg_mid >> 18) & CAN_SFF_MASK; cf->can_id = (reg_mid >> 18) & CAN_SFF_MASK;
reg_msr = at91_read(priv, AT91_MSR(mb)); 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)); if (reg_msr & AT91_MSR_MRTR)
*(u32 *)(cf->data + 4) = at91_read(priv, AT91_MDH(mb)); cf->can_id |= CAN_RTR_FLAG;
else {
*(u32 *)(cf->data + 0) = at91_read(priv, AT91_MDL(mb));
*(u32 *)(cf->data + 4) = at91_read(priv, AT91_MDH(mb));
}
/* allow RX of extended frames */ /* allow RX of extended frames */
at91_write(priv, AT91_MID(mb), AT91_MID_MIDE); at91_write(priv, AT91_MID(mb), AT91_MID_MIDE);