Subject: Re: Some NIPQUAD_FMT -> %pI4 conversions are broken

From: Harvey Harrison <[email-masked]>
Date: Fri, 09 Jan 2009 22:07:25 -0800

On Fri, 2009-01-09 at 19:47 -0800, Roland Dreier wrote:
> I just noticed (by getting a messed up print in my kernel log) that most
> of the changes to drivers/infiniband/hw/nes in commit 63779436
> ("drivers: replace NIPQUAD()") were wrong: the idea was to change printk
> statements like
> 
> 	printk("..." NIPQUAD_FMT "...", NIPQUAD(foo));
> 
> but most of the changes in nes were to code like
> 
> 	printk("..." NIPQUAD_FMT "...", HIPQUAD(foo));
> 
> ie *H* IPQUAD not *N* IPQUAD, indicating the foo is in host endian
> order, and hence the new code
> 
> 	printk("...%pI4...", &foo);
> 
> prints the IP in reverse order now.
> 
> I don't see a good way to fix this without introducing a temporary
> variable to hold a swapped IP address... but is there a better way?
> 

My apologies indeed, the best choice I think is to add a temp var for
now and I'll work with you to eliminate the byteswapping further up the
callchain so a be32 gets passed down, but that might be too involved for 2.6.29.

Sound OK?

Harvey