netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver
@ 2018-09-12  6:58 Kai-Heng Feng
  2018-09-12  6:58 ` [PATCH 2/2] r8169: enable ASPM on RTL8106E Kai-Heng Feng
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Kai-Heng Feng @ 2018-09-12  6:58 UTC (permalink / raw)
  To: nic_swsd; +Cc: davem, hkallweit1, netdev, linux-kernel, Kai-Heng Feng

There's a small delay after setting ASPM in vendor drivers, r8101 and
r8168.
In addition, those drivers enable ASPM before ClkReq, also change that
to align with vendor driver.

I haven't seen anything bad becasue of this, but I think it's better to
keep in sync with vendor driver.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/net/ethernet/realtek/r8169.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index b08d51bf7a20..5091e9fd601f 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -4775,12 +4775,14 @@ static void rtl_pcie_state_l2l3_enable(struct rtl8169_private *tp, bool enable)
 static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
 {
 	if (enable) {
-		RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
 		RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en);
+		RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn);
 	} else {
 		RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn);
 		RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en);
 	}
+
+	udelay(10);
 }
 
 static void rtl_hw_start_8168bb(struct rtl8169_private *tp)
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] r8169: enable ASPM on RTL8106E
  2018-09-12  6:58 [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver Kai-Heng Feng
@ 2018-09-12  6:58 ` Kai-Heng Feng
  2018-09-18  1:46   ` David Miller
  2018-09-13 17:48 ` [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver David Miller
  2018-09-18  1:46 ` David Miller
  2 siblings, 1 reply; 5+ messages in thread
From: Kai-Heng Feng @ 2018-09-12  6:58 UTC (permalink / raw)
  To: nic_swsd; +Cc: davem, hkallweit1, netdev, linux-kernel, Kai-Heng Feng

The Intel SoC was prevented from entering lower idle state because
of RTL8106E's ASPM was not enabled.

So enable ASPM on RTL8106E (chip version 39).
Now the Intel SoC can enter lower idle state, power consumption and
temperature are much lower.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/net/ethernet/realtek/r8169.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index 5091e9fd601f..3752b1bbe6db 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -5627,6 +5627,8 @@ static void rtl_hw_start_8402(struct rtl8169_private *tp)
 
 static void rtl_hw_start_8106(struct rtl8169_private *tp)
 {
+	rtl_hw_aspm_clkreq_enable(tp, false);
+
 	/* Force LAN exit from ASPM if Rx/Tx are not idle */
 	RTL_W32(tp, FuncEvent, RTL_R32(tp, FuncEvent) | 0x002800);
 
@@ -5635,6 +5637,7 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp)
 	RTL_W8(tp, DLLPR, RTL_R8(tp, DLLPR) & ~PFM_EN);
 
 	rtl_pcie_state_l2l3_enable(tp, false);
+	rtl_hw_aspm_clkreq_enable(tp, true);
 }
 
 static void rtl_hw_start_8101(struct rtl8169_private *tp)
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver
  2018-09-12  6:58 [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver Kai-Heng Feng
  2018-09-12  6:58 ` [PATCH 2/2] r8169: enable ASPM on RTL8106E Kai-Heng Feng
@ 2018-09-13 17:48 ` David Miller
  2018-09-18  1:46 ` David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2018-09-13 17:48 UTC (permalink / raw)
  To: kai.heng.feng; +Cc: nic_swsd, hkallweit1, netdev, linux-kernel

From: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date: Wed, 12 Sep 2018 14:58:20 +0800

> There's a small delay after setting ASPM in vendor drivers, r8101 and
> r8168.
> In addition, those drivers enable ASPM before ClkReq, also change that
> to align with vendor driver.
> 
> I haven't seen anything bad becasue of this, but I think it's better to
> keep in sync with vendor driver.
> 
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

I want Heiner Kallweit to review these before I apply them.

Thanks.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver
  2018-09-12  6:58 [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver Kai-Heng Feng
  2018-09-12  6:58 ` [PATCH 2/2] r8169: enable ASPM on RTL8106E Kai-Heng Feng
  2018-09-13 17:48 ` [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver David Miller
@ 2018-09-18  1:46 ` David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2018-09-18  1:46 UTC (permalink / raw)
  To: kai.heng.feng; +Cc: nic_swsd, hkallweit1, netdev, linux-kernel

From: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date: Wed, 12 Sep 2018 14:58:20 +0800

> There's a small delay after setting ASPM in vendor drivers, r8101 and
> r8168.
> In addition, those drivers enable ASPM before ClkReq, also change that
> to align with vendor driver.
> 
> I haven't seen anything bad becasue of this, but I think it's better to
> keep in sync with vendor driver.
> 
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

Applied.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] r8169: enable ASPM on RTL8106E
  2018-09-12  6:58 ` [PATCH 2/2] r8169: enable ASPM on RTL8106E Kai-Heng Feng
@ 2018-09-18  1:46   ` David Miller
  0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2018-09-18  1:46 UTC (permalink / raw)
  To: kai.heng.feng; +Cc: nic_swsd, hkallweit1, netdev, linux-kernel

From: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date: Wed, 12 Sep 2018 14:58:21 +0800

> The Intel SoC was prevented from entering lower idle state because
> of RTL8106E's ASPM was not enabled.
> 
> So enable ASPM on RTL8106E (chip version 39).
> Now the Intel SoC can enter lower idle state, power consumption and
> temperature are much lower.
> 
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

Applied.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-09-18  1:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-12  6:58 [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver Kai-Heng Feng
2018-09-12  6:58 ` [PATCH 2/2] r8169: enable ASPM on RTL8106E Kai-Heng Feng
2018-09-18  1:46   ` David Miller
2018-09-13 17:48 ` [PATCH 1/2] r8169: Align ASPM/CLKREQ setting function with vendor driver David Miller
2018-09-18  1:46 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).