Hi,
Stas Sergeev <[email protected]> writes:
> 17.06.2015 00:44, Arnaud Ebalard пишет:
>> Hi,
>>
>> On Mirabox, the second ethernet interface is no more usable on 4.1-rc*
>> series (no packets coming out of the interface, when using dhclient for
>> instance). It works as expected on 4.0.
>>
>> Bisecting the issue, I ended up on 898b2970e2c9 ("mvneta: implement
>> SGMII-based in-band link state signaling"). Reverting that commit gives
>> me back the second interface.
>>
>> Then, I also tested on a NETGEAR ReadyNAS 104, which is also powered by
>> the same SoC (Armada 370) and also has two (mvneta-supported) ethernet
>> interfaces. With an unmodified 4.1-rc8, only one of the two interfaces
>> is available. Reverting 898b2970e2c9 makes both usable again.
>>
>> FWIW, mirabox and RN104 ethernet interfaces use RGMII.
> Hi, hope someone who can reproduce the problem,
> can provide a better help.
> I looked into a patch, and it seems most things are done
> under "if (pp->use_inband_status)", which is not your case.
Looking at the patch, yes. Both platforms I have which encounter the
problem use RGMII and "if (pp->use_inband_status)" changes are for
SGMII.
> But it seems the patch can still change a couple of flags
> for you, and maybe that makes a problem?
AFAICT, autoneg config register (MVNETA_GMAC_AUTONEG_CONFIG) is
modified. And the logic when link status changes is also modified:
- MVNETA_GMAC_FORCE_LINK_DOWN flag cleared when there is carrier. It was
previously set when that event occured.
- The link down event logic is also modified.
>
> Please try the attached (absolutely untested) patch.
> diff --git a/drivers/net/ethernet/marvell/mvneta.c
> b/drivers/net/ethernet/marvell/mvneta.c
> index ce5f7f9..74176ec 100644
> --- a/drivers/net/ethernet/marvell/mvneta.c
> +++ b/drivers/net/ethernet/marvell/mvneta.c
> @@ -1013,6 +1013,12 @@ static void mvneta_defaults_set(struct mvneta_port *pp)
> val = mvreg_read(pp, MVNETA_GMAC_CLOCK_DIVIDER);
> val |= MVNETA_GMAC_1MS_CLOCK_ENABLE;
> mvreg_write(pp, MVNETA_GMAC_CLOCK_DIVIDER, val);
> + } else {
> + val = mvreg_read(pp, MVNETA_GMAC_AUTONEG_CONFIG);
> + val &= ~(MVNETA_GMAC_INBAND_AN_ENABLE |
> + MVNETA_GMAC_AN_SPEED_EN |
> + MVNETA_GMAC_AN_DUPLEX_EN);
> + mvreg_write(pp, MVNETA_GMAC_AUTONEG_CONFIG, val);
> }
>
> mvneta_set_ucast_table(pp, -1);
*Second interface is back w/ that patch applied*. Cannot tell if it is a
proper fix, though or a valid workaround.
Thanks for your feedback.
a+
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html