|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
[Xen-devel] Re: [Xen-users] Ethernet MTU
 
I have some news...
On Wednesday 16 August 2006 22:53, Dominique Rousseau wrote:
> After some tries, it looks like the vif code don't handle frames
> with size larger than 1500.
true:
http://lists.xensource.com/archives/html/xen-devel/2006-08/msg00944.html
> Looking at the code, there is the following snippet that seems to be
> the probleme (in drivers/xen/netback/netback.c) :
>
>                if (unlikely(txreq.size < ETH_HLEN) ||
>                    unlikely(txreq.size > ETH_FRAME_LEN)) {
>                        DPRINTK("Bad packet size: %d\n", txreq.size);
>                        make_tx_response(netif, txreq.id, NETIF_RSP_ERROR);
>                        netif_put(netif);
>                        continue;
>                }
./include/linux/if_vlan.h:#define VLAN_ETH_FRAME_LEN    1518    /* Max. octets 
in frame sans FCS */
./include/linux/if_ether.h:#define ETH_FRAME_LEN        1514            /* 
Max. octets in frame sans FCS */
./include/linux/if_vlan.h:#define VLAN_ETH_HLEN 18              /* Total 
octets in header.       */
./include/linux/if_ether.h:#define ETH_HLEN     14              /* Total 
octets in header.       */
netfront_vlan.patch:
---
# Node ID a5ee1cb525bbe8954dc3332ceec951e09a378b68
# parent: c097485037f7417b77db34da198b62a9c9481dc5
Make MTU rx check in netfront more permissive to allow for 8021q vlan tagging.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
--- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c      Wed Mar 15 
12:41:58 2006 +0100
+++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c      Wed Mar 15 
12:52:33 2006 +0100
@@ -845,11 +845,11 @@ static int netif_poll(struct net_device
        }
        while ((skb = __skb_dequeue(&rxq)) != NULL) {
-               if (skb->len > (dev->mtu + ETH_HLEN)) {
+               if (skb->len > (dev->mtu + ETH_HLEN + 4)) {
                        if (net_ratelimit())
                                printk(KERN_INFO "Received packet too big 
for "
                                       "MTU (%d > %d)\n",
-                                      skb->len - ETH_HLEN, dev->mtu);
+                                      skb->len - ETH_HLEN - 4, dev->mtu);
                        skb->len  = 0;
                        skb->tail = skb->data;
                        init_skb_shinfo(skb);
---
looking at all that things, maybe the solutions is to change ETH_FRAME_LEN in 
VLAN_ETH_FRAME_LEN...
or to remove that check (already done in unstable).
i'll try tomorrow.
bye
d.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] Re: [Xen-users] Ethernet MTU,
Daniele Palumbo <=
 
 
 |  
  
 | 
    | 
  
  
    |   | 
    |