netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Golle <daniel@makrotopia.org>
To: netdev@vger.kernel.org, Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Sean Anderson <sean.anderson@linux.dev>,
	Maxime Chevallier <maxime.chevallier@bootlin.com>,
	Russell King <linux@armlinux.org.uk>,
	Vineeth Karumanchi <vineeth.karumanchi@amd.com>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	linux-kernel@vger.kernel.org,
	Kory Maincent <kory.maincent@bootlin.com>,
	Daniel Golle <daniel@makrotopia.org>,
	Simon Horman <horms@kernel.org>,
	Christian Marangi <ansuelsmth@gmail.com>,
	Lei Wei <quic_leiwei@quicinc.com>,
	Michal Simek <michal.simek@amd.com>,
	Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>,
	Robert Hancock <robert.hancock@calian.com>,
	John Crispin <john@phrozen.org>, Felix Fietkau <nbd@nbd.name>,
	Robert Marko <robimarko@gmail.com>
Subject: [RFC] comparing the propesed implementation for standalone PCS drivers
Date: Fri, 13 Jun 2025 14:55:46 +0200	[thread overview]
Message-ID: <aEwfME3dYisQtdCj@pidgin.makrotopia.org> (raw)

Hi netdev folks,

there are currently 2 competing implementations for the groundworks to
support standalone PCS drivers.

https://patchwork.kernel.org/project/netdevbpf/list/?series=970582&state=%2A&archive=both

https://patchwork.kernel.org/project/netdevbpf/list/?series=961784&state=%2A&archive=both

They both kinda stalled due to a lack of feedback in the past 2 months
since they have been published.

Merging the 2 implementation is not a viable option due to rather large
architecture differences:

				| Sean			| Ansuel
--------------------------------+-----------------------+-----------------------
Architecture			| Standalone subsystem	| Built into phylink
Need OPs wrapped		| Yes			| No
resource lifecycle		| New subsystem		| phylink
Supports hot remove		| Yes			| Yes
Supports hot add		| Yes (*)		| Yes
provides generic select_pcs	| No			| Yes
support for #pcs-cell-cells	| No			| Yes
allows migrating legacy drivers	| Yes			| Yes
comes with tested migrations	| Yes			| No

(*) requires MAC driver to also unload and subsequent re-probe for link
to work again

Obviously both architectures have pros and cons, here an incomplete and
certainly biased list (please help completing it and discussing all
details):

Standalone Subsystem (Sean)

pros
====
 * phylink code (mostly) untouched
 * doesn't burden systems which don't use dedicated PCS drivers
 * series provides tested migrations for all Ethernet drivers currently
   using dedicated PCS drivers

cons
====
 * needs wrapper for each PCS OP
 * more complex resource management (malloc/free) 
 * hot add and PCS showing up late (eg. due to deferred probe) are
   problematic
 * phylink is anyway the only user of that new subsystem


phylink-managed standalone PCS drivers (Ansuel)

pros
====
 * trivial resource management
 * no wrappers needed
 * full support for hot-add and deferred probe
 * avoids code duplication by providing generic select_pcs
   implementation
 * supports devices which provide more than one PCS port per device
   ('#pcs-cell-cells')

cons
====
 * inclusion in phylink means more (dead) code on platforms not using
   dedicated PCS
 * series does not provide migrations for existing drivers
   (but that can be done after)
 * probably a bit harder to review as one needs to know phylink very well


It would be great if more people can take a look and help deciding the
general direction to go. There are many drivers awaiting merge which
require such infrastructure (most are fine with either of the two), some
for more than a year by now.


Thank you!


Daniel

             reply	other threads:[~2025-06-13 12:56 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-13 12:55 Daniel Golle [this message]
2025-06-13 16:06 ` [RFC] comparing the propesed implementation for standalone PCS drivers Sean Anderson
2025-07-09 13:52   ` Simon Horman
2025-07-10 22:50     ` Sean Anderson
2025-07-10 23:58       ` Sean Anderson
2025-07-10 23:44     ` Christian Marangi (Ansuel)

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=aEwfME3dYisQtdCj@pidgin.makrotopia.org \
    --to=daniel@makrotopia.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=ansuelsmth@gmail.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=horms@kernel.org \
    --cc=john@phrozen.org \
    --cc=kory.maincent@bootlin.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=maxime.chevallier@bootlin.com \
    --cc=michal.simek@amd.com \
    --cc=nbd@nbd.name \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=quic_leiwei@quicinc.com \
    --cc=radhey.shyam.pandey@amd.com \
    --cc=robert.hancock@calian.com \
    --cc=robimarko@gmail.com \
    --cc=sean.anderson@linux.dev \
    --cc=vineeth.karumanchi@amd.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;
as well as URLs for NNTP newsgroup(s).