Hi Marc, > Picking up this old thread.... > > Thomas, can I have your Signed-off-by for this patch? > > Marc > > diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c > b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c > > index 297491516a26..e5bc897f37e8 100644 > > --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c > > +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c > > @@ -332,12 +332,10 @@ mcp251xfd_regmap_crc_read(void *context, > > * > > * If the highest bit in the lowest byte is flipped > > * the transferred CRC matches the calculated one. We > > - * assume for now the CRC calculation in the chip > > - * works on wrong data and the transferred data is > > - * correct. > > + * assume for now the CRC operates on the correct data. > > */ > > if (reg == MCP251XFD_REG_TBC && > > - (buf_rx->data[0] == 0x0 || buf_rx->data[0] == 0x80)) { > > + ((buf_rx->data[0] & 0xF8) == 0x0 || (buf_rx->data[0] & 0xF8) == > 0x80)) { > > /* Flip highest bit in lowest byte of le32 */ > > buf_rx->data[0] ^= 0x80; > > > > @@ -347,10 +345,8 @@ mcp251xfd_regmap_crc_read(void *context, > > val_len); > > if (!err) { > > /* If CRC is now correct, assume > > - * transferred data was OK, flip bit > > - * back to original value. > > + * flipped data was OK. > > */ > > - buf_rx->data[0] ^= 0x80; > > goto out; > > } > > } > > Signed-off-by: Thomas Kopp <thomas.kopp@xxxxxxxxxxxxx> > The mcp2517fd errata says the transmitted data is okay, but the CRC is > calculated on wrong data: Yes, will be updated. Best Regards, Thomas