Patchwork virtio_net: don't set NETIF_F_FRAGLIST

login
register
mail settings
Submitter Mark McLoughlin
Date Nov. 5, 2008, 12:34 p.m.
Message ID <1225888486-977-1-git-send-email-markmc@redhat.com>
Download mbox | patch
Permalink /patch/7328/
State Accepted
Delegated to: Jeff Garzik
Headers show

Comments

Mark McLoughlin - Nov. 5, 2008, 12:34 p.m.
We don't handle skb_shared_info->frag_list, so we shouldn't
be setting the NETIF_F_FRAGLIST flag.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
---
 drivers/net/virtio_net.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Rusty Russell - Nov. 5, 2008, 9:53 p.m.
On Wednesday 05 November 2008 23:34:46 Mark McLoughlin wrote:
> We don't handle skb_shared_info->frag_list, so we shouldn't
> be setting the NETIF_F_FRAGLIST flag.

We don't?

skb_to_sgvec() should handle it OK, is there some subtlety I'm missing?

Rusty.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff Garzik - Nov. 6, 2008, 5:43 a.m.
Mark McLoughlin wrote:
> We don't handle skb_shared_info->frag_list, so we shouldn't
> be setting the NETIF_F_FRAGLIST flag.
> 
> Signed-off-by: Mark McLoughlin <markmc@redhat.com>
> ---
>  drivers/net/virtio_net.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 0196a0d..9d4fdad 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -505,7 +505,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>  	/* Do we support "hardware" checksums? */
>  	if (csum && virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
>  		/* This opens up the world of extra features. */
> -		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
> +		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG;
>  		if (gso && virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
>  			dev->features |= NETIF_F_TSO | NETIF_F_UFO
>  				| NETIF_F_TSO_ECN | NETIF_F_TSO6;

applied this and tun patch

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mark McLoughlin - Nov. 6, 2008, 10:10 a.m.
On Thu, 2008-11-06 at 08:53 +1100, Rusty Russell wrote:
> On Wednesday 05 November 2008 23:34:46 Mark McLoughlin wrote:
> > We don't handle skb_shared_info->frag_list, so we shouldn't
> > be setting the NETIF_F_FRAGLIST flag.
> 
> We don't?
> 
> skb_to_sgvec() should handle it OK, is there some subtlety I'm missing?

Good grief ... yes, sorry.

Same is true for the tun patch, but I wonder ... could a fraglist skb
exceed 64k? i.e. we need to know the max possible size of a packet
before reading it from the tap.

Cheers,
Mark.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mark McLoughlin - Nov. 6, 2008, 10:12 a.m.
On Thu, 2008-11-06 at 00:43 -0500, Jeff Garzik wrote:
> Mark McLoughlin wrote:
> > We don't handle skb_shared_info->frag_list, so we shouldn't
> > be setting the NETIF_F_FRAGLIST flag.
> > 
> > Signed-off-by: Mark McLoughlin <markmc@redhat.com>
> > ---
> >  drivers/net/virtio_net.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > index 0196a0d..9d4fdad 100644
> > --- a/drivers/net/virtio_net.c
> > +++ b/drivers/net/virtio_net.c
> > @@ -505,7 +505,7 @@ static int virtnet_probe(struct virtio_device *vdev)
> >  	/* Do we support "hardware" checksums? */
> >  	if (csum && virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
> >  		/* This opens up the world of extra features. */
> > -		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
> > +		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG;
> >  		if (gso && virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
> >  			dev->features |= NETIF_F_TSO | NETIF_F_UFO
> >  				| NETIF_F_TSO_ECN | NETIF_F_TSO6;
> 
> applied this and tun patch

Sorry Jeff, Rusty correctly points out that we do in fact handle
shinfo->frags; just a moment of blindness on my part.

Thanks,
Mark.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff Garzik - Nov. 6, 2008, 10:48 a.m.
Mark McLoughlin wrote:
> On Thu, 2008-11-06 at 00:43 -0500, Jeff Garzik wrote:
>> Mark McLoughlin wrote:
>>> We don't handle skb_shared_info->frag_list, so we shouldn't
>>> be setting the NETIF_F_FRAGLIST flag.
>>>
>>> Signed-off-by: Mark McLoughlin <markmc@redhat.com>
>>> ---
>>>  drivers/net/virtio_net.c |    2 +-
>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
>>> index 0196a0d..9d4fdad 100644
>>> --- a/drivers/net/virtio_net.c
>>> +++ b/drivers/net/virtio_net.c
>>> @@ -505,7 +505,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>>>  	/* Do we support "hardware" checksums? */
>>>  	if (csum && virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
>>>  		/* This opens up the world of extra features. */
>>> -		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
>>> +		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG;
>>>  		if (gso && virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
>>>  			dev->features |= NETIF_F_TSO | NETIF_F_UFO
>>>  				| NETIF_F_TSO_ECN | NETIF_F_TSO6;
>> applied this and tun patch
> 
> Sorry Jeff, Rusty correctly points out that we do in fact handle
> shinfo->frags; just a moment of blindness on my part.

but what about frag_list ?


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mark McLoughlin - Nov. 6, 2008, 10:56 a.m.
On Thu, 2008-11-06 at 05:48 -0500, Jeff Garzik wrote:
> Mark McLoughlin wrote:
> > On Thu, 2008-11-06 at 00:43 -0500, Jeff Garzik wrote:
> >> Mark McLoughlin wrote:
> >>> We don't handle skb_shared_info->frag_list, so we shouldn't
> >>> be setting the NETIF_F_FRAGLIST flag.
> >>>
> >>> Signed-off-by: Mark McLoughlin <markmc@redhat.com>
> >>> ---
> >>>  drivers/net/virtio_net.c |    2 +-
> >>>  1 files changed, 1 insertions(+), 1 deletions(-)
> >>>
> >>> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> >>> index 0196a0d..9d4fdad 100644
> >>> --- a/drivers/net/virtio_net.c
> >>> +++ b/drivers/net/virtio_net.c
> >>> @@ -505,7 +505,7 @@ static int virtnet_probe(struct virtio_device *vdev)
> >>>  	/* Do we support "hardware" checksums? */
> >>>  	if (csum && virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
> >>>  		/* This opens up the world of extra features. */
> >>> -		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
> >>> +		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG;
> >>>  		if (gso && virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
> >>>  			dev->features |= NETIF_F_TSO | NETIF_F_UFO
> >>>  				| NETIF_F_TSO_ECN | NETIF_F_TSO6;
> >> applied this and tun patch
> > 
> > Sorry Jeff, Rusty correctly points out that we do in fact handle
> > shinfo->frags; just a moment of blindness on my part.
> 
> but what about frag_list ?

Yeah, I meant shinfo->frag_list.

virtio_net uses skb_to_sgvec() and tun uses skb_copy_datagram_iovec()

Both handle shinfo->frag_list correctly.

Thanks,
Mark.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 0196a0d..9d4fdad 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -505,7 +505,7 @@  static int virtnet_probe(struct virtio_device *vdev)
 	/* Do we support "hardware" checksums? */
 	if (csum && virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
 		/* This opens up the world of extra features. */
-		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
+		dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG;
 		if (gso && virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
 			dev->features |= NETIF_F_TSO | NETIF_F_UFO
 				| NETIF_F_TSO_ECN | NETIF_F_TSO6;