Re: [PATCH next-next-2.6 v2] virtio_net: missing sg_init_table
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2010-03-31 09:24:05
Also in:
lkml
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 <redacted> Tested-by: Thomas Müller <redacted> Signed-off-by: Shirley Ma <redacted>
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?
quoted hunk ↗ jump to hunk
--- 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