From: "Michael S. Tsirkin" <mst@redhat.com>
To: Vladislav Yasevich <vyasevich@gmail.com>
Cc: netdev@vger.kernel.org, ben@decadent.org.uk, stefanha@redhat.com,
virtualization@lists.linux-foundation.org
Subject: Re: [PATCH 08/10] tun: Re-uanble UFO support.
Date: Thu, 18 Dec 2014 00:33:40 +0200 [thread overview]
Message-ID: <20141217223340.GB30969@redhat.com> (raw)
In-Reply-To: <1418840455-22598-9-git-send-email-vyasevic@redhat.com>
subs: re-enable
On Wed, Dec 17, 2014 at 01:20:53PM -0500, Vladislav Yasevich wrote:
> Now that UFO is split into v4 and v6 parts, we can bring
> back v4 support without any trouble.
>
> Continue to handle legacy applications by selecting the
> IPv6 fragment id but do not change the gso type. Thist
s/Thist/this/
> makes sure that two legacy VMs may still communicate.
This means IPv6 skbs with UFO (not UFO6) flag set are present
in the stack.
If possible, I think it would be better to make GSO type correct: UFO6,
and then convert to UFO when copying to guest.
A similar approach should be possible for OVS?
> Based on original work from Ben Hutchings.
>
> Fixes: 88e0e0e5aa7a ("drivers/net: Disable UFO through virtio")
> CC: Ben Hutchings <ben@decadent.org.uk>
> Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>
> ---
> drivers/net/tun.c | 26 ++++++++++++++------------
> 1 file changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index 9dd3746..8c32fca 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -175,7 +175,7 @@ struct tun_struct {
> struct net_device *dev;
> netdev_features_t set_features;
> #define TUN_USER_FEATURES (NETIF_F_HW_CSUM|NETIF_F_TSO_ECN|NETIF_F_TSO| \
> - NETIF_F_TSO6)
> + NETIF_F_TSO6|NETIF_F_UFO)
>
> int vnet_hdr_sz;
> int sndbuf;
> @@ -1152,20 +1152,15 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,
> skb_shinfo(skb)->gso_type = SKB_GSO_TCPV6;
> break;
> case VIRTIO_NET_HDR_GSO_UDP:
> - {
> - static bool warned;
> -
> - if (!warned) {
> - warned = true;
> - netdev_warn(tun->dev,
> - "%s: using disabled UFO feature; please fix this program\n",
> - current->comm);
> - }
> skb_shinfo(skb)->gso_type = SKB_GSO_UDP;
> - if (skb->protocol == htons(ETH_P_IPV6))
> + if (vlan_get_protocol(skb) == htons(ETH_P_IPV6)) {
> + /* This allows legacy application to work.
> + * Do not change the gso_type as it may
> + * not be upderstood by legacy applications.
Shouldn't we handle legacy applications when passing packets to
userspace?
> + */
> ipv6_proxy_select_ident(skb);
> + }
> break;
> - }
> default:
> tun->dev->stats.rx_frame_errors++;
> kfree_skb(skb);
> @@ -1273,6 +1268,8 @@ static ssize_t tun_put_user(struct tun_struct *tun,
> gso.gso_type = VIRTIO_NET_HDR_GSO_TCPV4;
> else if (sinfo->gso_type & SKB_GSO_TCPV6)
> gso.gso_type = VIRTIO_NET_HDR_GSO_TCPV6;
> + else if (sinfo->gso_type & SKB_GSO_UDP)
> + gso.gso_type = VIRTIO_NET_HDR_GSO_UDP;
> else {
> pr_err("unexpected GSO type: "
> "0x%x, gso_size %d, hdr_len %d\n",
> @@ -1780,6 +1777,11 @@ static int set_offload(struct tun_struct *tun, unsigned long arg)
> features |= NETIF_F_TSO6;
> arg &= ~(TUN_F_TSO4|TUN_F_TSO6);
> }
> +
> + if (arg & TUN_F_UFO) {
> + features |= NETIF_F_UFO;
> + arg &= ~TUN_F_UFO;
> + }
> }
>
> /* This gives the user a way to test for new features in future by
> --
> 1.9.3
next prev parent reply other threads:[~2014-12-17 22:33 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-17 18:20 [PATCH 00/10] Split UFO into v4 and v6 versions Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 01/10] core: Split out UFO6 support Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 02/10] net: Correctly mark IPv6 UFO offload type Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 03/10] ovs: Enable handling of UFO6 packets Vladislav Yasevich
2014-12-17 20:17 ` Sergei Shtylyov
2014-12-17 20:44 ` Vlad Yasevich
2014-12-17 22:26 ` Michael S. Tsirkin
2014-12-17 18:20 ` [PATCH 04/10] loopback: Turn on UFO6 support Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 05/10] veth: Enable " Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 06/10] macvlan: " Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 07/10] s2io: " Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 08/10] tun: Re-uanble UFO support Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 09/10] macvtap: Re-enable " Vladislav Yasevich
2014-12-17 18:20 ` [PATCH 10/10] Revert "drivers/net: Disable UFO through virtio" Vladislav Yasevich
[not found] ` <1418840455-22598-2-git-send-email-vyasevic@redhat.com>
2014-12-17 20:10 ` [PATCH 01/10] core: Split out UFO6 support Ben Hutchings
[not found] ` <1418847039.30883.29.camel@decadent.org.uk>
2014-12-17 20:43 ` Vlad Yasevich
2014-12-17 22:45 ` Michael S. Tsirkin
2014-12-17 23:31 ` Vlad Yasevich
2014-12-18 7:54 ` Michael S. Tsirkin
2014-12-18 15:01 ` Vlad Yasevich
2014-12-18 17:35 ` Michael S. Tsirkin
2014-12-18 17:50 ` Michael S. Tsirkin
2014-12-19 20:13 ` Vlad Yasevich
2014-12-20 21:03 ` Michael S. Tsirkin
2014-12-22 4:06 ` Vlad Yasevich
2014-12-19 19:55 ` Vlad Yasevich
[not found] ` <1418840455-22598-9-git-send-email-vyasevic@redhat.com>
2014-12-17 22:33 ` Michael S. Tsirkin [this message]
2014-12-18 5:51 ` [PATCH 08/10] tun: Re-uanble UFO support Jason Wang
2014-12-18 15:12 ` Vlad Yasevich
2014-12-19 4:37 ` Jason Wang
[not found] ` <1418840455-22598-10-git-send-email-vyasevic@redhat.com>
2014-12-17 22:41 ` [PATCH 09/10] macvtap: Re-enable " Michael S. Tsirkin
2014-12-18 2:43 ` Vlad Yasevich
2014-12-18 7:55 ` Michael S. Tsirkin
2014-12-18 15:15 ` Vlad Yasevich
[not found] ` <1418840455-22598-11-git-send-email-vyasevic@redhat.com>
2014-12-17 22:44 ` [PATCH 10/10] Revert "drivers/net: Disable UFO through virtio" Michael S. Tsirkin
2014-12-18 5:28 ` [PATCH 00/10] Split UFO into v4 and v6 versions Jason Wang
[not found] ` <586203981.237162.1418880532523.JavaMail.zimbra@redhat.com>
2014-12-24 18:11 ` Ben Hutchings
2014-12-24 18:59 ` Michael S. Tsirkin
2014-12-25 3:02 ` Jason Wang
2014-12-25 7:14 ` Michael S. Tsirkin
2014-12-25 9:50 ` Jason Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141217223340.GB30969@redhat.com \
--to=mst@redhat.com \
--cc=ben@decadent.org.uk \
--cc=netdev@vger.kernel.org \
--cc=stefanha@redhat.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=vyasevich@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).