DPDK patches and discussions
 help / color / mirror / Atom feed
From: Tiwei Bie <tiwei.bie@intel.com>
To: Jens Freimann <jfreimann@redhat.com>
Cc: dev@dpdk.org, maxime.coquelin@redhat.com, Gavin.Hu@arm.com,
	zhihong.wang@intel.com
Subject: Re: [dpdk-dev] [PATCH v8 5/8] net/virtio: implement transmit path for packed queues
Date: Thu, 18 Oct 2018 12:43:20 +0800	[thread overview]
Message-ID: <20181018044320.GA15631@debian> (raw)
In-Reply-To: <20181016090134.29448-6-jfreimann@redhat.com>

On Tue, Oct 16, 2018 at 11:01:31AM +0200, Jens Freimann wrote:
[...]
> +void
> +vq_ring_free_chain_packed(struct virtqueue *vq, uint16_t desc_idx)
> +{
> +	struct vring_desc_packed *dp;
> +	struct vq_desc_extra *dxp = NULL, *dxp_tail = NULL;
> +	uint16_t desc_idx_last = desc_idx;
> +
> +	dp  = &vq->vq_ring.desc_packed[desc_idx];
> +	dxp = &vq->vq_descx[desc_idx];

In the out-of-order case, we can't assume the desc and desc_extra
have the same index.

> +	vq->vq_free_cnt = (uint16_t)(vq->vq_free_cnt + dxp->ndescs);
> +	if ((dp->flags & VRING_DESC_F_INDIRECT) == 0) {
> +		while (dp->flags & VRING_DESC_F_NEXT) {

https://github.com/oasis-tcs/virtio-spec/blob/89dd55f5e606/packed-ring.tex#L222-L226
The device only writes out a single used descriptor for the whole
list. It then skips forward according to the number of
descriptors in the list. The driver needs to keep track of the size
of the list corresponding to each buffer ID, to be able to skip
to where the next used descriptor is written by the device.

IOW, we can't use the VRING_DESC_F_NEXT here.


> +			desc_idx_last = dxp->next;
> +			dp = &vq->vq_ring.desc_packed[dxp->next];
> +			dxp = &vq->vq_descx[dxp->next];
> +		}
> +	}

  reply	other threads:[~2018-10-18  4:44 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-16  9:01 [dpdk-dev] [PATCH v8 0/8] implement packed virtqueues Jens Freimann
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 1/8] net/virtio: vring init for packed queues Jens Freimann
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 2/8] net/virtio: add packed virtqueue defines Jens Freimann
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 3/8] net/virtio: add packed virtqueue helpers Jens Freimann
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 4/8] net/virtio: dump packed virtqueue data Jens Freimann
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 5/8] net/virtio: implement transmit path for packed queues Jens Freimann
2018-10-18  4:43   ` Tiwei Bie [this message]
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 6/8] net/virtio: implement receive " Jens Freimann
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 7/8] net/virtio: add virtio send command packed queue support Jens Freimann
2018-10-16  9:01 ` [dpdk-dev] [PATCH v8 8/8] net/virtio: enable packed virtqueues by default Jens Freimann

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=20181018044320.GA15631@debian \
    --to=tiwei.bie@intel.com \
    --cc=Gavin.Hu@arm.com \
    --cc=dev@dpdk.org \
    --cc=jfreimann@redhat.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=zhihong.wang@intel.com \
    /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).