netdev
[Top] [All Lists]

Re: [3/5] netdev: HH_DATA_OFF bugfix

To: Jiri Benc <jbenc@xxxxxxx>, "David S. Miller" <davem@xxxxxxxxxxxxx>
Subject: Re: [3/5] netdev: HH_DATA_OFF bugfix
From: Jeff Garzik <jgarzik@xxxxxxxxx>
Date: Fri, 27 May 2005 23:15:18 -0400
Cc: NetDev <netdev@xxxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>, pavel@xxxxxxx
In-reply-to: <20050524151204.554f73cb@griffin.suse.cz>
References: <20050524150711.01632672@griffin.suse.cz> <20050524151204.554f73cb@griffin.suse.cz>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050328 Fedora/1.7.6-1.2.5
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 <jbenc@xxxxxxx>

--- 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



<Prev in Thread] Current Thread [Next in Thread>