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]
Message-ID: <1394897014.15764.26.camel@deadeye.wl.decadent.org.uk>
Date:	Sat, 15 Mar 2014 15:23:34 +0000
From:	Ben Hutchings <ben@...adent.org.uk>
To:	"Eric W. Biederman" <ebiederm@...ssion.com>
Cc:	David Miller <davem@...emloft.net>, eric.dumazet@...il.com,
	netdev@...r.kernel.org, xiyou.wangcong@...il.com, mpm@...enic.com,
	satyam.sharma@...il.com
Subject: Re: [PATCH net-next 16/16] sfc: Don't receive packets when the napi
 budget == 0

On Fri, 2014-03-14 at 18:11 -0700, Eric W. Biederman wrote:
> Processing any incoming packets with a with a napi budget of 0
> is incorrect driver behavior.
> 
> This matters as netpoll will shortly call drivers with a budget of 0
> to avoid receive packet processing happening in hard irq context.

But this also prevents handling TX completions, at which point you may
as well change efx_netpoll() to a no-op.  And then, does it make sense
to implement ndo_poll_controller at all?

Note that sfc does have a module parameter to enable separate RX and TX
completions so they could be polled separately, but it is disabled by
default.

Ben.

> Signed-off-by: "Eric W. Biederman" <ebiederm@...ssion.com>
> ---
>  drivers/net/ethernet/sfc/ef10.c  |    3 +++
>  drivers/net/ethernet/sfc/farch.c |    3 +++
>  2 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
> index eb75675f6e32..651626e133f9 100644
> --- a/drivers/net/ethernet/sfc/ef10.c
> +++ b/drivers/net/ethernet/sfc/ef10.c
> @@ -1955,6 +1955,9 @@ static int efx_ef10_ev_process(struct efx_channel *channel, int quota)
>  	int tx_descs = 0;
>  	int spent = 0;
>  
> +	if (quota <= 0)
> +		return spent;
> +
>  	read_ptr = channel->eventq_read_ptr;
>  
>  	for (;;) {
> diff --git a/drivers/net/ethernet/sfc/farch.c b/drivers/net/ethernet/sfc/farch.c
> index aa1b169f45ec..a08761360cdf 100644
> --- a/drivers/net/ethernet/sfc/farch.c
> +++ b/drivers/net/ethernet/sfc/farch.c
> @@ -1248,6 +1248,9 @@ int efx_farch_ev_process(struct efx_channel *channel, int budget)
>  	int tx_packets = 0;
>  	int spent = 0;
>  
> +	if (budget <= 0)
> +		return spent;
> +
>  	read_ptr = channel->eventq_read_ptr;
>  
>  	for (;;) {

-- 
Ben Hutchings
When you say `I wrote a program that crashed Windows', people just stare ...
and say `Hey, I got those with the system, *for free*'. - Linus Torvalds

Download attachment "signature.asc" of type "application/pgp-signature" (812 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ