From: Ido Schimmel <idosch@idosch.org>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Andrew Lunn <andrew@lunn.ch>,
netdev@vger.kernel.org, davem@davemloft.net, mkubecek@suse.cz,
pali@kernel.org, vadimp@nvidia.com, mlxsw@nvidia.com,
Ido Schimmel <idosch@nvidia.com>
Subject: Re: [RFC PATCH net-next 2/8] ethtool: Add ability to reset transceiver modules
Date: Tue, 10 Aug 2021 21:15:45 +0300 [thread overview]
Message-ID: <YRLCUc8NZnRZFUFs@shredder> (raw)
In-Reply-To: <20210810065423.076e3b0d@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
On Tue, Aug 10, 2021 at 06:54:23AM -0700, Jakub Kicinski wrote:
> On Tue, 10 Aug 2021 16:05:07 +0300 Ido Schimmel wrote:
> > > Again, i'm wondering, why is user space doing the reset? Can you think
> > > of any other piece of hardware where Linux relies on user space
> > > performing a reset before the kernel can properly use it?
> > >
> > > How long does a reset take? Table 10-1 says the reset pulse must be
> > > 10uS and table 10-2 says the reset should not take longer than
> > > 2000ms.
> >
> > Takes about 1.5ms to get an ACK on the reset request and another few
> > seconds to ensure module is in a valid operational state (will remove
> > RTNL in next version).
>
> Hm. RTNL-lock-less ethtool ops are a little concerning. The devlink
> locking was much complicated by the unclear locking rules. Can we keep
> ethtool simple and put this functionality in a different API or make
> the reset async?
I thought there are already RTNL-lock-less ethtool ops, but maybe I
imagined it. Given that we also want to support firmware update on
modules and that user space might want to update several modules
simultaneously, do you have a suggestion on how to handle it from
locking perspective? The ethtool netlink backend has parallel ops, but
RTNL is a problem. Firmware flashing is currently synchronous in both
ethtool and devlink, but the latter does not hold RTNL.
>
> > > So maybe reset it on ifup if it is in a bad state?
> >
> > We can have multiple ports (split) using the same module and in CMIS
> > each data path is controlled by a different state machine. Given the
> > complexity of these modules and possible faults, it is possible to
> > imagine a situation in which a few ports are fine and the rest are
> > unable to obtain a carrier.
> >
> > Resetting the module on ifup of swp1s0 is not intuitive and it shouldn't
> > affect other split ports (e.g., swp1s1). With the dedicated reset
> > command we have the ability to enforce all the required restrictions
> > from the start instead of changing the behavior of existing commands.
>
> Sounds similar to what ethtool --reset was trying to address (upper
> 16 bits). Could we reuse that? Whether its a SFP or other part of the
> port being reset may not be entirely important to the user, so perhaps
> it's not a bad idea to abstract that away and stick to "reset levels"?
Wasn't aware of this API. Looks like it is only implemented by a few
drivers, but man page says "phy Transceiver/PHY", so I think we can
reuse it.
What do you mean by "reset levels"? The split between shared /
dedicated?
Just to make sure I understand, you suggest the following semantics?
# ethtool --reset swp1s0 phy
Error since module is used by several ports (split)
# ethtool --reset swp1s0 phy-shared
OK
# ethtool --reset swp1 phy
OK (no split)
# ethtool --reset swp1 phy-shared
OK
next prev parent reply other threads:[~2021-08-10 18:18 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-09 10:21 [RFC PATCH net-next 0/8] ethtool: Add ability to control transceiver modules Ido Schimmel
2021-08-09 10:21 ` [RFC PATCH net-next 1/8] ethtool: Add ability to control transceiver modules' low power mode Ido Schimmel
2021-08-09 14:28 ` Andrew Lunn
2021-08-10 7:26 ` Ido Schimmel
2021-08-10 13:52 ` Andrew Lunn
2021-08-10 13:59 ` Jakub Kicinski
2021-08-10 20:46 ` Ido Schimmel
2021-08-10 22:00 ` Keller, Jacob E
2021-08-10 22:06 ` Jakub Kicinski
2021-08-10 22:18 ` Keller, Jacob E
2021-08-10 22:24 ` Keller, Jacob E
2021-08-10 22:31 ` Andrew Lunn
2021-08-11 0:38 ` Keller, Jacob E
2021-08-10 22:05 ` Jakub Kicinski
2021-08-10 22:51 ` Andrew Lunn
2021-08-11 11:33 ` Ido Schimmel
2021-08-11 13:03 ` Jakub Kicinski
2021-08-11 14:36 ` Andrew Lunn
2021-08-11 19:37 ` Ido Schimmel
2021-08-11 20:30 ` Jakub Kicinski
2021-08-11 20:57 ` Andrew Lunn
2021-08-11 21:04 ` Ido Schimmel
2021-08-11 20:42 ` Andrew Lunn
2021-08-10 21:38 ` Keller, Jacob E
2021-08-09 10:21 ` [RFC PATCH net-next 2/8] ethtool: Add ability to reset transceiver modules Ido Schimmel
2021-08-09 19:13 ` Andrew Lunn
2021-08-10 13:05 ` Ido Schimmel
2021-08-10 13:54 ` Jakub Kicinski
2021-08-10 18:15 ` Ido Schimmel [this message]
2021-08-10 18:58 ` Andrew Lunn
2021-08-10 19:00 ` Jakub Kicinski
2021-08-10 19:28 ` Andrew Lunn
2021-08-10 20:50 ` Ido Schimmel
2021-08-09 10:21 ` [RFC PATCH net-next 3/8] mlxsw: reg: Add fields to PMAOS register Ido Schimmel
2021-08-09 10:21 ` [RFC PATCH net-next 4/8] mlxsw: Make PMAOS pack function more generic Ido Schimmel
2021-08-09 10:21 ` [RFC PATCH net-next 5/8] mlxsw: reg: Add Port Module Memory Map Properties register Ido Schimmel
2021-08-09 10:21 ` [RFC PATCH net-next 6/8] mlxsw: reg: Add Management Cable IO and Notifications register Ido Schimmel
2021-08-09 10:21 ` [RFC PATCH net-next 7/8] mlxsw: Add ability to control transceiver modules' low power mode Ido Schimmel
2021-08-09 10:21 ` [RFC PATCH net-next 8/8] mlxsw: Add ability to reset transceiver modules Ido Schimmel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YRLCUc8NZnRZFUFs@shredder \
--to=idosch@idosch.org \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=idosch@nvidia.com \
--cc=kuba@kernel.org \
--cc=mkubecek@suse.cz \
--cc=mlxsw@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=pali@kernel.org \
--cc=vadimp@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox