| Submitter | Shirley Ma |
|---|---|
| Date | March 30, 2010, 1:19 a.m. |
| Message ID | <1269911955.14013.4.camel@localhost.localdomain> |
| Download | mbox | patch |
| Permalink | /patch/48924/ |
| State | Accepted |
| Delegated to: | David Miller |
| Headers | show |
Comments
From: Shirley Ma <mashirle@us.ibm.com> Date: Mon, 29 Mar 2010 18:19:15 -0700 > Add missing sg_init_table for sg_set_buf in virtio_net which > induced in defer skb patch. > > Reported-by: Thomas Müller <thomas@mathtm.de> > Tested-by: Thomas Müller <thomas@mathtm.de> > Signed-off-by: Shirley Ma <xma@us.ibm.com> Applied, thanks. -- 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
On Mon, Mar 29, 2010 at 06:19:15PM -0700, Shirley Ma wrote: > Add missing sg_init_table for sg_set_buf in virtio_net which > induced in defer skb patch. > > Reported-by: Thomas Müller <thomas@mathtm.de> > Tested-by: Thomas Müller <thomas@mathtm.de> > Signed-off-by: Shirley Ma <xma@us.ibm.com> I'm concerned that the 'big' path might cause a performance regression. Let's move sg into virtnet_info so that this needs to be only called once? > --- > drivers/net/virtio_net.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 25dc77c..3f5be35 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -326,6 +326,7 @@ static int add_recvbuf_small(struct virtnet_info *vi, gfp_t gfp) > struct scatterlist sg[2]; > int err; > > + sg_init_table(sg, 2); > skb = netdev_alloc_skb_ip_align(vi->dev, MAX_PACKET_LEN); > if (unlikely(!skb)) > return -ENOMEM; > @@ -351,6 +352,7 @@ static int add_recvbuf_big(struct virtnet_info *vi, gfp_t gfp) > char *p; > int i, err, offset; > > + sg_init_table(sg, MAX_SKB_FRAGS + 2); > /* page in sg[MAX_SKB_FRAGS + 1] is list tail */ > for (i = MAX_SKB_FRAGS + 1; i > 1; --i) { > first = get_a_page(vi, gfp); > > > -- > 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 -- 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
From: "Michael S. Tsirkin" <mst@redhat.com> Date: Wed, 31 Mar 2010 12:20:22 +0300 > On Mon, Mar 29, 2010 at 06:19:15PM -0700, Shirley Ma wrote: >> Add missing sg_init_table for sg_set_buf in virtio_net which >> induced in defer skb patch. >> >> Reported-by: Thomas Müller <thomas@mathtm.de> >> Tested-by: Thomas Müller <thomas@mathtm.de> >> Signed-off-by: Shirley Ma <xma@us.ibm.com> > > I'm concerned that the 'big' path might cause a performance regression. > Let's move sg into virtnet_info so that this needs to be only called > once? Yeah that might improve things. Shirley's change is already in net-next-2.6 so anything implementing this would need to be submitted relative to that. -- 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 25dc77c..3f5be35 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -326,6 +326,7 @@ static int add_recvbuf_small(struct virtnet_info *vi, gfp_t gfp) struct scatterlist sg[2]; int err; + sg_init_table(sg, 2); skb = netdev_alloc_skb_ip_align(vi->dev, MAX_PACKET_LEN); if (unlikely(!skb)) return -ENOMEM; @@ -351,6 +352,7 @@ static int add_recvbuf_big(struct virtnet_info *vi, gfp_t gfp) char *p; int i, err, offset; + sg_init_table(sg, MAX_SKB_FRAGS + 2); /* page in sg[MAX_SKB_FRAGS + 1] is list tail */ for (i = MAX_SKB_FRAGS + 1; i > 1; --i) { first = get_a_page(vi, gfp);