Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-07-05 Thread Michael S. Tsirkin
On Tue, Jul 04, 2017 at 08:20:00PM +0800, Jason Wang wrote:
> > IIUC XDP generally refuses to attach if checksum offload
> > is enabled.
> 
> Any reason to do this? (Looks like I don't see any code for this)

Some of it was covered here
https://www.mail-archive.com/netdev@vger.kernel.org/msg162577.html

-- 
MST


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-07-04 Thread Jason Wang



On 2017年07月04日 01:03, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 08:05:06PM +0800, Jason Wang wrote:


On 2017年06月28日 12:01, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 11:40:30AM +0800, Jason Wang wrote:

On 2017年06月28日 11:31, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 10:45:18AM +0800, Jason Wang wrote:

On 2017年06月28日 10:17, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:

On 2017年06月28日 10:02, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:

We should allow csumed packet for small buffer, otherwise XDP_PASS
won't work correctly.

Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
Signed-off-by: Jason Wang

The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
What do you think?

I think it's safe. For XDP_PASS, it work like in the past.

That's the part I don't get. With DATA_VALID csum in packet is wrong, XDP
tools assume it's value.

DATA_VALID is CHECKSUM_UNCESSARY on the host, and according to the comment
in skbuff.h


"
*   The hardware you're dealing with doesn't calculate the full checksum
*   (as in CHECKSUM_COMPLETE), but it does parse headers and verify
checksums
*   for specific protocols. For such packets it will set
CHECKSUM_UNNECESSARY
*   if their checksums are okay. skb->csum is still undefined in this case
*   though. A driver or device must never modify the checksum field in the
*   packet even if checksum is verified.
"

The csum is correct I believe?

Thanks

That's on input. But I think for tun it's output, where that is equivalent
to CHECKSUM_NONE



Yes, but the comment said:

"
CKSUM_NONE:
   *
   *   The skb was already checksummed by the protocol, or a checksum is not
   *   required.
   *
   * CHECKSUM_UNNECESSARY:
   *
   *   This has the same meaning on as CHECKSUM_NONE for checksum offload on
   *   output.
   *
"

So still correct I think?

Thanks

Hmm maybe I mean NEEDS_CHECKSUM actually.

I'll need to re-read the spec.


Not sure this is an issue. But if it is, we can probably checksum the packet
before passing it to XDP. But it would be a little slow.

Thanks



Right. I confused DATA_VALID with NEEDS_CHECKSUM.

IIUC XDP generally refuses to attach if checksum offload
is enabled.


Any reason to do this? (Looks like I don't see any code for this)



Could you pls explain how to reproduce the issue you are seeing?



Using small buffer, all csumed packets will be dropped.

Thanks


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-07-03 Thread Michael S. Tsirkin
On Wed, Jun 28, 2017 at 08:05:06PM +0800, Jason Wang wrote:
> 
> 
> On 2017年06月28日 12:01, Michael S. Tsirkin wrote:
> > On Wed, Jun 28, 2017 at 11:40:30AM +0800, Jason Wang wrote:
> > > 
> > > On 2017年06月28日 11:31, Michael S. Tsirkin wrote:
> > > > On Wed, Jun 28, 2017 at 10:45:18AM +0800, Jason Wang wrote:
> > > > > On 2017年06月28日 10:17, Michael S. Tsirkin wrote:
> > > > > > On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:
> > > > > > > On 2017年06月28日 10:02, Michael S. Tsirkin wrote:
> > > > > > > > On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:
> > > > > > > > > We should allow csumed packet for small buffer, otherwise 
> > > > > > > > > XDP_PASS
> > > > > > > > > won't work correctly.
> > > > > > > > > 
> > > > > > > > > Fixes commit bb91accf2733 ("virtio-net: XDP support for small 
> > > > > > > > > buffers")
> > > > > > > > > Signed-off-by: Jason Wang
> > > > > > > > The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
> > > > > > > > What do you think?
> > > > > > > I think it's safe. For XDP_PASS, it work like in the past.
> > > > > > That's the part I don't get. With DATA_VALID csum in packet is 
> > > > > > wrong, XDP
> > > > > > tools assume it's value.
> > > > > DATA_VALID is CHECKSUM_UNCESSARY on the host, and according to the 
> > > > > comment
> > > > > in skbuff.h
> > > > > 
> > > > > 
> > > > > "
> > > > >*   The hardware you're dealing with doesn't calculate the full 
> > > > > checksum
> > > > >*   (as in CHECKSUM_COMPLETE), but it does parse headers and verify
> > > > > checksums
> > > > >*   for specific protocols. For such packets it will set
> > > > > CHECKSUM_UNNECESSARY
> > > > >*   if their checksums are okay. skb->csum is still undefined in 
> > > > > this case
> > > > >*   though. A driver or device must never modify the checksum 
> > > > > field in the
> > > > >*   packet even if checksum is verified.
> > > > > "
> > > > > 
> > > > > The csum is correct I believe?
> > > > > 
> > > > > Thanks
> > > > That's on input. But I think for tun it's output, where that is 
> > > > equivalent
> > > > to CHECKSUM_NONE
> > > > 
> > > > 
> > > Yes, but the comment said:
> > > 
> > > "
> > > CKSUM_NONE:
> > >   *
> > >   *   The skb was already checksummed by the protocol, or a checksum is 
> > > not
> > >   *   required.
> > >   *
> > >   * CHECKSUM_UNNECESSARY:
> > >   *
> > >   *   This has the same meaning on as CHECKSUM_NONE for checksum offload 
> > > on
> > >   *   output.
> > >   *
> > > "
> > > 
> > > So still correct I think?
> > > 
> > > Thanks
> > Hmm maybe I mean NEEDS_CHECKSUM actually.
> > 
> > I'll need to re-read the spec.
> > 
> 
> Not sure this is an issue. But if it is, we can probably checksum the packet
> before passing it to XDP. But it would be a little slow.
> 
> Thanks



Right. I confused DATA_VALID with NEEDS_CHECKSUM.

IIUC XDP generally refuses to attach if checksum offload
is enabled.

Could you pls explain how to reproduce the issue you are seeing?

-- 
MST


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-28 Thread Jason Wang



On 2017年06月28日 12:01, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 11:40:30AM +0800, Jason Wang wrote:


On 2017年06月28日 11:31, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 10:45:18AM +0800, Jason Wang wrote:

On 2017年06月28日 10:17, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:

On 2017年06月28日 10:02, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:

We should allow csumed packet for small buffer, otherwise XDP_PASS
won't work correctly.

Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
Signed-off-by: Jason Wang

The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
What do you think?

I think it's safe. For XDP_PASS, it work like in the past.

That's the part I don't get. With DATA_VALID csum in packet is wrong, XDP
tools assume it's value.

DATA_VALID is CHECKSUM_UNCESSARY on the host, and according to the comment
in skbuff.h


"
   *   The hardware you're dealing with doesn't calculate the full checksum
   *   (as in CHECKSUM_COMPLETE), but it does parse headers and verify
checksums
   *   for specific protocols. For such packets it will set
CHECKSUM_UNNECESSARY
   *   if their checksums are okay. skb->csum is still undefined in this case
   *   though. A driver or device must never modify the checksum field in the
   *   packet even if checksum is verified.
"

The csum is correct I believe?

Thanks

That's on input. But I think for tun it's output, where that is equivalent
to CHECKSUM_NONE



Yes, but the comment said:

"
CKSUM_NONE:
  *
  *   The skb was already checksummed by the protocol, or a checksum is not
  *   required.
  *
  * CHECKSUM_UNNECESSARY:
  *
  *   This has the same meaning on as CHECKSUM_NONE for checksum offload on
  *   output.
  *
"

So still correct I think?

Thanks

Hmm maybe I mean NEEDS_CHECKSUM actually.

I'll need to re-read the spec.



Not sure this is an issue. But if it is, we can probably checksum the 
packet before passing it to XDP. But it would be a little slow.


Thanks


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Michael S. Tsirkin
On Wed, Jun 28, 2017 at 11:40:30AM +0800, Jason Wang wrote:
> 
> 
> On 2017年06月28日 11:31, Michael S. Tsirkin wrote:
> > On Wed, Jun 28, 2017 at 10:45:18AM +0800, Jason Wang wrote:
> > > On 2017年06月28日 10:17, Michael S. Tsirkin wrote:
> > > > On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:
> > > > > On 2017年06月28日 10:02, Michael S. Tsirkin wrote:
> > > > > > On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:
> > > > > > > We should allow csumed packet for small buffer, otherwise XDP_PASS
> > > > > > > won't work correctly.
> > > > > > > 
> > > > > > > Fixes commit bb91accf2733 ("virtio-net: XDP support for small 
> > > > > > > buffers")
> > > > > > > Signed-off-by: Jason Wang
> > > > > > The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
> > > > > > What do you think?
> > > > > I think it's safe. For XDP_PASS, it work like in the past.
> > > > That's the part I don't get. With DATA_VALID csum in packet is wrong, 
> > > > XDP
> > > > tools assume it's value.
> > > DATA_VALID is CHECKSUM_UNCESSARY on the host, and according to the comment
> > > in skbuff.h
> > > 
> > > 
> > > "
> > >   *   The hardware you're dealing with doesn't calculate the full checksum
> > >   *   (as in CHECKSUM_COMPLETE), but it does parse headers and verify
> > > checksums
> > >   *   for specific protocols. For such packets it will set
> > > CHECKSUM_UNNECESSARY
> > >   *   if their checksums are okay. skb->csum is still undefined in this 
> > > case
> > >   *   though. A driver or device must never modify the checksum field in 
> > > the
> > >   *   packet even if checksum is verified.
> > > "
> > > 
> > > The csum is correct I believe?
> > > 
> > > Thanks
> > That's on input. But I think for tun it's output, where that is equivalent
> > to CHECKSUM_NONE
> > 
> > 
> 
> Yes, but the comment said:
> 
> "
> CKSUM_NONE:
>  *
>  *   The skb was already checksummed by the protocol, or a checksum is not
>  *   required.
>  *
>  * CHECKSUM_UNNECESSARY:
>  *
>  *   This has the same meaning on as CHECKSUM_NONE for checksum offload on
>  *   output.
>  *
> "
> 
> So still correct I think?
> 
> Thanks

Hmm maybe I mean NEEDS_CHECKSUM actually.

I'll need to re-read the spec.

-- 
MST


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Jason Wang



On 2017年06月28日 11:31, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 10:45:18AM +0800, Jason Wang wrote:

On 2017年06月28日 10:17, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:

On 2017年06月28日 10:02, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:

We should allow csumed packet for small buffer, otherwise XDP_PASS
won't work correctly.

Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
Signed-off-by: Jason Wang

The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
What do you think?

I think it's safe. For XDP_PASS, it work like in the past.

That's the part I don't get. With DATA_VALID csum in packet is wrong, XDP
tools assume it's value.

DATA_VALID is CHECKSUM_UNCESSARY on the host, and according to the comment
in skbuff.h


"
  *   The hardware you're dealing with doesn't calculate the full checksum
  *   (as in CHECKSUM_COMPLETE), but it does parse headers and verify
checksums
  *   for specific protocols. For such packets it will set
CHECKSUM_UNNECESSARY
  *   if their checksums are okay. skb->csum is still undefined in this case
  *   though. A driver or device must never modify the checksum field in the
  *   packet even if checksum is verified.
"

The csum is correct I believe?

Thanks

That's on input. But I think for tun it's output, where that is equivalent
to CHECKSUM_NONE




Yes, but the comment said:

"
CKSUM_NONE:
 *
 *   The skb was already checksummed by the protocol, or a checksum is not
 *   required.
 *
 * CHECKSUM_UNNECESSARY:
 *
 *   This has the same meaning on as CHECKSUM_NONE for checksum offload on
 *   output.
 *
"

So still correct I think?

Thanks


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Michael S. Tsirkin
On Wed, Jun 28, 2017 at 10:45:18AM +0800, Jason Wang wrote:
> 
> 
> On 2017年06月28日 10:17, Michael S. Tsirkin wrote:
> > On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:
> > > 
> > > On 2017年06月28日 10:02, Michael S. Tsirkin wrote:
> > > > On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:
> > > > > We should allow csumed packet for small buffer, otherwise XDP_PASS
> > > > > won't work correctly.
> > > > > 
> > > > > Fixes commit bb91accf2733 ("virtio-net: XDP support for small 
> > > > > buffers")
> > > > > Signed-off-by: Jason Wang 
> > > > The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
> > > > What do you think?
> > > I think it's safe. For XDP_PASS, it work like in the past.
> > That's the part I don't get. With DATA_VALID csum in packet is wrong, XDP
> > tools assume it's value.
> 
> DATA_VALID is CHECKSUM_UNCESSARY on the host, and according to the comment
> in skbuff.h
> 
> 
> "
>  *   The hardware you're dealing with doesn't calculate the full checksum
>  *   (as in CHECKSUM_COMPLETE), but it does parse headers and verify
> checksums
>  *   for specific protocols. For such packets it will set
> CHECKSUM_UNNECESSARY
>  *   if their checksums are okay. skb->csum is still undefined in this case
>  *   though. A driver or device must never modify the checksum field in the
>  *   packet even if checksum is verified.
> "
> 
> The csum is correct I believe?
> 
> Thanks

That's on input. But I think for tun it's output, where that is equivalent
to CHECKSUM_NONE


> > 
> > > For XDP_TX, we
> > > zero the vnet header.
> > Again TX offload is disabled, so packets will go out with an invalid
> > checksum.
> > 
> > > For adjusting header, XDP prog should deal with csum.
> > > 
> > > Thanks
> > That part seems right.
> > 
> > > > > ---
> > > > > The patch is needed for -stable.
> > > > > ---
> > > > >drivers/net/virtio_net.c | 2 +-
> > > > >1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > > > index 143d8a9..499fcc9 100644
> > > > > --- a/drivers/net/virtio_net.c
> > > > > +++ b/drivers/net/virtio_net.c
> > > > > @@ -413,7 +413,7 @@ static struct sk_buff *receive_small(struct 
> > > > > net_device *dev,
> > > > >   void *orig_data;
> > > > >   u32 act;
> > > > > - if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))
> > > > > + if (unlikely(hdr->hdr.gso_type))
> > > > >   goto err_xdp;
> > > > >   xdp.data_hard_start = buf + VIRTNET_RX_PAD + 
> > > > > vi->hdr_len;
> > > > > -- 
> > > > > 2.7.4


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Jason Wang



On 2017年06月28日 10:17, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:


On 2017年06月28日 10:02, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:

We should allow csumed packet for small buffer, otherwise XDP_PASS
won't work correctly.

Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
Signed-off-by: Jason Wang 

The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
What do you think?

I think it's safe. For XDP_PASS, it work like in the past.

That's the part I don't get. With DATA_VALID csum in packet is wrong, XDP
tools assume it's value.


DATA_VALID is CHECKSUM_UNCESSARY on the host, and according to the 
comment in skbuff.h



"
 *   The hardware you're dealing with doesn't calculate the full checksum
 *   (as in CHECKSUM_COMPLETE), but it does parse headers and verify 
checksums
 *   for specific protocols. For such packets it will set 
CHECKSUM_UNNECESSARY

 *   if their checksums are okay. skb->csum is still undefined in this case
 *   though. A driver or device must never modify the checksum field in the
 *   packet even if checksum is verified.
"

The csum is correct I believe?

Thanks




For XDP_TX, we
zero the vnet header.

Again TX offload is disabled, so packets will go out with an invalid
checksum.


For adjusting header, XDP prog should deal with csum.

Thanks

That part seems right.


---
The patch is needed for -stable.
---
   drivers/net/virtio_net.c | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 143d8a9..499fcc9 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -413,7 +413,7 @@ static struct sk_buff *receive_small(struct net_device *dev,
void *orig_data;
u32 act;
-   if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))
+   if (unlikely(hdr->hdr.gso_type))
goto err_xdp;
xdp.data_hard_start = buf + VIRTNET_RX_PAD + vi->hdr_len;
--
2.7.4




Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Michael S. Tsirkin
On Wed, Jun 28, 2017 at 10:14:34AM +0800, Jason Wang wrote:
> 
> 
> On 2017年06月28日 10:02, Michael S. Tsirkin wrote:
> > On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:
> > > We should allow csumed packet for small buffer, otherwise XDP_PASS
> > > won't work correctly.
> > > 
> > > Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
> > > Signed-off-by: Jason Wang 
> > The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
> > What do you think?
> 
> I think it's safe. For XDP_PASS, it work like in the past.

That's the part I don't get. With DATA_VALID csum in packet is wrong, XDP
tools assume it's value.

> For XDP_TX, we
> zero the vnet header.

Again TX offload is disabled, so packets will go out with an invalid
checksum.

> For adjusting header, XDP prog should deal with csum.
> 
> Thanks

That part seems right.

> > 
> > > ---
> > > The patch is needed for -stable.
> > > ---
> > >   drivers/net/virtio_net.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > index 143d8a9..499fcc9 100644
> > > --- a/drivers/net/virtio_net.c
> > > +++ b/drivers/net/virtio_net.c
> > > @@ -413,7 +413,7 @@ static struct sk_buff *receive_small(struct 
> > > net_device *dev,
> > >   void *orig_data;
> > >   u32 act;
> > > - if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))
> > > + if (unlikely(hdr->hdr.gso_type))
> > >   goto err_xdp;
> > >   xdp.data_hard_start = buf + VIRTNET_RX_PAD + 
> > > vi->hdr_len;
> > > -- 
> > > 2.7.4


Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Jason Wang



On 2017年06月28日 10:02, Michael S. Tsirkin wrote:

On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:

We should allow csumed packet for small buffer, otherwise XDP_PASS
won't work correctly.

Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
Signed-off-by: Jason Wang 

The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
What do you think?


I think it's safe. For XDP_PASS, it work like in the past. For XDP_TX, 
we zero the vnet header. For adjusting header, XDP prog should deal with 
csum.


Thanks




---
The patch is needed for -stable.
---
  drivers/net/virtio_net.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 143d8a9..499fcc9 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -413,7 +413,7 @@ static struct sk_buff *receive_small(struct net_device *dev,
void *orig_data;
u32 act;
  
-		if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))

+   if (unlikely(hdr->hdr.gso_type))
goto err_xdp;
  
  		xdp.data_hard_start = buf + VIRTNET_RX_PAD + vi->hdr_len;

--
2.7.4




Re: [PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Michael S. Tsirkin
On Wed, Jun 28, 2017 at 09:54:03AM +0800, Jason Wang wrote:
> We should allow csumed packet for small buffer, otherwise XDP_PASS
> won't work correctly.
> 
> Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
> Signed-off-by: Jason Wang 

The issue would be VIRTIO_NET_HDR_F_DATA_VALID might be set.
What do you think?

> ---
> The patch is needed for -stable.
> ---
>  drivers/net/virtio_net.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 143d8a9..499fcc9 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -413,7 +413,7 @@ static struct sk_buff *receive_small(struct net_device 
> *dev,
>   void *orig_data;
>   u32 act;
>  
> - if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))
> + if (unlikely(hdr->hdr.gso_type))
>   goto err_xdp;
>  
>   xdp.data_hard_start = buf + VIRTNET_RX_PAD + vi->hdr_len;
> -- 
> 2.7.4


[PATCH net] virtio-net: unbreak cusmed packet for small buffer XDP

2017-06-27 Thread Jason Wang
We should allow csumed packet for small buffer, otherwise XDP_PASS
won't work correctly.

Fixes commit bb91accf2733 ("virtio-net: XDP support for small buffers")
Signed-off-by: Jason Wang 
---
The patch is needed for -stable.
---
 drivers/net/virtio_net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 143d8a9..499fcc9 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -413,7 +413,7 @@ static struct sk_buff *receive_small(struct net_device *dev,
void *orig_data;
u32 act;
 
-   if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags))
+   if (unlikely(hdr->hdr.gso_type))
goto err_xdp;
 
xdp.data_hard_start = buf + VIRTNET_RX_PAD + vi->hdr_len;
-- 
2.7.4