From mboxrd@z Thu Jan 1 00:00:00 1970 From: Baruch Siach Subject: Re: [PATCH net] net: mvpp2: 10G modes aren't supported on all ports Date: Tue, 11 Dec 2018 19:53:42 +0200 Message-ID: <877egg6jbt.fsf@tkos.co.il> References: <20181211163228.26130-1-antoine.tenart@bootlin.com> <20181211163635.GG30658@n2100.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain Cc: Antoine Tenart , davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, maxime.chevallier@bootlin.com, gregory.clement@bootlin.com, miquel.raynal@bootlin.com, nadavh@marvell.com, stefanc@marvell.com, ymarkman@marvell.com, mw@semihalf.com To: Russell King - ARM Linux Return-path: In-reply-to: <20181211163635.GG30658@n2100.armlinux.org.uk> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Hi Russell, Antoine, Russell King - ARM Linux writes: > On Tue, Dec 11, 2018 at 05:32:28PM +0100, Antoine Tenart wrote: >> The mvpp2_phylink_validate() function sets all modes that are >> supported by a given PPv2 port. A recent change made all ports to >> advertise they support 10G modes in certain cases. This is not true, >> as only the port #0 can do so. This patch fixes it. >> >> Fixes: 01b3fd5ac97c ("net: mvpp2: fix detection of 10G SFP modules") >> Cc: Baruch Siach >> Signed-off-by: Antoine Tenart >> --- >> drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 ++++++++------ >> 1 file changed, 8 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c >> index 125ea99418df..88aa488054a8 100644 >> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c >> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c >> @@ -4405,12 +4405,14 @@ static void mvpp2_phylink_validate(struct net_device *dev, >> case PHY_INTERFACE_MODE_10GKR: >> case PHY_INTERFACE_MODE_XAUI: > > Are these modes supported on anything except port 0? If not, you > should be rejecting these, rather than just treating them as RGMII. That is, something like this, right? diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index 125ea99418df..04cb0241ca2b 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -4404,13 +4404,18 @@ static void mvpp2_phylink_validate(struct net_device *dev, switch (state->interface) { case PHY_INTERFACE_MODE_10GKR: case PHY_INTERFACE_MODE_XAUI: + if (port->gop_id != 0) + goto empty_set; + /* Fall-through */ case PHY_INTERFACE_MODE_NA: - phylink_set(mask, 10000baseCR_Full); - phylink_set(mask, 10000baseSR_Full); - phylink_set(mask, 10000baseLR_Full); - phylink_set(mask, 10000baseLRM_Full); - phylink_set(mask, 10000baseER_Full); - phylink_set(mask, 10000baseKR_Full); + if (port->gop_id == 0) { + phylink_set(mask, 10000baseCR_Full); + phylink_set(mask, 10000baseSR_Full); + phylink_set(mask, 10000baseLR_Full); + phylink_set(mask, 10000baseLRM_Full); + phylink_set(mask, 10000baseER_Full); + phylink_set(mask, 10000baseKR_Full); + } /* Fall-through */ case PHY_INTERFACE_MODE_RGMII: case PHY_INTERFACE_MODE_RGMII_ID: baruch -- http://baruch.siach.name/blog/ ~. .~ Tk Open Systems =}------------------------------------------------ooO--U--Ooo------------{= - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -