All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] r8169: further improvements
@ 2021-01-12  8:27 Heiner Kallweit
  2021-01-12  8:28 ` [PATCH net-next 1/3] r8169: align rtl_wol_suspend_quirk with vendor driver and rename it Heiner Kallweit
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Heiner Kallweit @ 2021-01-12  8:27 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

Series includes further smaller improvements.

Heiner Kallweit (3):
  r8169: align rtl_wol_suspend_quirk with vendor driver and rename it
  r8169: improve rtl8169_rx_csum
  r8169: improve DASH support

 drivers/net/ethernet/realtek/r8169_main.c | 81 +++++++++--------------
 1 file changed, 31 insertions(+), 50 deletions(-)

-- 
2.30.0


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

* [PATCH net-next 1/3] r8169: align rtl_wol_suspend_quirk with vendor driver and rename it
  2021-01-12  8:27 [PATCH net-next 0/3] r8169: further improvements Heiner Kallweit
@ 2021-01-12  8:28 ` Heiner Kallweit
  2021-01-12  8:29 ` [PATCH net-next 2/3] r8169: improve rtl8169_rx_csum Heiner Kallweit
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2021-01-12  8:28 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

At least from chip version 25 the vendor driver sets these rx flags
for all chip versions if WOL is enabled. Therefore I wouldn't consider
it a quirk, so let's rename the function.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 20 ++++----------------
 1 file changed, 4 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 33336098b..84f488d1c 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -2210,23 +2210,11 @@ static int rtl_set_mac_address(struct net_device *dev, void *p)
 	return 0;
 }
 
-static void rtl_wol_suspend_quirk(struct rtl8169_private *tp)
+static void rtl_wol_enable_rx(struct rtl8169_private *tp)
 {
-	switch (tp->mac_version) {
-	case RTL_GIGA_MAC_VER_25:
-	case RTL_GIGA_MAC_VER_26:
-	case RTL_GIGA_MAC_VER_29:
-	case RTL_GIGA_MAC_VER_30:
-	case RTL_GIGA_MAC_VER_32:
-	case RTL_GIGA_MAC_VER_33:
-	case RTL_GIGA_MAC_VER_34:
-	case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_63:
+	if (tp->mac_version >= RTL_GIGA_MAC_VER_25)
 		RTL_W32(tp, RxConfig, RTL_R32(tp, RxConfig) |
 			AcceptBroadcast | AcceptMulticast | AcceptMyPhys);
-		break;
-	default:
-		break;
-	}
 }
 
 static void rtl_prepare_power_down(struct rtl8169_private *tp)
@@ -2240,7 +2228,7 @@ static void rtl_prepare_power_down(struct rtl8169_private *tp)
 
 	if (device_may_wakeup(tp_to_dev(tp))) {
 		phy_speed_down(tp->phydev, false);
-		rtl_wol_suspend_quirk(tp);
+		rtl_wol_enable_rx(tp);
 	}
 }
 
@@ -4872,7 +4860,7 @@ static void rtl_shutdown(struct pci_dev *pdev)
 
 	if (system_state == SYSTEM_POWER_OFF) {
 		if (tp->saved_wolopts) {
-			rtl_wol_suspend_quirk(tp);
+			rtl_wol_enable_rx(tp);
 			rtl_wol_shutdown_quirk(tp);
 		}
 
-- 
2.30.0



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

* [PATCH net-next 2/3] r8169: improve rtl8169_rx_csum
  2021-01-12  8:27 [PATCH net-next 0/3] r8169: further improvements Heiner Kallweit
  2021-01-12  8:28 ` [PATCH net-next 1/3] r8169: align rtl_wol_suspend_quirk with vendor driver and rename it Heiner Kallweit
@ 2021-01-12  8:29 ` Heiner Kallweit
  2021-01-12  8:31 ` [PATCH net-next 3/3] r8169: improve DASH support Heiner Kallweit
  2021-01-12 20:21 ` [PATCH net-next 0/3] r8169: further improvements Saeed Mahameed
  3 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2021-01-12  8:29 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

Extend the mask to include the checksum failure bits. This allows to
simplify the condition in rtl8169_rx_csum().

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 84f488d1c..b4c080cc6 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -533,6 +533,9 @@ enum rtl_rx_desc_bit {
 	IPFail		= (1 << 16), /* IP checksum failed */
 	UDPFail		= (1 << 15), /* UDP/IP checksum failed */
 	TCPFail		= (1 << 14), /* TCP/IP checksum failed */
+
+#define RxCSFailMask	(IPFail | UDPFail | TCPFail)
+
 	RxVlanTag	= (1 << 16), /* VLAN tag available */
 };
 
@@ -4377,10 +4380,9 @@ static inline int rtl8169_fragmented_frame(u32 status)
 
 static inline void rtl8169_rx_csum(struct sk_buff *skb, u32 opts1)
 {
-	u32 status = opts1 & RxProtoMask;
+	u32 status = opts1 & (RxProtoMask | RxCSFailMask);
 
-	if (((status == RxProtoTCP) && !(opts1 & TCPFail)) ||
-	    ((status == RxProtoUDP) && !(opts1 & UDPFail)))
+	if (status == RxProtoTCP || status == RxProtoUDP)
 		skb->ip_summed = CHECKSUM_UNNECESSARY;
 	else
 		skb_checksum_none_assert(skb);
-- 
2.30.0



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

* [PATCH net-next 3/3] r8169: improve DASH support
  2021-01-12  8:27 [PATCH net-next 0/3] r8169: further improvements Heiner Kallweit
  2021-01-12  8:28 ` [PATCH net-next 1/3] r8169: align rtl_wol_suspend_quirk with vendor driver and rename it Heiner Kallweit
  2021-01-12  8:29 ` [PATCH net-next 2/3] r8169: improve rtl8169_rx_csum Heiner Kallweit
@ 2021-01-12  8:31 ` Heiner Kallweit
  2021-01-12 20:21 ` [PATCH net-next 0/3] r8169: further improvements Saeed Mahameed
  3 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2021-01-12  8:31 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

Instead of doing the full DASH check each time r8168_check_dash() is
called, let's do it once in probe and store DASH capabilities in a
new rtl8169_private member.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 53 ++++++++++-------------
 1 file changed, 22 insertions(+), 31 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index b4c080cc6..fb67d8f79 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -591,6 +591,12 @@ enum rtl_flag {
 	RTL_FLAG_MAX
 };
 
+enum rtl_dash_type {
+	RTL_DASH_NONE,
+	RTL_DASH_DP,
+	RTL_DASH_EP,
+};
+
 struct rtl8169_private {
 	void __iomem *mmio_addr;	/* memory map physical address */
 	struct pci_dev *pci_dev;
@@ -598,6 +604,7 @@ struct rtl8169_private {
 	struct phy_device *phydev;
 	struct napi_struct napi;
 	enum mac_version mac_version;
+	enum rtl_dash_type dash_type;
 	u32 cur_rx; /* Index into the Rx descriptor buffer of next Rx pkt. */
 	u32 cur_tx; /* Index into the Tx descriptor buffer of next Rx pkt. */
 	u32 dirty_tx;
@@ -1184,19 +1191,10 @@ static void rtl8168ep_driver_start(struct rtl8169_private *tp)
 
 static void rtl8168_driver_start(struct rtl8169_private *tp)
 {
-	switch (tp->mac_version) {
-	case RTL_GIGA_MAC_VER_27:
-	case RTL_GIGA_MAC_VER_28:
-	case RTL_GIGA_MAC_VER_31:
+	if (tp->dash_type == RTL_DASH_DP)
 		rtl8168dp_driver_start(tp);
-		break;
-	case RTL_GIGA_MAC_VER_49 ... RTL_GIGA_MAC_VER_52:
+	else
 		rtl8168ep_driver_start(tp);
-		break;
-	default:
-		BUG();
-		break;
-	}
 }
 
 static void rtl8168dp_driver_stop(struct rtl8169_private *tp)
@@ -1215,44 +1213,35 @@ static void rtl8168ep_driver_stop(struct rtl8169_private *tp)
 
 static void rtl8168_driver_stop(struct rtl8169_private *tp)
 {
-	switch (tp->mac_version) {
-	case RTL_GIGA_MAC_VER_27:
-	case RTL_GIGA_MAC_VER_28:
-	case RTL_GIGA_MAC_VER_31:
+	if (tp->dash_type == RTL_DASH_DP)
 		rtl8168dp_driver_stop(tp);
-		break;
-	case RTL_GIGA_MAC_VER_49 ... RTL_GIGA_MAC_VER_52:
+	else
 		rtl8168ep_driver_stop(tp);
-		break;
-	default:
-		BUG();
-		break;
-	}
 }
 
 static bool r8168dp_check_dash(struct rtl8169_private *tp)
 {
 	u16 reg = rtl8168_get_ocp_reg(tp);
 
-	return !!(r8168dp_ocp_read(tp, reg) & 0x00008000);
+	return r8168dp_ocp_read(tp, reg) & BIT(15);
 }
 
 static bool r8168ep_check_dash(struct rtl8169_private *tp)
 {
-	return r8168ep_ocp_read(tp, 0x128) & 0x00000001;
+	return r8168ep_ocp_read(tp, 0x128) & BIT(0);
 }
 
-static bool r8168_check_dash(struct rtl8169_private *tp)
+static enum rtl_dash_type rtl_check_dash(struct rtl8169_private *tp)
 {
 	switch (tp->mac_version) {
 	case RTL_GIGA_MAC_VER_27:
 	case RTL_GIGA_MAC_VER_28:
 	case RTL_GIGA_MAC_VER_31:
-		return r8168dp_check_dash(tp);
+		return r8168dp_check_dash(tp) ? RTL_DASH_DP : RTL_DASH_NONE;
 	case RTL_GIGA_MAC_VER_49 ... RTL_GIGA_MAC_VER_52:
-		return r8168ep_check_dash(tp);
+		return r8168ep_check_dash(tp) ? RTL_DASH_EP : RTL_DASH_NONE;
 	default:
-		return false;
+		return RTL_DASH_NONE;
 	}
 }
 
@@ -2222,7 +2211,7 @@ static void rtl_wol_enable_rx(struct rtl8169_private *tp)
 
 static void rtl_prepare_power_down(struct rtl8169_private *tp)
 {
-	if (r8168_check_dash(tp))
+	if (tp->dash_type != RTL_DASH_NONE)
 		return;
 
 	if (tp->mac_version == RTL_GIGA_MAC_VER_32 ||
@@ -4880,7 +4869,7 @@ static void rtl_remove_one(struct pci_dev *pdev)
 
 	unregister_netdev(tp->dev);
 
-	if (r8168_check_dash(tp))
+	if (tp->dash_type != RTL_DASH_NONE)
 		rtl8168_driver_stop(tp);
 
 	rtl_release_firmware(tp);
@@ -5240,6 +5229,8 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	tp->mac_version = chipset;
 
+	tp->dash_type = rtl_check_dash(tp);
+
 	tp->cp_cmd = RTL_R16(tp, CPlusCmd) & CPCMD_MASK;
 
 	if (sizeof(dma_addr_t) > 4 && tp->mac_version >= RTL_GIGA_MAC_VER_18 &&
@@ -5344,7 +5335,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 			    jumbo_max, tp->mac_version <= RTL_GIGA_MAC_VER_06 ?
 			    "ok" : "ko");
 
-	if (r8168_check_dash(tp)) {
+	if (tp->dash_type != RTL_DASH_NONE) {
 		netdev_info(dev, "DASH enabled\n");
 		rtl8168_driver_start(tp);
 	}
-- 
2.30.0



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

* Re: [PATCH net-next 0/3] r8169: further improvements
  2021-01-12  8:27 [PATCH net-next 0/3] r8169: further improvements Heiner Kallweit
                   ` (2 preceding siblings ...)
  2021-01-12  8:31 ` [PATCH net-next 3/3] r8169: improve DASH support Heiner Kallweit
@ 2021-01-12 20:21 ` Saeed Mahameed
  2021-01-13  2:58   ` Jakub Kicinski
  3 siblings, 1 reply; 6+ messages in thread
From: Saeed Mahameed @ 2021-01-12 20:21 UTC (permalink / raw)
  To: Heiner Kallweit, Jakub Kicinski, David Miller,
	Realtek linux nic maintainers
  Cc: netdev

On Tue, 2021-01-12 at 09:27 +0100, Heiner Kallweit wrote:
> Series includes further smaller improvements.
> 
> Heiner Kallweit (3):
>   r8169: align rtl_wol_suspend_quirk with vendor driver and rename it
>   r8169: improve rtl8169_rx_csum
>   r8169: improve DASH support
> 
>  drivers/net/ethernet/realtek/r8169_main.c | 81 +++++++++----------
> ----
>  1 file changed, 31 insertions(+), 50 deletions(-)
> 

Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>


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

* Re: [PATCH net-next 0/3] r8169: further improvements
  2021-01-12 20:21 ` [PATCH net-next 0/3] r8169: further improvements Saeed Mahameed
@ 2021-01-13  2:58   ` Jakub Kicinski
  0 siblings, 0 replies; 6+ messages in thread
From: Jakub Kicinski @ 2021-01-13  2:58 UTC (permalink / raw)
  To: Saeed Mahameed, Heiner Kallweit
  Cc: David Miller, Realtek linux nic maintainers, netdev

On Tue, 12 Jan 2021 12:21:48 -0800 Saeed Mahameed wrote:
> On Tue, 2021-01-12 at 09:27 +0100, Heiner Kallweit wrote:
> > Series includes further smaller improvements.
> > 
> > Heiner Kallweit (3):
> >   r8169: align rtl_wol_suspend_quirk with vendor driver and rename it
> >   r8169: improve rtl8169_rx_csum
> >   r8169: improve DASH support
> > 
> >  drivers/net/ethernet/realtek/r8169_main.c | 81 +++++++++----------
> > ----
> >  1 file changed, 31 insertions(+), 50 deletions(-)
> >   
> 
> Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>

Applied, thanks!

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

end of thread, other threads:[~2021-01-13  2:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-12  8:27 [PATCH net-next 0/3] r8169: further improvements Heiner Kallweit
2021-01-12  8:28 ` [PATCH net-next 1/3] r8169: align rtl_wol_suspend_quirk with vendor driver and rename it Heiner Kallweit
2021-01-12  8:29 ` [PATCH net-next 2/3] r8169: improve rtl8169_rx_csum Heiner Kallweit
2021-01-12  8:31 ` [PATCH net-next 3/3] r8169: improve DASH support Heiner Kallweit
2021-01-12 20:21 ` [PATCH net-next 0/3] r8169: further improvements Saeed Mahameed
2021-01-13  2:58   ` Jakub Kicinski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.