> @@ -2078,6 +2089,11 @@ EXPORT_SYMBOL(phy_set_sym_pause); > void phy_set_asym_pause(struct phy_device *phydev, bool rx, bool tx) > { > __ETHTOOL_DECLARE_LINK_MODE_MASK(oldadv); > + bool asym_pause_supported; > + > + asym_pause_supported = > + linkmode_test_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, > + phydev->supported); > > linkmode_copy(oldadv, phydev->advertising); > > @@ -2086,14 +2102,14 @@ void phy_set_asym_pause(struct phy_device *phydev, > bool rx, bool tx) > linkmode_clear_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, > phydev->advertising); > > - if (rx) { > + if (rx && asym_pause_supported) { > linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, > phydev->advertising); > linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, > phydev->advertising); > } > > - if (tx) > + if (tx && asym_pause_supported) > linkmode_change_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, > phydev->advertising);
Hi Heiner If the PHY only supports Pause, not Asym Pause, i wounder if we should fall back to Pause here? Andrew