[<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