diff --git a/Makefile b/Makefile index 9bd10ac..75e8b6c 100644 --- a/Makefile +++ b/Makefile @@ -34,15 +34,6 @@ TOP=$(shell pwd) KERNEL_CFG_ORG=config-${KERNEL_VER}.org -E1000EDIR=e1000e-3.3.5.3 -E1000ESRC=${E1000EDIR}.tar.gz - -IGBDIR=igb-5.3.5.4 -IGBSRC=${IGBDIR}.tar.gz - -IXGBEDIR=ixgbe-5.0.4 -IXGBESRC=${IXGBEDIR}.tar.gz - SPLDIR=pkg-spl SPLSRC=submodules/zfs/pkg-spl.tar.gz ZFSDIR=pkg-zfs @@ -150,19 +141,13 @@ abi-${KVNAME}: .compile_mark abicheck: abi-${KVNAME} abi-previous abi-blacklist ./abi-check abi-${KVNAME} abi-previous ${SKIPABI} -data: .compile_mark igb.ko ixgbe.ko e1000e.ko ${SPL_MODULES} ${ZFS_MODULES} +data: .compile_mark ${SPL_MODULES} ${ZFS_MODULES} rm -rf data tmp; mkdir -p tmp/lib/modules/${KVNAME} mkdir tmp/boot install -m 644 ${KERNEL_SRC}/.config tmp/boot/config-${KVNAME} install -m 644 ${KERNEL_SRC}/System.map tmp/boot/System.map-${KVNAME} install -m 644 ${KERNEL_SRC}/arch/${KERNEL_ARCH}/boot/bzImage tmp/boot/vmlinuz-${KVNAME} cd ${KERNEL_SRC}; make INSTALL_MOD_PATH=../tmp/ modules_install - ## install latest ibg driver - install -m 644 igb.ko tmp/lib/modules/${KVNAME}/kernel/drivers/net/ethernet/intel/igb/ - # install latest ixgbe driver - install -m 644 ixgbe.ko tmp/lib/modules/${KVNAME}/kernel/drivers/net/ethernet/intel/ixgbe/ - # install latest e1000e driver - install -m 644 e1000e.ko tmp/lib/modules/${KVNAME}/kernel/drivers/net/ethernet/intel/e1000e/ # install zfs drivers install -d -m 0755 tmp/lib/modules/${KVNAME}/zfs install -m 644 ${SPL_MODULES} ${ZFS_MODULES} tmp/lib/modules/${KVNAME}/zfs @@ -242,36 +227,6 @@ ${KERNEL_SRC}/README ${KERNEL_CFG_ORG}: ${KERNEL_SRC_SUBMODULE} | submodules sed -i ${KERNEL_SRC}/Makefile -e 's/^EXTRAVERSION.*$$/EXTRAVERSION=${EXTRAVERSION}/' touch $@ -e1000e.ko e1000e: .compile_mark ${E1000ESRC} - rm -rf ${E1000EDIR} - tar xf ${E1000ESRC} - [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false) - cd ${E1000EDIR}; patch -p1 < ../intel-module-gcc6-compat.patch - cd ${E1000EDIR}; patch -p1 < ../e1000e_4.10_compat.patch - cd ${E1000EDIR}; patch -p1 < ../e1000e_4.10_max-mtu.patch - cd ${E1000EDIR}/src; make BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC} - cp ${E1000EDIR}/src/e1000e.ko e1000e.ko - -igb.ko igb: .compile_mark ${IGBSRC} - rm -rf ${IGBDIR} - tar xf ${IGBSRC} - [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false) - cd ${IGBDIR}; patch -p1 < ../intel-module-gcc6-compat.patch - cd ${IGBDIR}; patch -p1 < ../igb_4.9_compat.patch - cd ${IGBDIR}; patch -p1 < ../igb_4.10_compat.patch - cd ${IGBDIR}; patch -p1 < ../igb_4.10_max-mtu.patch - cd ${IGBDIR}/src; make BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC} - cp ${IGBDIR}/src/igb.ko igb.ko - -ixgbe.ko ixgbe: .compile_mark ${IXGBESRC} - rm -rf ${IXGBEDIR} - tar xf ${IXGBESRC} - [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false) - cd ${IXGBEDIR}; patch -p1 < ../ixgbe_4.10_compat.patch - cd ${IXGBEDIR}; patch -p1 < ../ixgbe_4.10_max-mtu.patch - cd ${IXGBEDIR}/src; make CFLAGS_EXTRA="-DIXGBE_NO_LRO" BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC} - cp ${IXGBEDIR}/src/ixgbe.ko ixgbe.ko - ${SPL_MODULES}: .compile_mark ${SPLSRC} rm -rf ${SPLDIR} tar xf ${SPLSRC} diff --git a/e1000e-3.3.5.3.tar.gz b/e1000e-3.3.5.3.tar.gz deleted file mode 100644 index c67490d..0000000 Binary files a/e1000e-3.3.5.3.tar.gz and /dev/null differ diff --git a/e1000e_4.10_compat.patch b/e1000e_4.10_compat.patch deleted file mode 100644 index e8f1d4c..0000000 --- a/e1000e_4.10_compat.patch +++ /dev/null @@ -1,81 +0,0 @@ - src/{netdev.c.orig => netdev.c} | 18 +++++++++--------- - src/{ptp.c.orig => ptp.c} | 4 ++-- - 2 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/src/netdev.c.orig b/src/netdev.c -index 73b0f9a..480265b 100644 ---- a/src/netdev.c.orig -+++ b/src/netdev.c -@@ -4833,24 +4833,24 @@ void e1000e_reinit_locked(struct e1000_adapter *adapter) - /** - * e1000e_sanitize_systim - sanitize raw cycle counter reads - * @hw: pointer to the HW structure -- * @systim: cycle_t value read, sanitized and returned -+ * @systim: u64 value read, sanitized and returned - * - * Errata for 82574/82583 possible bad bits read from SYSTIMH/L: - * check to see that the time is incrementing at a reasonable - * rate and is a multiple of incvalue. - **/ --static cycle_t e1000e_sanitize_systim(struct e1000_hw *hw, cycle_t systim) -+static u64 e1000e_sanitize_systim(struct e1000_hw *hw, u64 systim) - { - u64 time_delta, rem, temp; -- cycle_t systim_next; -+ u64 systim_next; - u32 incvalue; - int i; - - incvalue = er32(TIMINCA) & E1000_TIMINCA_INCVALUE_MASK; - for (i = 0; i < E1000_MAX_82574_SYSTIM_REREADS; i++) { - /* latch SYSTIMH on read of SYSTIML */ -- systim_next = (cycle_t)er32(SYSTIML); -- systim_next |= (cycle_t)er32(SYSTIMH) << 32; -+ systim_next = (u64)er32(SYSTIML); -+ systim_next |= (u64)er32(SYSTIMH) << 32; - - time_delta = systim_next - systim; - temp = time_delta; -@@ -4872,13 +4872,13 @@ static cycle_t e1000e_sanitize_systim(struct e1000_hw *hw, cycle_t systim) - * e1000e_cyclecounter_read - read raw cycle counter (used by time counter) - * @cc: cyclecounter structure - **/ --static cycle_t e1000e_cyclecounter_read(const struct cyclecounter *cc) -+static u64 e1000e_cyclecounter_read(const struct cyclecounter *cc) - { - struct e1000_adapter *adapter = container_of(cc, struct e1000_adapter, - cc); - struct e1000_hw *hw = &adapter->hw; - u32 systimel, systimeh; -- cycle_t systim; -+ u64 systim; - /* SYSTIMH latching upon SYSTIML read does not work well. - * This means that if SYSTIML overflows after we read it but before - * we read SYSTIMH, the value of SYSTIMH has been incremented and we -@@ -4899,8 +4899,8 @@ static cycle_t e1000e_cyclecounter_read(const struct cyclecounter *cc) - systimel = systimel_2; - } - } -- systim = (cycle_t)systimel; -- systim |= (cycle_t)systimeh << 32; -+ systim = (u64)systimel; -+ systim |= (u64)systimeh << 32; - - if (adapter->flags2 & FLAG2_CHECK_SYSTIM_OVERFLOW) - systim = e1000e_sanitize_systim(hw, systim); - -diff --git a/src/ptp.c.orig b/src/ptp.c -index 00c419f..228adce 100644 ---- a/src/ptp.c.orig -+++ b/src/ptp.c -@@ -136,8 +136,8 @@ static int e1000e_phc_get_syncdevicetime(ktime_t * device, - unsigned long flags; - int i; - u32 tsync_ctrl; -- cycle_t dev_cycles; -- cycle_t sys_cycles; -+ u64 dev_cycles; -+ u64 sys_cycles; - - tsync_ctrl = er32(TSYNCTXCTL); - tsync_ctrl |= E1000_TSYNCTXCTL_START_SYNC | diff --git a/e1000e_4.10_max-mtu.patch b/e1000e_4.10_max-mtu.patch deleted file mode 100644 index 69272d7..0000000 --- a/e1000e_4.10_max-mtu.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/src/netdev.c b/src/netdev.c -index 73b0f9a..aef1bc2 100644 ---- a/src/netdev.c -+++ b/src/netdev.c -@@ -6724,19 +6724,12 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu) - int max_frame = new_mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; - - /* Jumbo frame support */ -- if ((max_frame > (VLAN_ETH_FRAME_LEN + ETH_FCS_LEN)) && -+ if ((new_mtu > ETH_DATA_LEN) && - !(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) { - e_err("Jumbo Frames not supported.\n"); - return -EINVAL; - } - -- /* Supported frame sizes */ -- if ((new_mtu < (VLAN_ETH_ZLEN + ETH_FCS_LEN)) || -- (max_frame > adapter->max_hw_frame_size)) { -- e_err("Unsupported MTU setting\n"); -- return -EINVAL; -- } -- - /* Jumbo frame workaround on 82579 and newer requires CRC be stripped */ - if ((adapter->hw.mac.type >= e1000_pch2lan) && - !(adapter->flags2 & FLAG2_CRC_STRIPPING) && -@@ -8262,6 +8255,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) - #endif /* HAVE_NETDEV_VLAN_FEATURES */ - } - -+ /* MTU range: 68 - max_hw_frame_size */ -+ netdev->min_mtu = ETH_MIN_MTU; -+ netdev->max_mtu = adapter->max_hw_frame_size - -+ (VLAN_ETH_HLEN + ETH_FCS_LEN); -+ - if (e1000e_enable_mng_pass_thru(&adapter->hw)) - adapter->flags |= FLAG_MNG_PT_ENABLED; - diff --git a/igb-5.3.5.4.tar.gz b/igb-5.3.5.4.tar.gz deleted file mode 100644 index 18cbf69..0000000 Binary files a/igb-5.3.5.4.tar.gz and /dev/null differ diff --git a/igb_4.10_compat.patch b/igb_4.10_compat.patch deleted file mode 100644 index 2dc5c46..0000000 --- a/igb_4.10_compat.patch +++ /dev/null @@ -1,25 +0,0 @@ - src/{igb_ptp.c.orig => igb_ptp.c} | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/igb_ptp.c.orig b/src/igb_ptp.c -index 744fa65..f334ac7 100644 ---- a/src/igb_ptp.c.orig -+++ b/src/igb_ptp.c -@@ -93,7 +93,7 @@ - * SYSTIM read access for the 82576 - */ - --static cycle_t igb_ptp_read_82576(const struct cyclecounter *cc) -+static u64 igb_ptp_read_82576(const struct cyclecounter *cc) - { - struct igb_adapter *igb = container_of(cc, struct igb_adapter, cc); - struct e1000_hw *hw = &igb->hw; -@@ -113,7 +113,7 @@ static cycle_t igb_ptp_read_82576(const struct cyclecounter *cc) - * SYSTIM read access for the 82580 - */ - --static cycle_t igb_ptp_read_82580(const struct cyclecounter *cc) -+static u64 igb_ptp_read_82580(const struct cyclecounter *cc) - { - struct igb_adapter *igb = container_of(cc, struct igb_adapter, cc); - struct e1000_hw *hw = &igb->hw; diff --git a/igb_4.10_max-mtu.patch b/igb_4.10_max-mtu.patch deleted file mode 100644 index d04ead5..0000000 --- a/igb_4.10_max-mtu.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff --git a/src/e1000_defines.h b/src/e1000_defines.h -index 6de3988..d58e12f 100644 ---- a/src/e1000_defines.h -+++ b/src/e1000_defines.h -@@ -423,7 +423,8 @@ - #define ETHERNET_IEEE_VLAN_TYPE 0x8100 /* 802.3ac packet */ - - #define ETHERNET_FCS_SIZE 4 --#define MAX_JUMBO_FRAME_SIZE 0x3F00 -+#define MAX_JUMBO_FRAME_SIZE 0x2600 -+#define MAX_STD_JUMBO_FRAME_SIZE 9216 - /* The datasheet maximum supported RX size is 9.5KB (9728 bytes) */ - #define MAX_RX_JUMBO_FRAME_SIZE 0x2600 - #define E1000_TX_PTR_GAP 0x1F -diff --git a/src/igb_main.c b/src/igb_main.c -index 2dff0f4..bbfe87e 100644 ---- a/src/igb_main.c -+++ b/src/igb_main.c -@@ -2852,6 +2852,10 @@ static int igb_probe(struct pci_dev *pdev, - if (pci_using_dac) - netdev->features |= NETIF_F_HIGHDMA; - -+ /* MTU range: 68 - 9216 */ -+ netdev->min_mtu = ETH_MIN_MTU; -+ netdev->max_mtu = MAX_STD_JUMBO_FRAME_SIZE; -+ - adapter->en_mng_pt = e1000_enable_mng_pass_thru(hw); - #ifdef DEBUG - if (adapter->dmac != IGB_DMAC_DISABLE) -@@ -5832,17 +5836,6 @@ static int igb_change_mtu(struct net_device *netdev, int new_mtu) - struct pci_dev *pdev = adapter->pdev; - int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; - -- if ((new_mtu < 68) || (max_frame > MAX_JUMBO_FRAME_SIZE)) { -- dev_err(pci_dev_to_dev(pdev), "Invalid MTU setting\n"); -- return -EINVAL; -- } -- --#define MAX_STD_JUMBO_FRAME_SIZE 9238 -- if (max_frame > MAX_STD_JUMBO_FRAME_SIZE) { -- dev_err(pci_dev_to_dev(pdev), "MTU > 9216 not supported.\n"); -- return -EINVAL; -- } -- - /* adjust max frame to be at least the size of a standard frame */ - if (max_frame < (ETH_FRAME_LEN + ETH_FCS_LEN)) - max_frame = ETH_FRAME_LEN + ETH_FCS_LEN; diff --git a/igb_4.9_compat.patch b/igb_4.9_compat.patch deleted file mode 100644 index 1a453a3..0000000 --- a/igb_4.9_compat.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 6445198f802d993c73f4b246353b2ceb2dfafc32 Mon Sep 17 00:00:00 2001 -From: Ferruh Yigit -Date: Mon, 17 Oct 2016 11:23:14 +0100 -Subject: kni: fix build with kernel 4.9 - -compile error: - CC [M] .../lib/librte_eal/linuxapp/kni/igb_main.o -.../lib/librte_eal/linuxapp/kni/igb_main.c:2317:21: -error: initialization from incompatible pointer type - [-Werror=incompatible-pointer-types] - .ndo_set_vf_vlan = igb_ndo_set_vf_vlan, - ^~~~~~~~~~~~~~~~~~~ - -Linux kernel 4.9 updates API for ndo_set_vf_vlan: -Linux: 79aab093a0b5 ("net: Update API for VF vlan protocol 802.1ad support") - -Use new API for Linux kernels >= 4.9 - -Signed-off-by: Ferruh Yigit -Tested-by: Pablo de Lara ---- - src/igb_main.c | 19 +++++++++++++++++++ - src/kcompat.h | 4 ++++ - 2 files changed, 23 insertions(+) - -diff --git a/src/igb_main.c b/src/igb_main.c -index 23e2d64..f4dca5a 100644 ---- a/src/igb_main.c -+++ b/src/igb_main.c -@@ -195,7 +195,11 @@ static void igb_process_mdd_event(struct igb_adapter *); - #ifdef IFLA_VF_MAX - static int igb_ndo_set_vf_mac( struct net_device *netdev, int vf, u8 *mac); - static int igb_ndo_set_vf_vlan(struct net_device *netdev, -+#ifdef HAVE_VF_VLAN_PROTO -+ int vf, u16 vlan, u8 qos, __be16 vlan_proto); -+#else - int vf, u16 vlan, u8 qos); -+#endif - #ifdef HAVE_VF_SPOOFCHK_CONFIGURE - static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, - bool setting); -@@ -6412,7 +6416,11 @@ static void igb_set_vmvir(struct igb_adapter *adapter, u32 vid, u32 vf) - } - - static int igb_ndo_set_vf_vlan(struct net_device *netdev, -+#ifdef HAVE_VF_VLAN_PROTO -+ int vf, u16 vlan, u8 qos, __be16 vlan_proto) -+#else - int vf, u16 vlan, u8 qos) -+#endif - { - int err = 0; - struct igb_adapter *adapter = netdev_priv(netdev); -@@ -6420,6 +6428,12 @@ static int igb_ndo_set_vf_vlan(struct net_device *netdev, - /* VLAN IDs accepted range 0-4094 */ - if ((vf >= adapter->vfs_allocated_count) || (vlan > VLAN_VID_MASK-1) || (qos > 7)) - return -EINVAL; -+ -+#ifdef HAVE_VF_VLAN_PROTO -+ if (vlan_proto != htons(ETH_P_8021Q)) -+ return -EPROTONOSUPPORT; -+#endif -+ - if (vlan || qos) { - err = igb_vlvf_set(adapter, vlan, !!vlan, vf); - if (err) -@@ -6580,7 +6594,12 @@ static inline void igb_vf_reset(struct igb_adapter *adapter, u32 vf) - if (adapter->vf_data[vf].pf_vlan) - igb_ndo_set_vf_vlan(adapter->netdev, vf, - adapter->vf_data[vf].pf_vlan, -+#ifdef HAVE_VF_VLAN_PROTO -+ adapter->vf_data[vf].pf_qos, -+ htons(ETH_P_8021Q)); -+#else - adapter->vf_data[vf].pf_qos); -+#endif - else - igb_clear_vf_vfta(adapter, vf); - #endif -diff --git a/src/kcompat.h b/src/kcompat.h -index 69e0e7a..84826b2 100644 ---- a/src/kcompat.h -+++ b/src/kcompat.h -@@ -3929,4 +3929,8 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type) - #define vlan_tx_tag_present skb_vlan_tag_present - #endif - -+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) ) -+#define HAVE_VF_VLAN_PROTO -+#endif /* >= 4.9.0 */ -+ - #endif /* _KCOMPAT_H_ */ --- -cgit v1.0 - diff --git a/intel-module-gcc6-compat.patch b/intel-module-gcc6-compat.patch deleted file mode 100644 index 9ccd2c5..0000000 --- a/intel-module-gcc6-compat.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/src/Makefile.orig b/src/Makefile -index 8e962f7..50bcdcc 100644 ---- a/src/Makefile.orig -+++ b/src/Makefile -@@ -123,6 +123,13 @@ ifeq (,$(CC)) - $(error Compiler not found) - endif - -+# workaround for GCC6's default PIE -+ifeq ($(CC),gcc) -+ PIE_TEST = [ -z "`$(CC) -fno-PIE -no-pie -x c -c /dev/null -o /dev/null 2>&1`" ] -+ PIE_FLAGS := $(shell $(PIE_TEST) && echo '-fno-PIE -no-pie') -+ EXTRA_CFLAGS += $(PIE_FLAGS) -+endif -+ - # we need to know what platform the driver is being built on - # some additional features are only built on Intel platforms - ARCH := $(shell uname -m | sed 's/i.86/i386/') diff --git a/ixgbe-5.0.4.tar.gz b/ixgbe-5.0.4.tar.gz deleted file mode 100644 index 41f5f2d..0000000 Binary files a/ixgbe-5.0.4.tar.gz and /dev/null differ diff --git a/ixgbe_4.10_compat.patch b/ixgbe_4.10_compat.patch deleted file mode 100644 index 4518819..0000000 --- a/ixgbe_4.10_compat.patch +++ /dev/null @@ -1,25 +0,0 @@ - src/{ixgbe_ptp.c.orig => ixgbe_ptp.c} | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/ixgbe_ptp.c.orig b/src/ixgbe_ptp.c -index fb832f0..b868c68 100644 ---- a/src/ixgbe_ptp.c.orig -+++ b/src/ixgbe_ptp.c -@@ -244,7 +244,7 @@ static void ixgbe_ptp_setup_sdp_X540(struct ixgbe_adapter *adapter) - * result of SYSTIME is 32bits of "billions of cycles" and 32 bits of - * "cycles", rather than seconds and nanoseconds. - */ --static cycle_t ixgbe_ptp_read_X550(const struct cyclecounter *hw_cc) { -+static u64 ixgbe_ptp_read_X550(const struct cyclecounter *hw_cc) { - struct ixgbe_adapter *adapter = - container_of(hw_cc, struct ixgbe_adapter, hw_cc); - struct ixgbe_hw *hw = &adapter->hw; -@@ -280,7 +280,7 @@ static cycle_t ixgbe_ptp_read_X550(const struct cyclecounter *hw_cc) { - * cyclecounter structure used to construct a ns counter from the - * arbitrary fixed point registers - */ --static cycle_t ixgbe_ptp_read_82599(const struct cyclecounter *hw_cc) -+static u64 ixgbe_ptp_read_82599(const struct cyclecounter *hw_cc) - { - struct ixgbe_adapter *adapter = - container_of(hw_cc, struct ixgbe_adapter, hw_cc); diff --git a/ixgbe_4.10_max-mtu.patch b/ixgbe_4.10_max-mtu.patch deleted file mode 100644 index c25203e..0000000 --- a/ixgbe_4.10_max-mtu.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/src/ixgbe_main.c b/src/ixgbe_main.c -index 83c6250..fe226cd 100644 ---- a/src/ixgbe_main.c -+++ b/src/ixgbe_main.c -@@ -6379,11 +6379,6 @@ static void ixgbe_free_all_rx_resources(struct ixgbe_adapter *adapter) - static int ixgbe_change_mtu(struct net_device *netdev, int new_mtu) - { - struct ixgbe_adapter *adapter = netdev_priv(netdev); -- int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN; -- -- /* MTU < 68 is an error and causes problems on some kernels */ -- if ((new_mtu < 68) || (max_frame > IXGBE_MAX_JUMBO_FRAME_SIZE)) -- return -EINVAL; - - /* - * For 82599EB we cannot allow legacy VFs to enable their receive -@@ -6392,7 +6387,7 @@ static int ixgbe_change_mtu(struct net_device *netdev, int new_mtu) - */ - if ((adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) && - (adapter->hw.mac.type == ixgbe_mac_82599EB) && -- (max_frame > (ETH_FRAME_LEN + ETH_FCS_LEN))) -+ (new_mtu > ETH_DATA_LEN)) - e_warn(probe, "Setting MTU > 1500 will disable legacy VFs\n"); - - e_info(probe, "changing MTU from %d to %d\n", netdev->mtu, new_mtu); -@@ -10134,6 +10129,11 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, - #ifdef IFF_SUPP_NOFCS - netdev->priv_flags |= IFF_SUPP_NOFCS; - #endif -+ -+ /* MTU range: 68 - 9710 */ -+ netdev->min_mtu = ETH_MIN_MTU; -+ netdev->max_mtu = IXGBE_MAX_JUMBO_FRAME_SIZE - (ETH_HLEN + ETH_FCS_LEN); -+ - #if IS_ENABLED(CONFIG_DCB) - if (adapter->flags & IXGBE_FLAG_DCB_CAPABLE) - netdev->dcbnl_ops = &dcbnl_ops;