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: <9b773679-7995-7260-a54f-74f12e09d3d6@rasmusvillemoes.dk>
Date:   Tue, 6 Dec 2022 09:23:27 +0100
From:   Rasmus Villemoes <linux@...musvillemoes.dk>
To:     Alexander Stein <alexander.stein@...tq-group.com>
Cc:     Joakim Zhang <qiangqing.zhang@....com>,
        "David S. Miller" <davem@...emloft.net>,
        Eric Dumazet <edumazet@...gle.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Paolo Abeni <pabeni@...hat.com>, Andrew Lunn <andrew@...n.ch>,
        Greg Ungerer <gregungerer@...tnet.com.au>,
        netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] net: fec: properly guard irq coalesce setup

On 06/12/2022 07.16, Alexander Stein wrote:
> Am Montag, 5. Dezember 2022, 21:46:04 CET schrieb Rasmus Villemoes:
>> Prior to the Fixes: commit, the initialization code went through the
>> same fec_enet_set_coalesce() function as used by ethtool, and that
>> function correctly checks whether the current variant has support for
>> irq coalescing.
>>
>> Now that the initialization code instead calls fec_enet_itr_coal_set()
>> directly, that call needs to be guarded by a check for the
>> FEC_QUIRK_HAS_COALESCE bit.
>>
>> Fixes: df727d4547de (net: fec: don't reset irq coalesce settings to defaults
>> on "ip link up") Reported-by: Greg Ungerer <gregungerer@...tnet.com.au>
>> Signed-off-by: Rasmus Villemoes <linux@...musvillemoes.dk>
>> ---
>>  drivers/net/ethernet/freescale/fec_main.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/ethernet/freescale/fec_main.c
>> b/drivers/net/ethernet/freescale/fec_main.c index
>> 2ca2b61b451f..23e1a94b9ce4 100644
>> --- a/drivers/net/ethernet/freescale/fec_main.c
>> +++ b/drivers/net/ethernet/freescale/fec_main.c
>> @@ -1220,7 +1220,8 @@ fec_restart(struct net_device *ndev)
>>  		writel(0, fep->hwp + FEC_IMASK);
>>
>>  	/* Init the interrupt coalescing */
>> -	fec_enet_itr_coal_set(ndev);
>> +	if (fep->quirks & FEC_QUIRK_HAS_COALESCE)
>> +		fec_enet_itr_coal_set(ndev);
>>  }
>>
>>  static int fec_enet_ipc_handle_init(struct fec_enet_private *fep)
> 
> I'm wondering if this check should be added to fec_enet_itr_coal_set() 
> instead. Right now any additional caller has to do it's own check for 
> FEC_QUIRK_HAS_COALESCE, so why not do check in fec_enet_itr_coal_set?

Yeah, I did consider that (see
https://lore.kernel.org/netdev/72eb4e63-10a8-702b-1113-7588fcade9fc@rasmusvillemoes.dk/).
But in the end I decided against it, for various small reasons.
Primarily my thinking was that while this caller is obviously ok with
fec_enet_itr_coal_set() just silently being a no-op, it's not clear that
some future caller wouldn't have to check the bit themselves and return
-EOPNOTSUPP or some other error just like the ethtool method does. Of
course we could also make fec_enet_itr_coal_set() not return void, but
then it's a whole different refactoring and definitely not for post-rc8.

But also, the above was what I had sent out as a "something like this?"
and tested on my own hardware before heading home, and due to the
imminent release, I wanted to send out the patch ASAP.

Rasmus

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ