From: Ansuel Smith <ansuelsmth@gmail.com>
To: Vladimir Oltean <olteanv@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
Vivien Didelot <vivien.didelot@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [net-next RFC PATCH v2 0/8] Add support for qca8k mdio rw in Ethernet packet
Date: Wed, 8 Dec 2021 15:33:27 +0100 [thread overview]
Message-ID: <61b0c239.1c69fb81.9dfd0.5dc2@mx.google.com> (raw)
In-Reply-To: <20211208123222.pcljtugpq5clikhq@skbuf>
On Wed, Dec 08, 2021 at 02:32:22PM +0200, Vladimir Oltean wrote:
> On Wed, Dec 08, 2021 at 04:40:32AM +0100, Ansuel Smith wrote:
> > I still have to find a solution to a slowdown problem and this is where
> > I would love to get some hint.
> > Currently I still didn't find a good way to understand when the tagger
> > starts to accept packets and because of this the initial setup is slow
> > as every completion timeouts. Am I missing something or is there a way
> > to check for this?
> > After the initial slowdown, as soon as the cpu port is ready and starts
> > to accept packet, every transaction is near instant and no completion
> > timeouts.
>
> My guess is that the problem with the initial slowdown is that you try
> to use the Ethernet based register access before things are set up:
> before the master is up and ready, before the switch is minimally set
> up, etc.
>
> I think what this Ethernet-based register access technique needs to be
> more reliable is a notification about the DSA master going up or down.
> Otherwise it won't be very efficient at all, to wait for every single
> Ethernet access attempt to time out before attempting a direct MDIO
> access.
>
Yes that is the main problem. My idea would be a notification fired as
soon as the tagger starts to send/process packet. That way we should be
certain that Ethernet mdio is ready. (then use a bool to comunicate
that the tagger is ready? And a dsa driver would use that or a helper to
understand what is the correct I/O path to use? I would love to remove
all these extra check and make something more direct but I think it
would spam the dsa ops even more)
The timeout has to stay anyway to prevent any type of breakage by the
Ethernet mdio not working.
> But there are some problems with offering a "master_going_up/master_going_down"
> set of callbacks. Specifically, we could easily hook into the NETDEV_PRE_UP/
> NETDEV_GOING_DOWN netdev notifiers and transform these into DSA switch
> API calls. The goal would be for the qca8k tagger to mark the
> Ethernet-based register access method as available/unavailable, and in
> the regmap implementation, to use that or the other. DSA would then also
> be responsible for calling "master_going_up" when the switch ports and
> master are sufficiently initialized that traffic should be possible.
> But that first "master_going_up" notification is in fact the most
> problematic one, because we may not receive a NETDEV_PRE_UP event,
> because the DSA master may already be up when we probe our switch tree.
> This would be a bit finicky to get right. We may, for instance, hold
> rtnl_lock for the entirety of dsa_tree_setup_master(). This will block
> potentially concurrent netdevice notifiers handled by dsa_slave_nb.
> And while holding rtnl_lock() and immediately after each dsa_master_setup(),
> we may check whether master->flags & IFF_UP is true, and if it is,
> synthesize a call to ds->ops->master_going_up(). We also need to do the
> reverse in dsa_tree_teardown_master().
Should we care about holding the lock for that much time? Will do some
test hoping the IFF_UP is sufficient to make the Ethernet mdio work.
--
Ansuel
next prev parent reply other threads:[~2021-12-08 14:33 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-08 3:40 [net-next RFC PATCH v2 0/8] Add support for qca8k mdio rw in Ethernet packet Ansuel Smith
2021-12-08 3:40 ` [net-next RFC PATCH v2 1/8] net: das: Introduce support for tagger private data control Ansuel Smith
2021-12-08 3:40 ` [net-next RFC PATCH v2 2/8] net: dsa: Permit dsa driver to configure additional tagger data Ansuel Smith
2021-12-08 3:40 ` [net-next RFC PATCH v2 3/8] net: dsa: tag_qca: convert to FIELD macro Ansuel Smith
2021-12-08 3:40 ` [net-next RFC PATCH v2 4/8] net: dsa: tag_qca: move define to include linux/dsa Ansuel Smith
2021-12-08 3:40 ` [net-next RFC PATCH v2 5/8] net: dsa: tag_qca: add define for mdio read/write in ethernet packet Ansuel Smith
2021-12-08 3:40 ` [net-next RFC PATCH v2 6/8] net: dsa: tag_qca: Add support for handling Ethernet mdio and MIB packet Ansuel Smith
2021-12-08 3:40 ` [net-next RFC PATCH v2 7/8] net: dsa: qca8k: Add support for mdio read/write in Ethernet packet Ansuel Smith
2021-12-08 12:18 ` Vladimir Oltean
2021-12-08 14:21 ` Ansuel Smith
2021-12-08 14:42 ` Vladimir Oltean
2021-12-09 20:02 ` kernel test robot
2021-12-08 3:40 ` [net-next RFC PATCH v2 8/8] net: dsa: qca8k: cache lo and hi for mdio write Ansuel Smith
2021-12-08 12:32 ` [net-next RFC PATCH v2 0/8] Add support for qca8k mdio rw in Ethernet packet Vladimir Oltean
2021-12-08 14:33 ` Ansuel Smith [this message]
2021-12-08 14:53 ` Vladimir Oltean
2021-12-08 14:58 ` Ansuel Smith
2021-12-09 2:59 ` Ansuel Smith
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=61b0c239.1c69fb81.9dfd0.5dc2@mx.google.com \
--to=ansuelsmth@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=vivien.didelot@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.