--- drivers/net/smsc911x.c | 7 +++++++ 1 file changed, 7 insertions(+) Index: linux/drivers/net/smsc911x.c =================================================================== --- linux.orig/drivers/net/smsc911x.c +++ linux/drivers/net/smsc911x.c @@ -1787,6 +1787,13 @@ return -ENODEV; } + /* check endian */ + if (smsc911x_reg_read(pdata, BYTE_TEST) == 0x43218765) { + SMSC_TRACE("Byte test looks swapped, inverting"); + smsc911x_reg_write(~smsc911x_reg_read(pdata, ENDIAN), + pdata, ENDIAN); + } + /* Default generation to zero (all workarounds apply) */ pdata->generation = 0;