netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Sean Anderson <sean.anderson@seco.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Marcin Wojtas <mw@semihalf.com>,
	UNGLinuxDriver@microchip.com,
	"David S . Miller" <davem@davemloft.net>,
	Claudiu Beznea <claudiu.beznea@microchip.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Horatiu Vultur <horatiu.vultur@microchip.com>,
	Jose Abreu <Jose.Abreu@synopsys.com>,
	Nicolas Ferre <nicolas.ferre@microchip.com>,
	Ioana Ciornei <ioana.ciornei@nxp.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH] net: phylink: Pass state to pcs_config
Date: Tue, 14 Dec 2021 23:45:10 +0000	[thread overview]
Message-ID: <YbkshnqgXP7Gd188@shell.armlinux.org.uk> (raw)
In-Reply-To: <20211214233450.1488736-1-sean.anderson@seco.com>

On Tue, Dec 14, 2021 at 06:34:50PM -0500, Sean Anderson wrote:
> Although most PCSs only need the interface and advertising to configure
> themselves, there is an oddly named "permit_pause_to_mac" parameter
> included as well, and only used by mvpp2. This parameter indicates
> whether pause settings should be autonegotiated or not. mvpp2 needs this
> because it cannot both set the pause mode manually and and advertise
> pause support. That is, if you want to set the pause mode, you have to
> advertise that you don't support flow control. We can't just
> autonegotiate the pause mode and then set it manually, because if
> the link goes down we will start advertising the wrong thing. So
> instead, we have to set it up front during pcs_config. However, we can't
> determine whether we are autonegotiating flow control based on our
> advertisement (since we advertise flow control even when it is set
> manually).
> 
> So we have had this strange additional argument tagging along which is
> used by one driver (though soon to be one more since mvneta has the same
> problem). We could stick MLO_PAUSE_AN in the "mode" parameter, since
> that contains other autonegotiation configuration. However, there are a
> lot of places in the codebase which do a direct comparison (e.g. mode ==
> MLO_AN_FIXED), so it would be difficult to add an extra bit without
> breaking things. But this whole time, mac_config has been getting the
> whole state, and it has not suffered unduly. So just pass state and
> eliminate these other parameters.

Please no. This is a major step backwards.

mac_config() suffers from the proiblem that people constantly
mis-understand what they can access in "state" and what they can't.
This patch introduces exactly the same problem but for a new API.

I really don't want to make that same mistake again, and this patch
is making that same mistake.

The reason mvpp2 and mvneta are different is because they have a
separate bit to allow the results of pause mode negotiation to be
forwarded to the MAC, and that bit needs to be turned off if the
pause autonegotiation is disabled (which is entirely different
from normal autonegotiation.)

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

  reply	other threads:[~2021-12-14 23:45 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-14 23:34 [PATCH] net: phylink: Pass state to pcs_config Sean Anderson
2021-12-14 23:45 ` Russell King (Oracle) [this message]
2021-12-15  0:16   ` Sean Anderson
2021-12-15  0:49     ` Russell King (Oracle)
2021-12-15  1:12       ` Russell King (Oracle)
2021-12-16 17:02         ` Sean Anderson
2021-12-16 17:26           ` Russell King (Oracle)
2021-12-16 17:51             ` Sean Anderson
2021-12-16 18:05               ` Russell King (Oracle)
2021-12-16 18:29                 ` Sean Anderson
2021-12-16 18:58                   ` Russell King (Oracle)
2021-12-16 19:00                   ` Sean Anderson

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=YbkshnqgXP7Gd188@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=Jose.Abreu@synopsys.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=claudiu.beznea@microchip.com \
    --cc=davem@davemloft.net \
    --cc=hkallweit1@gmail.com \
    --cc=horatiu.vultur@microchip.com \
    --cc=ioana.ciornei@nxp.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mw@semihalf.com \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=sean.anderson@seco.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).