forked from Minki/linux
r8169: don't configure csum function per chip version
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>
This commit is contained in:
parent
05bbe5584f
commit
eb88f5f712
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user