On Wed, 12 Aug 2020 17:22:32 +0100 Russell King - ARM Linux admin <li...@armlinux.org.uk> wrote:
> On Wed, Aug 12, 2020 at 06:13:33PM +0200, Marek Behún wrote: > > The MACTYPE is not being lost. But changing it requires Port > > Software Reset, which resets the link, so it cannot be done for > > example in read_status. > > Wouldn't the right place to configure it be in the config_init() > method - which is called once we have a MAC attaching to the PHY? > As I mentioned, if we had a way to pass the MAC interface supported > mask into phylib, config_init() could then use that to determine what > to do. > It is done from config_init. mv3310_power_up is called from mv3310_config_init. > > I think the MACTYPE should be set sometime during PHY > > initialisation, and only once: either to XFI with rate matching, if > > the underlying MAC does not support lower modes, or to > > 10gbase-r/2500base-x/sgmii mode, if the underlying MAC supports > > only slower modes than 10G. > > Yes - only changing the MAC type if we have good reason to do so to > support other rates. > > There is a related problem however. Note that if you have an 88x3310 > (non-P) in the SFP, then when rate matching is enabled, the PHY will > _not_ generate pause frames, and the PHY expects the MAC to be > configured to pace itself to the slower speed. I don't believe we > have support in MACs for that, but phylib and therefore phylink > provides the information: > > interface - 10GBASE-R > speed - media speed > pause - media pause modes > > So, if speed != SPEED_10000 and there are no pause modes, we should, > for the sake of the entire link, pace the MAC to the media speed by > controlling its egress rate. >