From: Dor Laor <dor.laor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Christian Borntraeger
<borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
Cc: kvm-devel
<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: [PATCH resent] virtio_net: Fix stalled inbound trafficon early packets
Date: Thu, 13 Dec 2007 15:24:07 +0200 [thread overview]
Message-ID: <47613277.3060403@qumranet.com> (raw)
In-Reply-To: <200712121914.38135.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
Christian Borntraeger wrote:
> Am Mittwoch, 12. Dezember 2007 schrieb Dor Laor:
>
>> I think the change below handles the race. Otherwise please detail the
>> use case.
>>
> [...]
>
>>> @@ -292,6 +292,9 @@ static int virtnet_open(struct net_devic
>>> return -ENOMEM;
>>>
>>> napi_enable(&vi->napi);
>>> +
>>> + vi->rvq->vq_ops->enable(vi->rvq);
>>> + vi->svq->vq_ops->enable(vi->svq);
>>>
>>>
>> If you change it to:
>> if (!vi->rvq->vq_ops->enable(vi->rvq))
>> vi->rvq->vq_ops->kick(vi->rvq);
>> if (!vi->rvq->vq_ops->enable(vi->svq))
>> vi->rvq->vq_ops->kick(vi->svq);
>>
>> You solve the race of packets already waiting in the queue without
>> triggering the irq.
>>
>
> Hmm, I dont fully understand your point. I think this will work as long as
> the host has not consumed all inbound buffers. It will also require that
> the host sends an additional packet, no? If no additional packet comes the
> host has no reason to send an interrupt just because it got a notify
> hypercall. kick inside a guest also does not trigger the poll routine.
>
> It also wont work on the following scenario:
> in virtnet open we will allocate buffers and send them to the host using the
> kick callback. The host can now use _all_ buffers for incoming data while
> interrupts are still disabled and the guest is not running.( Lets say the
> host bridge has lots of multicast traffic and the guest gets not scheduled
> for a while). When the guest now continues and enables the interrupts
> nothing happens. Doing a kick does not help, as the host code will bail out
> with "no dma memory for transfer".
>
> Christian
>
>
You're right I got confused somehow.
So in that case setting the driver status field on open in addition to
your enable will do the trick.
On DRIVER_OPEN the host will trigger an interrupt if the queue is not
empty..
Thanks,
Dor
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
next prev parent reply other threads:[~2007-12-13 13:24 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-11 11:42 [PATCH resent] virtio_net: Fix stalled inbound traffic on early packets Christian Borntraeger
[not found] ` <200712111242.28843.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-12-11 12:48 ` [PATCH resent] virtio_net: Fix stalled inbound trafficon " Dor Laor
[not found] ` <475E8716.2010500-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-12-11 12:57 ` Dor Laor
[not found] ` <475E892D.9060400-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-12-11 13:16 ` Christian Borntraeger
2007-12-12 1:54 ` [kvm-devel] " Rusty Russell
2007-12-12 11:39 ` Christian Borntraeger
2007-12-12 15:48 ` Dor Laor
[not found] ` <476002E7.5050301-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-12-12 18:14 ` Christian Borntraeger
[not found] ` <200712121914.38135.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-12-13 13:24 ` Dor Laor [this message]
2007-12-13 18:30 ` [kvm-devel] " Christian Borntraeger
[not found] ` <200712131930.31602.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-12-18 6:54 ` Rusty Russell
2007-12-11 13:19 ` [kvm-devel] " Christian Borntraeger
2007-12-11 15:27 ` Christian Borntraeger
[not found] ` <200712111627.21364.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-12-11 23:34 ` Dor Laor
2007-12-12 11:27 ` [kvm-devel] " Christian Borntraeger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47613277.3060403@qumranet.com \
--to=dor.laor-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=dor.laor-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).