On Tue, 2008-10-07 at 22:46 +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. Ok so you use two. Writing three words in total. I strongly suggest that you have WAY more trouble in iwlwifi than an imagined performance issue coming from a corrected and understandable struct layout. > > 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 Look, we've tried to explain it to you so many times that it simply is not possible to enable fragment collection without IP checksumming in hardware that I don't know what to tell you. This may sound offensive, but are you really too stupid to understand it? johannes
Attachment:
signature.asc
Description: This is a digitally signed message part