On 15.04.2021 20:59, Heiner Kallweit wrote:
> Currently, if the user changes the pause settings, the default settings
> will be restored after an interface down/up cycle, and also when
> resuming from suspend. This doesn't seem to provide the best user
> experience. Change this to keep user settings, and just ensure that in
> jumbo mode pause is disabled. 
> Small drawback: When switching back mtu from jumbo to non-jumbo then
> pause remains disabled (but user can enable it using ethtool).
> I think that's a not too common scenario and acceptable.
> 
> Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com>
> ---
>  drivers/net/ethernet/realtek/r8169_main.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c 
> b/drivers/net/ethernet/realtek/r8169_main.c
> index 7d02bab1c..2c89cde7d 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -2388,11 +2388,13 @@ static void rtl_jumbo_config(struct rtl8169_private 
> *tp)
>               pcie_set_readrq(tp->pci_dev, readrq);
>  
>       /* Chip doesn't support pause in jumbo mode */
> -     linkmode_mod_bit(ETHTOOL_LINK_MODE_Pause_BIT,
> -                      tp->phydev->advertising, !jumbo);
> -     linkmode_mod_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT,
> -                      tp->phydev->advertising, !jumbo);
> -     phy_start_aneg(tp->phydev);
> +     if (jumbo) {
> +             linkmode_clear_bit(ETHTOOL_LINK_MODE_Pause_BIT,
> +                                tp->phydev->advertising);
> +             linkmode_clear_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT,
> +                                tp->phydev->advertising);
> +             phy_start_aneg(tp->phydev);
> +     }
>  }
>  
>  DECLARE_RTL_COND(rtl_chipcmd_cond)
> @@ -5107,6 +5109,8 @@ static int r8169_mdio_register(struct rtl8169_private 
> *tp)
>  
>       tp->phydev->mac_managed_pm = 1;
>  
> +     phy_support_asym_pause(tp->phydev);
> +
>       /* PHY will be woken up in rtl_open() */
>       phy_suspend(tp->phydev);
>  
> 

Just see, this patch will apply only once net is merged into net-next.

Reply via email to