* [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.