r8169: don't configure csum function per chip version
authorHeiner Kallweit <hkallweit1@gmail.com>
Fri, 10 Aug 2018 20:39:29 +0000 (22:39 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 10 Aug 2018 21:32:35 +0000 (14:32 -0700)
We don't have to configure the csum function per chip (sub-)version.
The distinction is simple, versions RTL8102e and from RTL8168c onwards
support csum_v2.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/realtek/r8169.c

index fc6ae446816d275eb36bff0195c05128f07e0a64..891dda674d7c4dc4ec446ca0c37fefffbd46bcc4 100644 (file)
@@ -141,134 +141,127 @@ enum mac_version {
        RTL_GIGA_MAC_NONE   = 0xff,
 };
 
-enum rtl_tx_desc_version {
-       RTL_TD_0        = 0,
-       RTL_TD_1        = 1,
-};
-
 #define JUMBO_1K       ETH_DATA_LEN
 #define JUMBO_4K       (4*1024 - ETH_HLEN - 2)
 #define JUMBO_6K       (6*1024 - ETH_HLEN - 2)
 #define JUMBO_7K       (7*1024 - ETH_HLEN - 2)
 #define JUMBO_9K       (9*1024 - ETH_HLEN - 2)
 
-#define _R(NAME,TD,FW,SZ) {    \
+#define _R(NAME, FW, SZ) {     \
        .name = NAME,           \
-       .txd_version = TD,      \
        .fw_name = FW,          \
        .jumbo_max = SZ,        \
 }
 
 static const struct {
        const char *name;
-       enum rtl_tx_desc_version txd_version;
        const char *fw_name;
        u16 jumbo_max;
 } rtl_chip_infos[] = {
        /* PCI devices. */
        [RTL_GIGA_MAC_VER_01] =
-               _R("RTL8169",           RTL_TD_0, NULL, JUMBO_7K),
+               _R("RTL8169",           NULL, JUMBO_7K),
        [RTL_GIGA_MAC_VER_02] =
-               _R("RTL8169s",          RTL_TD_0, NULL, JUMBO_7K),
+               _R("RTL8169s",          NULL, JUMBO_7K),
        [RTL_GIGA_MAC_VER_03] =
-               _R("RTL8110s",          RTL_TD_0, NULL, JUMBO_7K),
+               _R("RTL8110s",          NULL, JUMBO_7K),
        [RTL_GIGA_MAC_VER_04] =
-               _R("RTL8169sb/8110sb",  RTL_TD_0, NULL, JUMBO_7K),
+               _R("RTL8169sb/8110sb",  NULL, JUMBO_7K),
        [RTL_GIGA_MAC_VER_05] =
-               _R("RTL8169sc/8110sc",  RTL_TD_0, NULL, JUMBO_7K),
+               _R("RTL8169sc/8110sc",  NULL, JUMBO_7K),
        [RTL_GIGA_MAC_VER_06] =
-               _R("RTL8169sc/8110sc",  RTL_TD_0, NULL, JUMBO_7K),
+               _R("RTL8169sc/8110sc",  NULL, JUMBO_7K),
        /* PCI-E devices. */
        [RTL_GIGA_MAC_VER_07] =
-               _R("RTL8102e",          RTL_TD_1, NULL, JUMBO_1K),
+               _R("RTL8102e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_08] =
-               _R("RTL8102e",          RTL_TD_1, NULL, JUMBO_1K),
+               _R("RTL8102e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_09] =
-               _R("RTL8102e",          RTL_TD_1, NULL, JUMBO_1K),
+               _R("RTL8102e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_10] =
-               _R("RTL8101e",          RTL_TD_0, NULL, JUMBO_1K),
+               _R("RTL8101e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_11] =
-               _R("RTL8168b/8111b",    RTL_TD_0, NULL, JUMBO_4K),
+               _R("RTL8168b/8111b",    NULL, JUMBO_4K),
        [RTL_GIGA_MAC_VER_12] =
-               _R("RTL8168b/8111b",    RTL_TD_0, NULL, JUMBO_4K),
+               _R("RTL8168b/8111b",    NULL, JUMBO_4K),
        [RTL_GIGA_MAC_VER_13] =
-               _R("RTL8101e",          RTL_TD_0, NULL, JUMBO_1K),
+               _R("RTL8101e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_14] =
-               _R("RTL8100e",          RTL_TD_0, NULL, JUMBO_1K),
+               _R("RTL8100e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_15] =
-               _R("RTL8100e",          RTL_TD_0, NULL, JUMBO_1K),
+               _R("RTL8100e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_16] =
-               _R("RTL8101e",          RTL_TD_0, NULL, JUMBO_1K),
+               _R("RTL8101e",          NULL, JUMBO_1K),
        [RTL_GIGA_MAC_VER_17] =
-               _R("RTL8168b/8111b",    RTL_TD_0, NULL, JUMBO_4K),
+               _R("RTL8168b/8111b",    NULL, JUMBO_4K),
        [RTL_GIGA_MAC_VER_18] =
-               _R("RTL8168cp/8111cp",  RTL_TD_1, NULL, JUMBO_6K),
+               _R("RTL8168cp/8111cp",  NULL, JUMBO_6K),
        [RTL_GIGA_MAC_VER_19] =
-               _R("RTL8168c/8111c",    RTL_TD_1, NULL, JUMBO_6K),
+               _R("RTL8168c/8111c",    NULL, JUMBO_6K),
        [RTL_GIGA_MAC_VER_20] =
-               _R("RTL8168c/8111c",    RTL_TD_1, NULL, JUMBO_6K),
+               _R("RTL8168c/8111c",    NULL, JUMBO_6K),
        [RTL_GIGA_MAC_VER_21] =
-               _R("RTL8168c/8111c",    RTL_TD_1, NULL, JUMBO_6K),
+               _R("RTL8168c/8111c",    NULL, JUMBO_6K),
        [RTL_GIGA_MAC_VER_22] =
-               _R("RTL8168c/8111c",    RTL_TD_1, NULL, JUMBO_6K),
+               _R("RTL8168c/8111c",    NULL, JUMBO_6K),
        [RTL_GIGA_MAC_VER_23] =
-               _R("RTL8168cp/8111cp",  RTL_TD_1, NULL, JUMBO_6K),
+               _R("RTL8168cp/8111cp",  NULL, JUMBO_6K),
        [RTL_GIGA_MAC_VER_24] =
-               _R("RTL8168cp/8111cp",  RTL_TD_1, NULL, JUMBO_6K),
+               _R("RTL8168cp/8111cp",  NULL, JUMBO_6K),
        [RTL_GIGA_MAC_VER_25] =
-               _R("RTL8168d/8111d",    RTL_TD_1, FIRMWARE_8168D_1, JUMBO_9K),
+               _R("RTL8168d/8111d",    FIRMWARE_8168D_1, JUMBO_9K),
        [RTL_GIGA_MAC_VER_26] =
-               _R("RTL8168d/8111d",    RTL_TD_1, FIRMWARE_8168D_2, JUMBO_9K),
+               _R("RTL8168d/8111d",    FIRMWARE_8168D_2, JUMBO_9K),
        [RTL_GIGA_MAC_VER_27] =
-               _R("RTL8168dp/8111dp",  RTL_TD_1, NULL, JUMBO_9K),
+               _R("RTL8168dp/8111dp",  NULL, JUMBO_9K),
        [RTL_GIGA_MAC_VER_28] =
-               _R("RTL8168dp/8111dp",  RTL_TD_1, NULL, JUMBO_9K),
+               _R("RTL8168dp/8111dp",  NULL, JUMBO_9K),
        [RTL_GIGA_MAC_VER_29] =
-               _R("RTL8105e",          RTL_TD_1, FIRMWARE_8105E_1, JUMBO_1K),
+               _R("RTL8105e",          FIRMWARE_8105E_1, JUMBO_1K),
        [RTL_GIGA_MAC_VER_30] =
-               _R("RTL8105e",          RTL_TD_1, FIRMWARE_8105E_1, JUMBO_1K),
+               _R("RTL8105e",          FIRMWARE_8105E_1, JUMBO_1K),
        [RTL_GIGA_MAC_VER_31] =
-               _R("RTL8168dp/8111dp",  RTL_TD_1, NULL, JUMBO_9K),
+               _R("RTL8168dp/8111dp",  NULL, JUMBO_9K),
        [RTL_GIGA_MAC_VER_32] =
-               _R("RTL8168e/8111e",    RTL_TD_1, FIRMWARE_8168E_1, JUMBO_9K),
+               _R("RTL8168e/8111e",    FIRMWARE_8168E_1, JUMBO_9K),
        [RTL_GIGA_MAC_VER_33] =
-               _R("RTL8168e/8111e",    RTL_TD_1, FIRMWARE_8168E_2, JUMBO_9K),
+               _R("RTL8168e/8111e",    FIRMWARE_8168E_2, JUMBO_9K),
        [RTL_GIGA_MAC_VER_34] =
-               _R("RTL8168evl/8111evl",RTL_TD_1, FIRMWARE_8168E_3, JUMBO_9K),
+               _R("RTL8168evl/8111evl", FIRMWARE_8168E_3, JUMBO_9K),
        [RTL_GIGA_MAC_VER_35] =
-               _R("RTL8168f/8111f",    RTL_TD_1, FIRMWARE_8168F_1, JUMBO_9K),
+               _R("RTL8168f/8111f",    FIRMWARE_8168F_1, JUMBO_9K),
        [RTL_GIGA_MAC_VER_36] =
-               _R("RTL8168f/8111f",    RTL_TD_1, FIRMWARE_8168F_2, JUMBO_9K),
+               _R("RTL8168f/8111f",    FIRMWARE_8168F_2, JUMBO_9K),
        [RTL_GIGA_MAC_VER_37] =
-               _R("RTL8402",           RTL_TD_1, FIRMWARE_8402_1,  JUMBO_1K),
+               _R("RTL8402",           FIRMWARE_8402_1,  JUMBO_1K),
        [RTL_GIGA_MAC_VER_38] =
-               _R("RTL8411",           RTL_TD_1, FIRMWARE_8411_1,  JUMBO_9K),
+               _R("RTL8411",           FIRMWARE_8411_1,  JUMBO_9K),
        [RTL_GIGA_MAC_VER_39] =
-               _R("RTL8106e",          RTL_TD_1, FIRMWARE_8106E_1, JUMBO_1K),
+               _R("RTL8106e",          FIRMWARE_8106E_1, JUMBO_1K),
        [RTL_GIGA_MAC_VER_40] =
-               _R("RTL8168g/8111g",    RTL_TD_1, FIRMWARE_8168G_2, JUMBO_9K),
+               _R("RTL8168g/8111g",    FIRMWARE_8168G_2, JUMBO_9K),
        [RTL_GIGA_MAC_VER_41] =
-               _R("RTL8168g/8111g",    RTL_TD_1, NULL, JUMBO_9K),
+               _R("RTL8168g/8111g",    NULL, JUMBO_9K),
        [RTL_GIGA_MAC_VER_42] =
-               _R("RTL8168g/8111g",    RTL_TD_1, FIRMWARE_8168G_3, JUMBO_9K),
+               _R("RTL8168g/8111g",    FIRMWARE_8168G_3, JUMBO_9K),
        [RTL_GIGA_MAC_VER_43] =
-               _R("RTL8106e",          RTL_TD_1, FIRMWARE_8106E_2, JUMBO_1K),
+               _R("RTL8106e",          FIRMWARE_8106E_2, JUMBO_1K),
        [RTL_GIGA_MAC_VER_44] =
-               _R("RTL8411",           RTL_TD_1, FIRMWARE_8411_2,  JUMBO_9K),
+               _R("RTL8411",           FIRMWARE_8411_2,  JUMBO_9K),
        [RTL_GIGA_MAC_VER_45] =
-               _R("RTL8168h/8111h",    RTL_TD_1, FIRMWARE_8168H_1, JUMBO_9K),
+               _R("RTL8168h/8111h",    FIRMWARE_8168H_1, JUMBO_9K),
        [RTL_GIGA_MAC_VER_46] =
-               _R("RTL8168h/8111h",    RTL_TD_1, FIRMWARE_8168H_2, JUMBO_9K),
+               _R("RTL8168h/8111h",    FIRMWARE_8168H_2, JUMBO_9K),
        [RTL_GIGA_MAC_VER_47] =
-               _R("RTL8107e",          RTL_TD_1, FIRMWARE_8107E_1, JUMBO_1K),
+               _R("RTL8107e",          FIRMWARE_8107E_1, JUMBO_1K),
        [RTL_GIGA_MAC_VER_48] =
-               _R("RTL8107e",          RTL_TD_1, FIRMWARE_8107E_2, JUMBO_1K),
+               _R("RTL8107e",          FIRMWARE_8107E_2, JUMBO_1K),
        [RTL_GIGA_MAC_VER_49] =
-               _R("RTL8168ep/8111ep",  RTL_TD_1, NULL, JUMBO_9K),
+               _R("RTL8168ep/8111ep",  NULL, JUMBO_9K),
        [RTL_GIGA_MAC_VER_50] =
-               _R("RTL8168ep/8111ep",  RTL_TD_1, NULL, JUMBO_9K),
+               _R("RTL8168ep/8111ep",  NULL, JUMBO_9K),
        [RTL_GIGA_MAC_VER_51] =
-               _R("RTL8168ep/8111ep",  RTL_TD_1, NULL, JUMBO_9K),
+               _R("RTL8168ep/8111ep",  NULL, JUMBO_9K),
 };
 #undef _R
 
@@ -7274,6 +7267,18 @@ static void rtl_hw_initialize(struct rtl8169_private *tp)
        }
 }
 
+/* Versions RTL8102e and from RTL8168c onwards support csum_v2 */
+static bool rtl_chip_supports_csum_v2(struct rtl8169_private *tp)
+{
+       switch (tp->mac_version) {
+       case RTL_GIGA_MAC_VER_01 ... RTL_GIGA_MAC_VER_06:
+       case RTL_GIGA_MAC_VER_10 ... RTL_GIGA_MAC_VER_17:
+               return false;
+       default:
+               return true;
+       }
+}
+
 static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
        const struct rtl_cfg_info *cfg = rtl_cfg_infos + ent->driver_data;
@@ -7431,16 +7436,11 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                /* Disallow toggling */
                dev->hw_features &= ~NETIF_F_HW_VLAN_CTAG_RX;
 
-       switch (rtl_chip_infos[chipset].txd_version) {
-       case RTL_TD_0:
-               tp->tso_csum = rtl8169_tso_csum_v1;
-               break;
-       case RTL_TD_1:
+       if (rtl_chip_supports_csum_v2(tp)) {
                tp->tso_csum = rtl8169_tso_csum_v2;
                dev->hw_features |= NETIF_F_IPV6_CSUM | NETIF_F_TSO6;
-               break;
-       default:
-               WARN_ON_ONCE(1);
+       } else {
+               tp->tso_csum = rtl8169_tso_csum_v1;
        }
 
        dev->hw_features |= NETIF_F_RXALL;