All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesper Dangaard Brouer <brouer@redhat.com>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: "netdev" <netdev@vger.kernel.org>,
	Mathias Krause <minipli@googlemail.com>,
	brouer@redhat.com, Robert Olsson <robert@herjulf.net>
Subject: Re: [PATCH] pktgen: nowait parameter.
Date: Wed, 3 Sep 2014 11:09:56 +0200	[thread overview]
Message-ID: <20140903110956.0872841f@redhat.com> (raw)
In-Reply-To: <87oauxibda.fsf@rustcorp.com.au>

On Wed, 03 Sep 2014 13:50:01 +0930
Rusty Russell <rusty@rustcorp.com.au> wrote:

> While trying to measure speed of virtio_net, I was getting hangs.
> This is because we skb_orphan() but delay the tx interrupt
> indefinitely (by number of slots).
> 
> With nowait, pktgen won't wait for the skb to be released.  This
> introduces an error, but it's ok if count >> ringsize.

This pktgen_wait_for_skb() only happens it the exit case, when count
packets have been send.  I guess its okay to proceed to
pktgen_stop_device() which will call kfree_skb(pkt_dev->skb) with
refcnt=2, decrementing to refcnt=1, and then we depend on driver to
eventually call kfree_skb().
 
> I updated the documentation, but it needs far more work (it
> refers to pgset and an examples directory, none of which exist
> in the kernel tree).

Yes, the doc is not in such a good shape.

I'm not 100% happy with the name "nowait" parameter, as users could
easily misunderstand the purpose of this parameter.  But I've not come
up with a better name, e.g. "exit_nowait" is also not the best.


> diff --git a/net/core/pktgen.c b/net/core/pktgen.c
> index 8b849ddfef2e..adc41f2b3bc7 100644
> --- a/net/core/pktgen.c
> +++ b/net/core/pktgen.c
> @@ -290,6 +290,11 @@ struct pktgen_dev {
>  				 * set clone_skb to 1024.
>  				 */
>  
> +	bool no_wait;		/*
> +				 * Don't wait for packet to be freed
> +				 * by driver
> +				 */
> +

DaveM prefers multi line comments like:

 /* Don't wait for packet to be freed
  * by driver
  */


>  	char dst_min[IP_NAME_SZ];	/* IP, ie 1.2.3.4 */
>  	char dst_max[IP_NAME_SZ];	/* IP, ie 1.2.3.4 */
>  	char src_min[IP_NAME_SZ];	/* IP, ie 1.2.3.4 */
> @@ -679,6 +684,9 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
>  
>  	seq_puts(seq, "\n");
>  
> +	if (pkt_dev->no_wait)
> +		seq_puts(seq, "     nowait\n");
> +

Shouldn't you put this print statement above the "Flags:" section?

>  	/* not really stopped, more like last-running-at */
>  	stopped = pkt_dev->running ? ktime_get() : pkt_dev->stopped_at;
>  	idle = pkt_dev->idle_acc;
> @@ -1711,6 +1719,17 @@ static ssize_t pktgen_if_write(struct file *file,

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Sr. Network Kernel Developer at Red Hat
  Author of http://www.iptv-analyzer.org
  LinkedIn: http://www.linkedin.com/in/brouer

  reply	other threads:[~2014-09-03  9:10 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-03  4:20 [PATCH] pktgen: nowait parameter Rusty Russell
2014-09-03  9:09 ` Jesper Dangaard Brouer [this message]
2014-09-05  1:49   ` Rusty Russell
2014-09-05  2:52     ` Jason Wang
2014-09-05 21:26 ` David Miller
2014-09-10 23:37   ` Rusty Russell
2014-09-12 21:52     ` David Miller

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=20140903110956.0872841f@redhat.com \
    --to=brouer@redhat.com \
    --cc=minipli@googlemail.com \
    --cc=netdev@vger.kernel.org \
    --cc=robert@herjulf.net \
    --cc=rusty@rustcorp.com.au \
    /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.