Thread (41 messages) 41 messages, 6 authors, 2014-12-25

Re: [PATCH 01/10] core: Split out UFO6 support

From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2014-12-18 17:50:02
Also in: virtualization

On Thu, Dec 18, 2014 at 07:35:46PM +0200, Michael S. Tsirkin wrote:
quoted
quoted
We should either generate our own ID,
like we always did, or make sure we don't accept
these packets.
Second option is almost sure to break userspace,
so it seems we must do the first one.
Right.  This was missing from packet sockets.  I can fix it.

-vlad
Also, this can't be a patch on top, since we don't
want bisect to give us configurations which
can BUG().
So how doing this in stages:

1. add helper that checks skb GSO type.
If it is SKB_GSO_UDP, check for IPv6, and
generate the fragment ID.

Call this helper in
	- virtio net rx path
	- tun rx path (get user)
	- macvtap tx patch (get user)
	- packet socket tx patch (get user)

2. Put back UFO flag everywhere: virtio,tun,macvtap,packet,
since we can handle IPv6 now even if it's suboptimal.

Above two seem like smalling patches, appropriate for stable.

Next, work on a new feature to pass
fragment ID in virtio header:

3. split UFO/UFO6 as you did here, but add code
in above 4 places to convert UDP to UDP6,
additionally, add code in
	- virtio net tx path
	- tun tx path (get user)
	- macvtap rx patch (put user)
	- packet socket rx patch (put user)
to convert UDP6 to UDP.

	step 3 needs to be bisect-clean, somehow.

4. add new field in header, new feature bit for virtio net to gate it,
new ioctls to tun,macvtap,packet socket.

These two are more like optimizations, so not stable material.


-- 
MST
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help