Messages in this thread | | | Date | Wed, 8 Sep 2004 17:53:35 -0500 | From | Matt Mackall <> | Subject | Re: [PATCH] netpoll endian fixes |
| |
On Wed, Sep 08, 2004 at 12:01:28PM +0200, Duncan Sands wrote: > > It looks like it ought to be 0x45 everywhere, meaning it's currently > > broken everywhere. But no one's complained. Unfortunately at the > > present moment I've got one machine short of a test rig unpacked, so > > I'm loathe to push another fix until I get some other test reports. > > Hi Matt, I agree that it should be 0x45 everywhere. After thinking a bit > I concluded that the > > #if defined(__LITTLE_ENDIAN_BITFIELD) > __u8 ihl:4, > version:4; > #elif defined (__BIG_ENDIAN_BITFIELD) > __u8 version:4, > ihl:4; > > in the definition of struct iphdr is to make sure that compiler uses the > first four bits of the byte to refer to version, rather than the last four; > and this only matters when you are accessing the nibbles via the ihl > or version structure fields. Thus it makes sure that if you write 0x45 > to the byte, then version will return 4 and ihl will return 5. Presumably > the C standard specifies how bitfield expressions should be laid out > in the byte, and ihl:4, version:4; gives opposite results on little-endian > and big-endian machines... > > Ciao, > > Duncan.
Ok, could you send an updated patch with a Signed-off-by, please?
-- Mathematics is the supreme nostalgia of our time. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |