Subject: Re: [3/5] netdev: HH_DATA_OFF bugfix

From: Jeff Garzik <[email-masked]>
Date: Fri, 27 May 2005 23:15:18 -0400

Jiri Benc wrote:
> When the hardware header size is a multiple of HH_DATA_MOD, HH_DATA_OFF()
> incorrectly returns HH_DATA_MOD (instead of 0).
> 
> Signed-off-by: Jiri Benc <[email-masked]>
> 
> --- linux/include/linux/netdevice.h
> +++ work/include/linux/netdevice.h
> @@ -204,7 +209,7 @@
>  	/* cached hardware header; allow for machine alignment needs.        */
>  #define HH_DATA_MOD	16
>  #define HH_DATA_OFF(__len) \
> -	(HH_DATA_MOD - ((__len) & (HH_DATA_MOD - 1)))
> +	(HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))
>  #define HH_DATA_ALIGN(__len) \
>  	(((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))
>  	unsigned long	hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];

You'll want to run this one by DaveM.  He would be the appropriate one 
to merge this, since it affects all ethernet devices (net/ethernet/eth.c 
uses HH_DATA_OFF macro).

I'm going over the rest of the ieee80211/ipw patches...

	Jeff