It appears we must read them as 2 4-byte words, lower address first.
Otherwise both reads return the same value, resulting in bogus byte
I don't follow. We assign val = MVNETA_READ_MIB(sc, mib->regnum) a couple of lines below. The right-hand side of that statement will be promoted to a 64-bit value before the assignment.