[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20091216133039.GB18327@gondor.apana.org.au>
Date: Wed, 16 Dec 2009 21:30:39 +0800
From: Herbert Xu <herbert@...dor.apana.org.au>
To: Rusty Russell <rusty@...tcorp.com.au>
Cc: Sridhar Samudrala <sri@...ibm.com>, mst@...hat.com,
netdev@...r.kernel.org
Subject: Re: [RFC PATCH] Regression in linux 2.6.32 virtio_net seen with
vhost-net
On Wed, Dec 16, 2009 at 11:15:38PM +1030, Rusty Russell wrote:
>
> virtio_net: use NAPI for xmit (UNTESTED)
>
> This is closer to the way tg3 and ixgbe do it: use the NAPI framework to
> free transmitted packets. It neatens things a little as well.
Looks good to me.
> @@ -544,15 +552,16 @@ again:
>
> /* Apparently nice girls don't return TX_BUSY; stop the queue
> * before it gets out of hand. Naturally, this wastes entries. */
> - if (capacity < 2+MAX_SKB_FRAGS) {
> - netif_stop_queue(dev);
> - if (unlikely(!vi->svq->vq_ops->enable_cb(vi->svq))) {
> - /* More just got used, free them then recheck. */
> - capacity += free_old_xmit_skbs(vi);
> - if (capacity >= 2+MAX_SKB_FRAGS) {
> - netif_start_queue(dev);
> - vi->svq->vq_ops->disable_cb(vi->svq);
> - }
> + if (unlikely(capacity < 2+MAX_SKB_FRAGS)) {
> + /* Free old skbs; might make more capacity. */
> + vi->capacity = capacity + free_old_xmit_skbs(vi);
> + if (unlikely(vi->capacity < 2+MAX_SKB_FRAGS)) {
> + /* Make sure virtnet_xmit_poll sees updated capacity */
> + wmb();
You only need smp_wmb() since this is protecting against the
guest only as opposed to the host.
Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@...dor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists