From: anton.ivanov@cambridgegreys.com To: netdev@vger.kernel.org Cc: linux-um@lists.infradead.org, jasowang@redhat.com, mst@redhat.com, virtualization@lists.linux-foundation.org, Anton Ivanov <anton.ivanov@cambridgegreys.com> Subject: [PATCH] virtio: Work around frames incorrectly marked as gso Date: Mon, 9 Dec 2019 10:48:24 +0000 [thread overview] Message-ID: <20191209104824.17059-1-anton.ivanov@cambridgegreys.com> (raw) From: Anton Ivanov <anton.ivanov@cambridgegreys.com> Some of the frames marked as GSO which arrive at virtio_net_hdr_from_skb() have no GSO_TYPE, no fragments (data_len = 0) and length significantly shorter than the MTU (752 in my experiments). This is observed on raw sockets reading off vEth interfaces in all 4.x and 5.x kernels I tested. These frames are reported as invalid while they are in fact gso-less frames. This patch marks the vnet header as no-GSO for them instead of reporting it as invalid. Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com> --- include/linux/virtio_net.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index 0d1fe9297ac6..d90d5cff1b9a 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h @@ -112,8 +112,12 @@ static inline int virtio_net_hdr_from_skb(const struct sk_buff *skb, hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV4; else if (sinfo->gso_type & SKB_GSO_TCPV6) hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV6; - else - return -EINVAL; + else { + if (skb->data_len == 0) + hdr->gso_type = VIRTIO_NET_HDR_GSO_NONE; + else + return -EINVAL; + } if (sinfo->gso_type & SKB_GSO_TCP_ECN) hdr->gso_type |= VIRTIO_NET_HDR_GSO_ECN; } else -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: anton.ivanov@cambridgegreys.com To: netdev@vger.kernel.org Cc: jasowang@redhat.com, virtualization@lists.linux-foundation.org, linux-um@lists.infradead.org, Anton Ivanov <anton.ivanov@cambridgegreys.com>, mst@redhat.com Subject: [PATCH] virtio: Work around frames incorrectly marked as gso Date: Mon, 9 Dec 2019 10:48:24 +0000 [thread overview] Message-ID: <20191209104824.17059-1-anton.ivanov@cambridgegreys.com> (raw) From: Anton Ivanov <anton.ivanov@cambridgegreys.com> Some of the frames marked as GSO which arrive at virtio_net_hdr_from_skb() have no GSO_TYPE, no fragments (data_len = 0) and length significantly shorter than the MTU (752 in my experiments). This is observed on raw sockets reading off vEth interfaces in all 4.x and 5.x kernels I tested. These frames are reported as invalid while they are in fact gso-less frames. This patch marks the vnet header as no-GSO for them instead of reporting it as invalid. Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com> --- include/linux/virtio_net.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index 0d1fe9297ac6..d90d5cff1b9a 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h @@ -112,8 +112,12 @@ static inline int virtio_net_hdr_from_skb(const struct sk_buff *skb, hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV4; else if (sinfo->gso_type & SKB_GSO_TCPV6) hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV6; - else - return -EINVAL; + else { + if (skb->data_len == 0) + hdr->gso_type = VIRTIO_NET_HDR_GSO_NONE; + else + return -EINVAL; + } if (sinfo->gso_type & SKB_GSO_TCP_ECN) hdr->gso_type |= VIRTIO_NET_HDR_GSO_ECN; } else -- 2.20.1 _______________________________________________ linux-um mailing list linux-um@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-um
next reply other threads:[~2019-12-09 10:48 UTC|newest] Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-12-09 10:48 anton.ivanov [this message] 2019-12-09 10:48 ` [PATCH] virtio: Work around frames incorrectly marked as gso anton.ivanov 2019-12-09 10:54 ` Johannes Berg 2019-12-09 10:54 ` Johannes Berg 2019-12-09 10:54 ` Johannes Berg 2020-02-10 16:55 ` Anton Ivanov 2020-02-10 16:55 ` Anton Ivanov 2020-02-11 2:51 ` Jason Wang 2020-02-11 2:51 ` Jason Wang 2020-02-11 7:42 ` Anton Ivanov 2020-02-11 7:42 ` Anton Ivanov 2020-02-11 10:37 ` Michael S. Tsirkin 2020-02-11 10:37 ` Michael S. Tsirkin 2020-02-12 10:03 ` Anton Ivanov 2020-02-12 10:03 ` Anton Ivanov 2020-02-12 10:19 ` Michael S. Tsirkin 2020-02-12 10:19 ` Michael S. Tsirkin 2020-02-12 11:17 ` Anton Ivanov 2020-02-12 11:17 ` Anton Ivanov 2020-02-12 17:38 ` Anton Ivanov 2020-02-12 17:38 ` Anton Ivanov 2020-02-13 3:31 ` Jason Wang 2020-02-13 3:31 ` Jason Wang 2020-02-13 11:07 ` Anton Ivanov 2020-02-13 11:07 ` Anton Ivanov 2020-02-13 10:00 ` Michael S. Tsirkin 2020-02-13 10:00 ` Michael S. Tsirkin 2020-02-13 10:00 ` Michael S. Tsirkin 2020-02-13 11:12 ` Anton Ivanov 2020-02-13 11:12 ` Anton Ivanov 2020-02-13 13:12 ` Michael S. Tsirkin 2020-02-13 13:12 ` Michael S. Tsirkin 2020-02-13 15:44 ` Eric Dumazet 2020-02-13 15:44 ` Eric Dumazet 2020-02-13 15:44 ` Eric Dumazet 2020-02-13 15:53 ` Michael S. Tsirkin 2020-02-13 15:53 ` Michael S. Tsirkin 2020-02-13 15:53 ` Michael S. Tsirkin 2020-02-13 16:23 ` Anton Ivanov 2020-02-13 16:23 ` Anton Ivanov 2020-02-13 16:37 ` Michael S. Tsirkin 2020-02-13 16:37 ` Michael S. Tsirkin 2020-02-20 7:58 ` Michael S. Tsirkin 2020-02-20 7:58 ` Michael S. Tsirkin 2020-02-20 19:33 ` Anton Ivanov 2020-02-20 19:33 ` Anton Ivanov -- strict thread matches above, loose matches on Subject: below -- 2019-12-09 10:48 anton.ivanov
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=20191209104824.17059-1-anton.ivanov@cambridgegreys.com \ --to=anton.ivanov@cambridgegreys.com \ --cc=jasowang@redhat.com \ --cc=linux-um@lists.infradead.org \ --cc=mst@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=virtualization@lists.linux-foundation.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.