On Tue, Oct 7, 2008 at 10:10 PM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > On Tue, 2008-10-07 at 22:06 +0200, Tomas Winkler wrote: > >> > bytes (with nibbles): | . | . | . | . | . | . || . | . | . | . | . | . | >> > | addr 1 |len1 || addr 2 |len2 | >> > your forced layout: | | | | >> > my layout: | | || | | >> > >> > Note how this actually matches the border between the border between the >> > two descriptors, the || border. >> >> Your layout put addr2 (which is 32 bit) sits on 16 bit boundary > > So? Yours makes it need two words, which is even less efficient to > access. And since the struct is packed, on those architectures that > don't do unaligned accesses efficiently won't need any put_unaligned > either. > > Also, keep in mind that address 2 is _never_ used at all anyway This is not correct we always use first 2 pointers. First for tx command second for the actual packet. because > we don't and cannot do fragmented frames due to the lack of IP > checksumming in hardware, as I and davem have tried to explain to you > multiple times already. This is bad side of current Linux implementation Tomas -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html