lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 10 Jun 2010 19:21:25 +0200
From:	Robert Olsson <robert@...julf.net>
To:	Daniel Turull <daniel.turull@...il.com>
Cc:	David Miller <davem@...emloft.net>, netdev@...r.kernel.org,
	robert@...julf.net, jens.laas@....uu.se
Subject: Re: [PATCH 1/2] pktgen: increasing transmission granularity



Thanks,

So with this improved rate control we could do RFC2544-like testing as well.

Cheers
					--ro


Signed-off-by: Robert Olsson <robert.olsson@....uu.se>


Daniel Turull writes:
 > This patch increases the granularity of the rate generated by pktgen.
 > The previous version of pktgen uses micro seconds (udelay) resolution when it 
 > was delayed causing gaps in the rates. It is changed to nanosecond (ndelay).
 > Now any rate is possible.
 > 
 > Also it allows to set, the desired rate in Mb/s or packets per second.

 > 
 > The documentation has been updated.
 > 
 > Signed-off-by: Daniel Turull <daniel.turull@...il.com>
 > 
 > ---
 > 
 > diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt
 > index 61bb645..75e4fd7 100644
 > --- a/Documentation/networking/pktgen.txt
 > +++ b/Documentation/networking/pktgen.txt
 > @@ -151,6 +151,8 @@ Examples:
 >  
 >   pgset stop    	          aborts injection. Also, ^C aborts generator.
 >  
 > + pgset "rate 300M"        set rate to 300 Mb/s
 > + pgset "ratep 1000000"    set rate to 1Mpps
 >  
 >  Example scripts
 >  ===============
 > @@ -241,6 +243,9 @@ src6
 >  flows
 >  flowlen
 >  
 > +rate
 > +ratep
 > +
 >  References:
 >  ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/
 >  ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/examples/
 > diff --git a/net/core/pktgen.c b/net/core/pktgen.c
 > index 1dacd7b..6428653 100644
 > --- a/net/core/pktgen.c
 > +++ b/net/core/pktgen.c
 > @@ -169,7 +169,7 @@
 >  #include <asm/dma.h>
 >  #include <asm/div64.h>		/* do_div */
 >  
 > -#define VERSION 	"2.73"
 > +#define VERSION	"2.74"
 >  #define IP_NAME_SZ 32
 >  #define MAX_MPLS_LABELS 16 /* This is the max label stack depth */
 >  #define MPLS_STACK_BOTTOM htonl(0x00000100)
 > @@ -980,6 +980,40 @@ static ssize_t pktgen_if_write(struct file *file,
 >  			(unsigned long long) pkt_dev->delay);
 >  		return count;
 >  	}
 > +	if (!strcmp(name, "rate")) {
 > +		len = num_arg(&user_buffer[i], 10, &value);
 > +		if (len < 0)
 > +			return len;
 > +
 > +		i += len;
 > +		if (!value)
 > +			return len;
 > +		pkt_dev->delay = pkt_dev->min_pkt_size*8*NSEC_PER_USEC/value;
 > +		if (debug)
 > +			printk(KERN_INFO
 > +				 "pktgen: Delay set at: %llu ns\n",
 > +					pkt_dev->delay);
 > +
 > +		sprintf(pg_result, "OK: rate=%lu", value);
 > +		return count;
 > +	}
 > +	if (!strcmp(name, "ratep")) {
 > +		len = num_arg(&user_buffer[i], 10, &value);
 > +		if (len < 0)
 > +			return len;
 > +
 > +		i += len;
 > +		if (!value)
 > +			return len;
 > +		pkt_dev->delay = NSEC_PER_SEC/value;
 > +		if (debug)
 > +			printk(KERN_INFO
 > +				 "pktgen: Delay set at: %llu ns\n",
 > +					pkt_dev->delay);
 > +
 > +		sprintf(pg_result, "OK: rate=%lu", value);
 > +		return count;
 > +	}
 >  	if (!strcmp(name, "udp_src_min")) {
 >  		len = num_arg(&user_buffer[i], 10, &value);
 >  		if (len < 0)
 > @@ -2142,15 +2176,15 @@ static void spin(struct pktgen_dev *pkt_dev, ktime_t spin_until)
 >  	hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
 >  	hrtimer_set_expires(&t.timer, spin_until);
 >  
 > -	remaining = ktime_to_us(hrtimer_expires_remaining(&t.timer));
 > +	remaining = ktime_to_ns(hrtimer_expires_remaining(&t.timer));
 >  	if (remaining <= 0) {
 >  		pkt_dev->next_tx = ktime_add_ns(spin_until, pkt_dev->delay);
 >  		return;
 >  	}
 >  
 >  	start_time = ktime_now();
 > -	if (remaining < 100)
 > -		udelay(remaining); 	/* really small just spin */
 > +	if (remaining < 100000)
 > +		ndelay(remaining);	/* really small just spin */
 >  	else {
 >  		/* see do_nanosleep */
 >  		hrtimer_init_sleeper(&t, current);
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ