On 8/19/2024 8:04 PM, Mengyuan Lou wrote: > The MAC only has add the TX delay and it can not be modified. > MAC and PHY are both set the TX delay cause transmission problems. > So just disable TX delay in PHY, when use rgmii to attach to > external phy, set PHY_INTERFACE_MODE_RGMII_RXID to phy drivers. > And it is does not matter to internal phy. > > Fixes: bc2426d74aa3 ("net: ngbe: convert phylib to phylink") > Signed-off-by: Mengyuan Lou <mengyuanlou@xxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx # 6.3+ > --- > v3: > -Rebase the fix commit for net. > v2: > -Add a comment for the code modification. > -Add the problem in commit messages. > https://lore.kernel.org/netdev/E9C427FDDCF0CBC3+20240812103025.42417-1-mengyuanlou@xxxxxxxxxxxxx/ > v1: > https://lore.kernel.org/netdev/C1587837D62D1BC0+20240806082520.29193-1-mengyuanlou@xxxxxxxxxxxxx/ > > drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c b/drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c > index ec54b18c5fe7..a5e9b779c44d 100644 > --- a/drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c > +++ b/drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c > @@ -124,8 +124,12 @@ static int ngbe_phylink_init(struct wx *wx) > MAC_SYM_PAUSE | MAC_ASYM_PAUSE; > config->mac_managed_pm = true; > > - phy_mode = PHY_INTERFACE_MODE_RGMII_ID; > - __set_bit(PHY_INTERFACE_MODE_RGMII_ID, config->supported_interfaces); > + /* The MAC only has add the Tx delay and it can not be modified. > + * So just disable TX delay in PHY, and it is does not matter to > + * internal phy. > + */ The language of the comment seems a bit weird to me. It makes more sense if it read "as it does not matter to the internal PHY". That being said, its a bit of a nit. With our without changing the comment: Reviewed-by: Jacob Keller <jacob.e.keller@xxxxxxxxx> > + phy_mode = PHY_INTERFACE_MODE_RGMII_RXID; > + __set_bit(PHY_INTERFACE_MODE_RGMII_RXID, config->supported_interfaces); > > phylink = phylink_create(config, NULL, phy_mode, &ngbe_mac_ops); > if (IS_ERR(phylink))