Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b00f70b0 authored by Jason Wang's avatar Jason Wang Committed by David S. Miller
Browse files

virtio-net: unbreak csumed packets for XDP_PASS



We drop csumed packet when do XDP for packets. This breaks
XDP_PASS when GUEST_CSUM is supported. Fix this by allowing csum flag
to be set. With this patch, simple TCP works for XDP_PASS.

Cc: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
Acked-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1830f893
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -440,7 +440,7 @@ static struct sk_buff *receive_big(struct net_device *dev,
		struct virtio_net_hdr_mrg_rxbuf *hdr = buf;
		u32 act;

		if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))
		if (unlikely(hdr->hdr.gso_type))
			goto err_xdp;
		act = do_xdp_prog(vi, rq, xdp_prog, page, 0, len);
		switch (act) {
@@ -572,7 +572,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
		 * the receive path after XDP is loaded. In practice I
		 * was not able to create this condition.
		 */
		if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))
		if (unlikely(hdr->hdr.gso_type))
			goto err_xdp;

		act = do_xdp_prog(vi, rq, xdp_prog, xdp_page, offset, len);