Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: xen vs bridges



>>> Nothing in the xennet protocol prevents us from using MTU up to 2k.
>>> The linux frontends and backends limit it to 1500 though, so we'd
>>> need a way to know what MTU backends support.

Would we?  What happens if we send more than they're expecting?  Does
it work the way it does if you connect a vlan-capable interface to a
non-capable one with physical interfaces?  That's what I'd expect it to
do, on the "xennet and xvif are just a crossed cable between two
interfaces" principle.

>> For my purposes, I just want it to work with NetBSD and I don't care
>> about compatability with other domU OSes.  Will it work to just
>> patch the xennet and xvif drivers to give them ETHERCAP_VLAN_MTU,
> Yes, it should work

And it does!

--- /sys/arch/xen/xen/if_xennet_xenbus.c=       2006-11-02 22:03:32.000000000 
-0500
+++ /sys/arch/xen/xen/if_xennet_xenbus.c        2008-06-21 10:32:21.000000000 
-0400
@@ -322,6 +322,7 @@
            ether_sprintf(sc->sc_enaddr));
        /* Initialize ifnet structure and attach interface */
        memcpy(ifp->if_xname, sc->sc_dev.dv_xname, IFNAMSIZ);
+       ((struct ethercom *)ifp)->ec_capabilities = ETHERCAP_VLAN_MTU;
        ifp->if_softc = sc;
        ifp->if_start = xennet_start;
        ifp->if_ioctl = xennet_ioctl;

--- /sys/arch/xen/xen/xennetback_xenbus.c=      2006-10-15 09:34:17.000000000 
-0400
+++ /sys/arch/xen/xen/xennetback_xenbus.c       2008-06-21 10:27:21.000000000 
-0400
@@ -310,6 +310,7 @@
            (int)domid, (int)handle);
        printf("%s: Ethernet address %s\n", ifp->if_xname,
            ether_sprintf(xneti->xni_enaddr));
+       ((struct ethercom *)ifp)->ec_capabilities = ETHERCAP_VLAN_MTU;
        ifp->if_flags =
            IFF_BROADCAST|IFF_SIMPLEX|IFF_NOTRAILERS|IFF_MULTICAST;
        ifp->if_snd.ifq_maxlen =

gives the behaviour I wanted.

I actually don't know whether it passes oversized packets correctly,
because the vlan interface I'm using in the bridge is an untagged
interface (see the thread on tech-net about untagged vlans).  Hmm, I
should improve that so that an untagged vlan interface does not
subtract off encapsulation overhead from its parent's MTU; that would
have done as well in this case (but I think xennet and xvif should
support VLAN MTUs in any case).

/~\ The ASCII                           der Mouse
\ / Ribbon Campaign
 X  Against HTML                mouse%rodents-montreal.org@localhost
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index