diff --git a/Makefile b/Makefile index c6bcdd8..6d67005 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ KERNEL_CFG_ORG=config-${KERNEL_VER}.org E1000EDIR=e1000e-3.3.6 E1000ESRC=${E1000EDIR}.tar.gz -IGBDIR=igb-5.3.5.12 +IGBDIR=igb-5.3.5.10 IGBSRC=${IGBDIR}.tar.gz IXGBEDIR=ixgbe-5.3.3 @@ -254,6 +254,8 @@ 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 < ../patches/intel/igb/igb_4.10_max-mtu.patch + cd ${IGBDIR}; patch -p1 < ../patches/intel/igb/igb_4.12_compat.patch cd ${IGBDIR}/src; make BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC} cp ${IGBDIR}/src/igb.ko igb.ko diff --git a/igb-5.3.5.10.tar.gz b/igb-5.3.5.10.tar.gz new file mode 100644 index 0000000..e3ae7f6 Binary files /dev/null and b/igb-5.3.5.10.tar.gz differ diff --git a/igb-5.3.5.12.tar.gz b/igb-5.3.5.12.tar.gz deleted file mode 100644 index bb84854..0000000 Binary files a/igb-5.3.5.12.tar.gz and /dev/null differ diff --git a/patches/intel/igb/igb_4.10_max-mtu.patch b/patches/intel/igb/igb_4.10_max-mtu.patch new file mode 100644 index 0000000..d04ead5 --- /dev/null +++ b/patches/intel/igb/igb_4.10_max-mtu.patch @@ -0,0 +1,47 @@ +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/patches/intel/igb/igb_4.12_compat.patch b/patches/intel/igb/igb_4.12_compat.patch new file mode 100644 index 0000000..efbfda6 --- /dev/null +++ b/patches/intel/igb/igb_4.12_compat.patch @@ -0,0 +1,17 @@ +diff --git a/src/igb_main.c.orig b/src/igb_main.c +index 3ee1ec7..c8adf04 100644 +--- a/src/igb_main.c.orig ++++ b/src/igb_main.c +@@ -1047,8 +1047,10 @@ static void igb_set_interrupt_capability(struct igb_adapter *adapter, bool msix) + for (i = 0; i < numvecs; i++) + adapter->msix_entries[i].entry = i; + +- err = pci_enable_msix(pdev, +- adapter->msix_entries, numvecs); ++ err = pci_enable_msix_range(pdev, ++ adapter->msix_entries, ++ numvecs, ++ numvecs); + if (err == 0) + break; + }