All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: dev@dpdk.org
Subject: Re: [PATCH 2/2] virtio: clean up space checks on xmit
Date: Fri, 4 Dec 2015 11:28:58 +0800	[thread overview]
Message-ID: <20151204032858.GB29571@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <1449191574-14629-3-git-send-email-stephen@networkplumber.org>

On Thu, Dec 03, 2015 at 05:12:54PM -0800, Stephen Hemminger wrote:
> The space check for transmit ring only needs a single conditional.
> I.e only need to recheck for space if there was no space in first check.
> 
> This can help performance and simplifies loop.

This is a good cleanup. Besides that, I have few minor comments below.

> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  drivers/net/virtio/virtio_rxtx.c | 68 +++++++++++++++++-----------------------
>  1 file changed, 29 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
> index 466fee6..7cb932a 100644
> --- a/drivers/net/virtio/virtio_rxtx.c
> +++ b/drivers/net/virtio/virtio_rxtx.c
> @@ -832,7 +832,6 @@ uint16_t
>  virtio_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
>  {
>  	struct virtqueue *txvq = tx_queue;
> -	struct rte_mbuf *txm;
>  	uint16_t nb_used, nb_tx;
>  	int error;
>  
> @@ -846,58 +845,49 @@ virtio_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
>  	if (likely(nb_used > txvq->vq_nentries - txvq->vq_free_thresh))
>  		virtio_xmit_cleanup(txvq, nb_used);
>  
> -	nb_tx = 0;
> -
> -	while (nb_tx < nb_pkts) {
> +	for (nb_tx = 0; nb_tx < nb_pkts; nb_tx++) {
> +		struct rte_mbuf *txm = tx_pkts[nb_tx];
>  		/* Need one more descriptor for virtio header. */
> -		int need = tx_pkts[nb_tx]->nb_segs - txvq->vq_free_cnt + 1;
> +		int need = txm->nb_segs - txvq->vq_free_cnt + 1;

While reviewing the code, I found the var name `need' is not properly
taken. Maybe `need_cleanup' is better, and it's better to be defined
as bool type. What do you think of that?

(And yes, it has nothing to do with your patch, I just found it we
can rename it to a better name to improve the code readability a bit.
If you agree, would you submit a patch, or should I do it?)

>  
> -		/*Positive value indicates it need free vring descriptors */
> +		/* Positive value indicates it need free vring descriptors */
>  		if (unlikely(need > 0)) {
>  			nb_used = VIRTQUEUE_NUSED(txvq);
>  			virtio_rmb();
>  			need = RTE_MIN(need, (int)nb_used);
>  
>  			virtio_xmit_cleanup(txvq, need);
> -			need = (int)tx_pkts[nb_tx]->nb_segs -
> -				txvq->vq_free_cnt + 1;
> +			need = txm->nb_segs - txvq->vq_free_cnt + 1;
> +			if (unlikely(need > 0)) {
> +				PMD_TX_LOG(ERR,
> +					   "No free tx descriptors to transmit");
> +				break;
> + 			}
   ^

Minor nit: I found a leading white space there.

Otherwise, it looks good:

Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>

	--yliu

  reply	other threads:[~2015-12-04  3:28 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-04  1:12 [PATCH 0/2] virtio: bugfix and cleanup Stephen Hemminger
2015-12-04  1:12 ` [PATCH 1/2] virtio: make sure rcv mbuf initialized correctly Stephen Hemminger
2015-12-04  3:18   ` Yuanhan Liu
2015-12-04  1:12 ` [PATCH 2/2] virtio: clean up space checks on xmit Stephen Hemminger
2015-12-04  3:28   ` Yuanhan Liu [this message]
2015-12-05 19:50     ` Stephen Hemminger
2015-12-08  1:54       ` Yuanhan Liu
2015-12-06 23:02 ` [PATCH 0/2] virtio: bugfix and cleanup Thomas Monjalon

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=20151204032858.GB29571@yliu-dev.sh.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=dev@dpdk.org \
    --cc=stephen@networkplumber.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.