From: "Michael S. Tsirkin" <mst@redhat.com>
To: "Steven Luong (sluong)" <sluong@cisco.com>
Cc: "Liang, Cunming" <cunming.liang@intel.com>,
"virtio-dev@lists.oasis-open.org"
<virtio-dev@lists.oasis-open.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>
Subject: Re: [virtio-dev] packed ring layout proposal v3
Date: Fri, 29 Sep 2017 00:13:32 +0300 [thread overview]
Message-ID: <20170929001152-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20170928023112-mutt-send-email-mst@kernel.org>
On Thu, Sep 28, 2017 at 02:49:15AM +0300, Michael S. Tsirkin wrote:
> On Tue, Sep 26, 2017 at 11:38:18PM +0000, Steven Luong (sluong) wrote:
> > Michael,
> >
> > Would you please give an example or two how these two flags DESC_DRIVER and DESC_WRAP are used together? Like others, I am confused by the description and still don’t quite grok it.
> >
> > Steven
Note: I made a mistake in the email. Instead of DESC_NEXT it should read
DESC_MORE everywhere. I corrected the quoted text below for simplicity.
> My bad, I will need to work on it. Here is an example:
>
> Let's assume device promised to consume packets in order
>
> ring size = 2
>
> Ring is 0 initialized.
>
> Device initially polls DESC[0].flags for WRAP bit to change.
>
> driver adds:
>
> DESC[0].addr = 1234
> DESC[0].id = 0
> DESC[0].flags = DESC_DRIVER | DESC_MORE | DESC_WRAP
>
> and
>
> DESC[0].addr = 5678
> DESC[1].id = 1
> DESC[1].flags = DESC_DRIVER | DESC_WRAP
>
>
> it now starts polling DESC[0] flags.
>
>
> Device reads 1234, executes it, does not use it.
>
> Device reads 5678, executes it, and uses it:
>
> DESC[0].id = 1
> DESC[0].flags = 0
>
> Device now polls DESC[0].flags for WRAP bit to change.
>
> Now driver sees that DRIVER bit has been cleared, so it nows that id is
> valid. I sees id 1, therefore id 0 and 1 has been read and are safe to
> overwrite.
>
> So it writes it out. It wrapped around to beginning of ring,
> so it flips the WRAP bit to 0 on all descriptors now:
>
> DESC[0].addr = 9ABC
> DESC[0].id = 0
> DESC[0].flags = DESC_DRIVER | DESC_MORE
>
>
> DESC[0].addr = DEF0
> DESC[0].id = 1
> DESC[0].flags = DESC_DRIVER
>
>
> Next round wrap will be 1 again.
>
>
> To summarise:
>
> DRIVER bit is used by driver to detect device has used one or more
> descriptors. WRAP is is used by device to detect driver has made a
> new descriptor available.
>
>
> --
> MST
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
next prev parent reply other threads:[~2017-09-28 21:13 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-10 5:06 [virtio-dev] packed ring layout proposal v3 Michael S. Tsirkin
[not found] ` <240c623b-2d8f-28d9-d349-d01e2c24b93a@redhat.com>
[not found] ` <20170208214435-mutt-send-email-mst@kernel.org>
[not found] ` <cc075b18-0913-ef89-96a8-a29869abd73e@redhat.com>
[not found] ` <20170209171105.075a9d9c.cornelia.huck@de.ibm.com>
[not found] ` <20170222181333-mutt-send-email-mst@kernel.org>
[not found] ` <20170307165353.00ff80d9.cornelia.huck@de.ibm.com>
[not found] ` <20170307223057-mutt-send-email-mst@kernel.org>
2017-07-10 16:27 ` [virtio-dev] packed ring layout proposal v2 Amnon Ilan
2017-07-16 6:00 ` Lior Narkis
2017-07-18 16:23 ` Michael S. Tsirkin
2017-07-19 7:41 ` Lior Narkis
2017-07-20 13:06 ` Michael S. Tsirkin
2017-09-11 7:47 ` [virtio-dev] Re: packed ring layout proposal v3 Jason Wang
2017-09-12 16:23 ` Willem de Bruijn
2017-09-13 1:26 ` Jason Wang
2017-09-12 16:20 ` [virtio-dev] " Willem de Bruijn
2017-09-20 9:11 ` Liang, Cunming
2017-09-25 22:24 ` Michael S. Tsirkin
2017-09-26 23:38 ` Steven Luong (sluong)
2017-09-27 23:49 ` Michael S. Tsirkin
2017-09-28 9:44 ` Liang, Cunming
2017-10-01 4:08 ` Michael S. Tsirkin
[not found] ` <20171004123901.oomueufqg52uhas4@localhost.localdomain>
2017-10-04 12:58 ` Michael S. Tsirkin
2017-10-10 9:56 ` Liang, Cunming
2017-09-28 21:13 ` Michael S. Tsirkin [this message]
2017-09-21 13:36 ` Liang, Cunming
2017-09-28 21:27 ` Michael S. Tsirkin
2017-10-08 6:16 ` [virtio-dev] " Ilya Lesokhin
2017-10-25 16:20 ` [virtio-dev] " Michael S. Tsirkin
2017-10-29 9:05 ` [virtio-dev] " Ilya Lesokhin
2017-10-29 14:21 ` [virtio-dev] " Michael S. Tsirkin
2017-10-29 14:34 ` [virtio-dev] " Ilya Lesokhin
2017-10-30 2:08 ` [virtio-dev] " Michael S. Tsirkin
2017-10-30 6:30 ` [virtio-dev] " Ilya Lesokhin
2017-10-30 16:30 ` [virtio-dev] " Michael S. Tsirkin
-- strict thread matches above, loose matches on Subject: below --
2017-10-20 9:50 [virtio-dev] " Lars Ganrot
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=20170929001152-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=cunming.liang@intel.com \
--cc=sluong@cisco.com \
--cc=virtio-dev@lists.oasis-open.org \
--cc=virtualization@lists.linux-foundation.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