Skip to content

Commit

Permalink
r8169: align ASPM entry latency setting with vendor driver
Browse files Browse the repository at this point in the history
The r8168 vendor driver always uses value 0x27. In r8169 we have few
chips where 0x17 is used. So far this didn't matter because ASPM was
disabled anyway. Now that ASPM was re-enabled let's also use 0x27 only.

One of the chips affected by this change is RTL8168E-VL, on my system
with this chip value 0x27 works fine.

In addition rename rtl_csi_access_enable_2() to
rtl_set_def_aspm_entry_latency() to make clear that we set the default
ASPM entry latency.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Heiner Kallweit authored and David S. Miller committed Jun 23, 2018
1 parent a055b02 commit f37658d
Showing 1 changed file with 19 additions and 24 deletions.
43 changes: 19 additions & 24 deletions drivers/net/ethernet/realtek/r8169.c
Original file line number Diff line number Diff line change
Expand Up @@ -5235,12 +5235,7 @@ static void rtl_csi_access_enable(struct rtl8169_private *tp, u8 val)
rtl_csi_write(tp, 0x070c, csi | val << 24);
}

static void rtl_csi_access_enable_1(struct rtl8169_private *tp)
{
rtl_csi_access_enable(tp, 0x17);
}

static void rtl_csi_access_enable_2(struct rtl8169_private *tp)
static void rtl_set_def_aspm_entry_latency(struct rtl8169_private *tp)
{
rtl_csi_access_enable(tp, 0x27);
}
Expand Down Expand Up @@ -5347,7 +5342,7 @@ static void rtl_hw_start_8168cp_1(struct rtl8169_private *tp)
{ 0x07, 0, 0x2000 }
};

rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_ephy_init(tp, e_info_8168cp, ARRAY_SIZE(e_info_8168cp));

Expand All @@ -5356,7 +5351,7 @@ static void rtl_hw_start_8168cp_1(struct rtl8169_private *tp)

static void rtl_hw_start_8168cp_2(struct rtl8169_private *tp)
{
rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Beacon_en);

Expand All @@ -5369,7 +5364,7 @@ static void rtl_hw_start_8168cp_2(struct rtl8169_private *tp)

static void rtl_hw_start_8168cp_3(struct rtl8169_private *tp)
{
rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Beacon_en);

Expand All @@ -5393,7 +5388,7 @@ static void rtl_hw_start_8168c_1(struct rtl8169_private *tp)
{ 0x06, 0x0080, 0x0000 }
};

rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

RTL_W8(tp, DBG_REG, 0x06 | FIX_NAK_1 | FIX_NAK_2);

Expand All @@ -5409,7 +5404,7 @@ static void rtl_hw_start_8168c_2(struct rtl8169_private *tp)
{ 0x03, 0x0400, 0x0220 }
};

rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_ephy_init(tp, e_info_8168c_2, ARRAY_SIZE(e_info_8168c_2));

Expand All @@ -5423,14 +5418,14 @@ static void rtl_hw_start_8168c_3(struct rtl8169_private *tp)

static void rtl_hw_start_8168c_4(struct rtl8169_private *tp)
{
rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

__rtl_hw_start_8168cp(tp);
}

static void rtl_hw_start_8168d(struct rtl8169_private *tp)
{
rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_disable_clock_request(tp);

Expand All @@ -5445,7 +5440,7 @@ static void rtl_hw_start_8168d(struct rtl8169_private *tp)

static void rtl_hw_start_8168dp(struct rtl8169_private *tp)
{
rtl_csi_access_enable_1(tp);
rtl_set_def_aspm_entry_latency(tp);

if (tp->dev->mtu <= ETH_DATA_LEN)
rtl_tx_performance_tweak(tp, PCI_EXP_DEVCTL_READRQ_4096B);
Expand All @@ -5463,7 +5458,7 @@ static void rtl_hw_start_8168d_4(struct rtl8169_private *tp)
{ 0x0c, 0x0100, 0x0020 }
};

rtl_csi_access_enable_1(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_tx_performance_tweak(tp, PCI_EXP_DEVCTL_READRQ_4096B);

Expand Down Expand Up @@ -5492,7 +5487,7 @@ static void rtl_hw_start_8168e_1(struct rtl8169_private *tp)
{ 0x0a, 0x0000, 0x0040 }
};

rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_ephy_init(tp, e_info_8168e_1, ARRAY_SIZE(e_info_8168e_1));

Expand All @@ -5517,7 +5512,7 @@ static void rtl_hw_start_8168e_2(struct rtl8169_private *tp)
{ 0x19, 0x0000, 0x0224 }
};

rtl_csi_access_enable_1(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_ephy_init(tp, e_info_8168e_2, ARRAY_SIZE(e_info_8168e_2));

Expand Down Expand Up @@ -5550,7 +5545,7 @@ static void rtl_hw_start_8168e_2(struct rtl8169_private *tp)

static void rtl_hw_start_8168f(struct rtl8169_private *tp)
{
rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_tx_performance_tweak(tp, PCI_EXP_DEVCTL_READRQ_4096B);

Expand Down Expand Up @@ -5621,7 +5616,7 @@ static void rtl_hw_start_8168g(struct rtl8169_private *tp)
rtl_eri_write(tp, 0xd0, ERIAR_MASK_0001, 0x48, ERIAR_EXGMAC);
rtl_eri_write(tp, 0xe8, ERIAR_MASK_1111, 0x00100006, ERIAR_EXGMAC);

rtl_csi_access_enable_1(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_tx_performance_tweak(tp, PCI_EXP_DEVCTL_READRQ_4096B);

Expand Down Expand Up @@ -5720,7 +5715,7 @@ static void rtl_hw_start_8168h_1(struct rtl8169_private *tp)
rtl_eri_write(tp, 0xd0, ERIAR_MASK_0001, 0x48, ERIAR_EXGMAC);
rtl_eri_write(tp, 0xe8, ERIAR_MASK_1111, 0x00100006, ERIAR_EXGMAC);

rtl_csi_access_enable_1(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_tx_performance_tweak(tp, PCI_EXP_DEVCTL_READRQ_4096B);

Expand Down Expand Up @@ -5804,7 +5799,7 @@ static void rtl_hw_start_8168ep(struct rtl8169_private *tp)
rtl_eri_write(tp, 0xd0, ERIAR_MASK_0001, 0x5f, ERIAR_EXGMAC);
rtl_eri_write(tp, 0xe8, ERIAR_MASK_1111, 0x00100006, ERIAR_EXGMAC);

rtl_csi_access_enable_1(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_tx_performance_tweak(tp, PCI_EXP_DEVCTL_READRQ_4096B);

Expand Down Expand Up @@ -6040,7 +6035,7 @@ static void rtl_hw_start_8102e_1(struct rtl8169_private *tp)
};
u8 cfg1;

rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

RTL_W8(tp, DBG_REG, FIX_NAK_1);

Expand All @@ -6059,7 +6054,7 @@ static void rtl_hw_start_8102e_1(struct rtl8169_private *tp)

static void rtl_hw_start_8102e_2(struct rtl8169_private *tp)
{
rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

rtl_tx_performance_tweak(tp, PCI_EXP_DEVCTL_READRQ_4096B);

Expand Down Expand Up @@ -6114,7 +6109,7 @@ static void rtl_hw_start_8402(struct rtl8169_private *tp)
{ 0x1e, 0, 0x4000 }
};

rtl_csi_access_enable_2(tp);
rtl_set_def_aspm_entry_latency(tp);

/* Force LAN exit from ASPM if Rx/Tx are not idle */
RTL_W32(tp, FuncEvent, RTL_R32(tp, FuncEvent) | 0x002800);
Expand Down

0 comments on commit f37658d

Please sign in to comment.