[PATCH 001/001] smsc95xx: Fix hard_header_len

Subsystems: networking drivers, the rest, usb networking drivers, usb smsc95xx ethernet driver

STALE5102d

7 messages, 4 authors, 2012-08-21 · open the first message on its own page

[PATCH 001/001] smsc95xx: Fix hard_header_len

From: JamesBetts <hidden>
Date: 2012-08-15 19:49:51

This device may require up-to 12 bytes of headroom. Assign the needed_headroom
but stop lying about hard_header_len which is used in other places throughout
the kernel.

Without this patch it is not possible to use "IFB + tc filter ... action ... 
dev ifb0" as per
http://www.linuxfoundation.org/collaborate/workgroups/networking/ifb.

Tested using Raspberry Pi as a router with trafficshaping and IFB.
---
 drivers/net/usb/smsc95xx.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index 0aee6c0..02293dd 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -1071,8 +1071,8 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
 	dev->net->netdev_ops = &smsc95xx_netdev_ops;
 	dev->net->ethtool_ops = &smsc95xx_ethtool_ops;
 	dev->net->flags |= IFF_MULTICAST;
-	dev->net->hard_header_len += SMSC95XX_TX_OVERHEAD_CSUM;
-	dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
+	dev->net->needed_headroom = SMSC95XX_TX_OVERHEAD_CSUM;
+	dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len + dev->net->needed_headroom;
 	return 0;
 }
 
-- 
1.7.4.1.433.gcd306

Re: [PATCH 001/001] smsc95xx: Fix hard_header_len

From: Steve Glendinning <hidden>
Date: 2012-08-16 09:57:52

Hi James,

Thanks for spotting this, I don't think I've ever tested this device with IMQ.
-       dev->net->hard_header_len += SMSC95XX_TX_OVERHEAD_CSUM;
-       dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
+       dev->net->needed_headroom = SMSC95XX_TX_OVERHEAD_CSUM;
+       dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len +
dev->net->needed_headroom;
I'm unsure what we *should* be setting hard_header_len and
needed_headroom to.  David?

Thanks,
--
Steve Glendinning

Re: [PATCH 001/001] smsc95xx: Fix hard_header_len

From: Ben Hutchings <hidden>
Date: 2012-08-16 17:59:39

On Thu, 2012-08-16 at 10:57 +0100, Steve Glendinning wrote:
Hi James,

Thanks for spotting this, I don't think I've ever tested this device with IMQ.
quoted
-       dev->net->hard_header_len += SMSC95XX_TX_OVERHEAD_CSUM;
-       dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
+       dev->net->needed_headroom = SMSC95XX_TX_OVERHEAD_CSUM;
+       dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len +
dev->net->needed_headroom;
I'm unsure what we *should* be setting hard_header_len and
needed_headroom to.  David?
hard_header_len is set to ETH_HLEN by alloc_etherdev() (in the
ether_setup() callback).  Any extra headroom you want before the
Ethernet header should indeed be specified in needed_headroom.

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

Re: [PATCH 001/001] smsc95xx: Fix hard_header_len

From: Steve Glendinning <hidden>
Date: 2012-08-17 08:35:05

hard_header_len is set to ETH_HLEN by alloc_etherdev() (in the
ether_setup() callback).  Any extra headroom you want before the
Ethernet header should indeed be specified in needed_headroom.
Thanks Ben, looks like this patch is doing it the right way then.

Acked-By: Steve Glendinning <steve.glendinning@shawell.net>


-- 
Steve Glendinning

Re: [PATCH 001/001] smsc95xx: Fix hard_header_len

From: David Miller <davem@davemloft.net>
Date: 2012-08-20 09:19:05

From: Steve Glendinning <redacted>
Date: Fri, 17 Aug 2012 09:35:04 +0100
quoted
hard_header_len is set to ETH_HLEN by alloc_etherdev() (in the
ether_setup() callback).  Any extra headroom you want before the
Ethernet header should indeed be specified in needed_headroom.
Thanks Ben, looks like this patch is doing it the right way then.

Acked-By: Steve Glendinning <steve.glendinning@shawell.net>
This patch needs to be submitted with a proper signoff.

Re: [PATCH 001/001] smsc95xx: Fix hard_header_len

From: James Betts <hidden>
Date: 2012-08-21 06:33:09

quoted
Acked-By: Steve Glendinning <steve.glendinning@shawell.net>
This patch needs to be submitted with a proper signoff.
I think Steve has been in "the delivery path" so he could sign it off,
I took his Acked-By as saying the patch was okay. In case it helps ...

Signed-off-by: James Betts <redacted>

Thanks.

Re: [PATCH 001/001] smsc95xx: Fix hard_header_len

From: David Miller <davem@davemloft.net>
Date: 2012-08-21 06:58:36

From: James Betts <redacted>
Date: Tue, 21 Aug 2012 06:33:07 +0000
quoted
quoted
Acked-By: Steve Glendinning <steve.glendinning@shawell.net>
This patch needs to be submitted with a proper signoff.
I think Steve has been in "the delivery path" so he could sign it off,
I took his Acked-By as saying the patch was okay. In case it helps ...

Signed-off-by: James Betts <redacted>
The original author needs to properly freshly submit the patch
with their own signoff included in the commit message.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help