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: <7d591d9f-463b-cedd-5590-c4ff8260ffa0@hpe.com>
Date:	Wed, 3 Aug 2016 09:04:44 -0700
From:	Rick Jones <rick.jones2@....com>
To:	skallam <siva.kallam@...adcom.com>, davem@...emloft.net
Cc:	netdev@...r.kernel.org, michael.chan@...adcom.com,
	prashant@...adcom.com, satish.baddipadige@...adcom.com
Subject: Re: [PATCH net 1/2] tg3: Fix for diasllow rx coalescing time to be 0

On 08/02/2016 09:13 PM, skallam wrote:
> From: Satish Baddipadige <satish.baddipadige@...adcom.com>
>
> When the rx coalescing time is 0, interrupts
> are not generated from the controller and rx path hangs.
> To avoid this rx hang, updating the driver to not allow
> rx coalescing time to be 0.
>
> Signed-off-by: Satish Baddipadige <satish.baddipadige@...adcom.com>
> Signed-off-by: Siva Reddy Kallam <siva.kallam@...adcom.com>
> Signed-off-by: Michael Chan <michael.chan@...adcom.com>
> ---
>  drivers/net/ethernet/broadcom/tg3.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
> index ff300f7..f3c6c91 100644
> --- a/drivers/net/ethernet/broadcom/tg3.c
> +++ b/drivers/net/ethernet/broadcom/tg3.c
> @@ -14014,6 +14014,7 @@ static int tg3_set_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
>  	}
>
>  	if ((ec->rx_coalesce_usecs > MAX_RXCOL_TICKS) ||
> +	    (!ec->rx_coalesce_usecs) ||
>  	    (ec->tx_coalesce_usecs > MAX_TXCOL_TICKS) ||
>  	    (ec->rx_max_coalesced_frames > MAX_RXMAX_FRAMES) ||
>  	    (ec->tx_max_coalesced_frames > MAX_TXMAX_FRAMES) ||
>

Should anything then happen with:

         /* No rx interrupts will be generated if both are zero */
         if ((ec->rx_coalesce_usecs == 0) &&
             (ec->rx_max_coalesced_frames == 0))
                 return -EINVAL;


which is the next block of code?  The logic there seems to suggest that 
it was intended to be able to have an rx_coalesce_usecs of 0 and rely on 
packet arrival to trigger an interrupt.  Presumably setting 
rx_max_coalesced_frames to 1 to disable interrupt coalescing.

happy benchmarking,

rick jones

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ