* [PATCH 0/2] Fix CDC_EEM with 802.1Q VLAN and 1500 MTU
@ 2012-11-06 21:00 Ian Coolidge
2012-11-06 21:00 ` [PATCH 1/2] usb: gadget: g_ether: fix frame size check Ian Coolidge
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Ian Coolidge @ 2012-11-06 21:00 UTC (permalink / raw)
To: Oliver Neukum, Greg Kroah-Hartman, Felipe Balbi, linux-usb, netdev
Cc: Ian Coolidge
cdc_eem USB host driver and gadget driver both are broken in 1500 MTU
case when using 802.1Q VLANs. In both cases, this is due to incomplete
assumptions of Ethernet frame size.
Ian Coolidge (2):
usb: gadget: g_ether: fix frame size check
net: usb: cdc_eem: Fix rx skb allocation for 802.1Q VLANs
drivers/net/usb/cdc_eem.c | 4 ++++
drivers/usb/gadget/u_ether.c | 3 ++-
2 files changed, 6 insertions(+), 1 deletions(-)
--
1.7.6.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] usb: gadget: g_ether: fix frame size check
2012-11-06 21:00 [PATCH 0/2] Fix CDC_EEM with 802.1Q VLAN and 1500 MTU Ian Coolidge
@ 2012-11-06 21:00 ` Ian Coolidge
2012-11-06 21:00 ` [PATCH 2/2] net: usb: cdc_eem: Fix rx skb allocation for 802.1Q VLANs Ian Coolidge
[not found] ` <1352235611-13066-1-git-send-email-iancoolidge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2 siblings, 0 replies; 4+ messages in thread
From: Ian Coolidge @ 2012-11-06 21:00 UTC (permalink / raw)
To: Oliver Neukum, Greg Kroah-Hartman, Felipe Balbi, linux-usb, netdev
Cc: Ian Coolidge
Checking skb->len against ETH_FRAME_LEN assumes a 1514
ethernet frame size. With an 802.1Q VLAN header, ethernet
frame length can now be 1518. Validate frame length against that.
Signed-off-by: Ian Coolidge <iancoolidge@gmail.com>
---
drivers/usb/gadget/u_ether.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c
index 29c854b..ff2c70b 100644
--- a/drivers/usb/gadget/u_ether.c
+++ b/drivers/usb/gadget/u_ether.c
@@ -19,6 +19,7 @@
#include <linux/ctype.h>
#include <linux/etherdevice.h>
#include <linux/ethtool.h>
+#include <linux/if_vlan.h>
#include "u_ether.h"
@@ -301,7 +302,7 @@ static void rx_complete(struct usb_ep *ep, struct usb_request *req)
while (skb2) {
if (status < 0
|| ETH_HLEN > skb2->len
- || skb2->len > ETH_FRAME_LEN) {
+ || skb2->len > VLAN_ETH_FRAME_LEN) {
dev->net->stats.rx_errors++;
dev->net->stats.rx_length_errors++;
DBG(dev, "rx length %d\n", skb2->len);
--
1.7.6.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] net: usb: cdc_eem: Fix rx skb allocation for 802.1Q VLANs
2012-11-06 21:00 [PATCH 0/2] Fix CDC_EEM with 802.1Q VLAN and 1500 MTU Ian Coolidge
2012-11-06 21:00 ` [PATCH 1/2] usb: gadget: g_ether: fix frame size check Ian Coolidge
@ 2012-11-06 21:00 ` Ian Coolidge
[not found] ` <1352235611-13066-1-git-send-email-iancoolidge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2 siblings, 0 replies; 4+ messages in thread
From: Ian Coolidge @ 2012-11-06 21:00 UTC (permalink / raw)
To: Oliver Neukum, Greg Kroah-Hartman, Felipe Balbi, linux-usb, netdev
Cc: Ian Coolidge
cdc_eem frames might need to contain 802.1Q VLAN Ethernet frames.
Provide this information as an override to usbnet->rx_urb_size
Signed-off-by: Ian Coolidge <iancoolidge@gmail.com>
---
drivers/net/usb/cdc_eem.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c
index 439690b..63c38dc 100644
--- a/drivers/net/usb/cdc_eem.c
+++ b/drivers/net/usb/cdc_eem.c
@@ -31,6 +31,7 @@
#include <linux/usb/cdc.h>
#include <linux/usb/usbnet.h>
#include <linux/gfp.h>
+#include <linux/if_vlan.h>
/*
@@ -94,6 +95,9 @@ static int eem_bind(struct usbnet *dev, struct usb_interface *intf)
dev->net->hard_header_len += EEM_HEAD + ETH_FCS_LEN;
+ /* octets we need to rx for a single ethernet frame */
+ dev->rx_urb_size = EEM_HEAD + ETH_FCS_LEN + VLAN_ETH_FRAME_LEN;
+
return 0;
}
--
1.7.6.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] Fix CDC_EEM with 802.1Q VLAN and 1500 MTU
[not found] ` <1352235611-13066-1-git-send-email-iancoolidge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2012-11-07 21:56 ` David Miller
0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2012-11-07 21:56 UTC (permalink / raw)
To: iancoolidge-Re5JQEeQqe8AvxtiuMwx3w
Cc: oliver-Q6YOFhsQ4GZ7tPAFqOLdPg,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r, balbi-l0cyMroinI0,
linux-usb-u79uwXL29TY76Z2rM5mHXA, netdev-u79uwXL29TY76Z2rM5mHXA
Patch #2 does not apply cleanl to the net tree.
Please respin and repost this entire series again.
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-11-07 21:56 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-06 21:00 [PATCH 0/2] Fix CDC_EEM with 802.1Q VLAN and 1500 MTU Ian Coolidge
2012-11-06 21:00 ` [PATCH 1/2] usb: gadget: g_ether: fix frame size check Ian Coolidge
2012-11-06 21:00 ` [PATCH 2/2] net: usb: cdc_eem: Fix rx skb allocation for 802.1Q VLANs Ian Coolidge
[not found] ` <1352235611-13066-1-git-send-email-iancoolidge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-11-07 21:56 ` [PATCH 0/2] Fix CDC_EEM with 802.1Q VLAN and 1500 MTU David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.