Browse Source

revert igb to 5.3.5.10

because 5.3.5.12 broke JUMBO_FRAMES (again)
Fabian Grünbichler 8 years ago
parent
commit
6eb123031d

+ 3 - 1
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
 

BIN
igb-5.3.5.10.tar.gz


BIN
igb-5.3.5.12.tar.gz


+ 47 - 0
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;

+ 17 - 0
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;
+ 		}