###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2015 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2016 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
VERSUFIX = ipfire$(KCFG)
MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/e1000e
-VER = 3.2.7.1
+VER = 3.3.3
THISAPP = e1000e-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 8f62c220d763fa92473365e40d55bd86
+$(DL_FILE)_MD5 = 01274408a0f987457600dc7993c9d59a
install : $(TARGET)
VERSUFIX = ipfire$(KCFG)
MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/igb/
-VER = 5.3.3.2
+VER = 5.3.4.4
THISAPP = igb-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 2d753a0bd03c949ec08d68c27540044d
+$(DL_FILE)_MD5 = 6c0d7dfdb161128da7c039fc83bbdba0
install : $(TARGET)
-mv $(MODPATH)/igb.ko \
$(MODPATH)/igb.ko.org
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/igb-5.3.4.4_fix_hung_at_dev_get_stats.patch
cd $(DIR_APP)/src && make BUILD_KERNEL=$(KVER)-$(VERSUFIX)
cd $(DIR_APP)/src && install -m 644 igb.ko $(MODPATH)
@rm -rf $(DIR_APP)
--- /dev/null
+Don't read phy_idle_errors at dev_get_stats() because this can
+hung the userspace.
+
+https://sourceforge.net/p/e1000/bugs/500/
+Why this is set to wont-fix?
+
+I think it is better when phy errors are not reportet in the stats
+than a random hanging of the whole sytem.
+
+diff -Naur igb-5.3.4.4.org/src/igb_main.c igb-5.3.4.4/src/igb_main.c
+--- igb-5.3.4.4.org/src/igb_main.c 2016-02-26 01:48:39.000000000 +0100
++++ igb-5.3.4.4/src/igb_main.c 2016-03-31 09:22:10.671794282 +0200
+@@ -6032,14 +6032,14 @@
+
+ /* Tx Dropped needs to be maintained elsewhere */
+
+- /* Phy Stats */
+- if (hw->phy.media_type == e1000_media_type_copper) {
+- if ((adapter->link_speed == SPEED_1000) &&
+- (!e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
+- phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
+- adapter->phy_stats.idle_errors += phy_tmp;
+- }
+- }
++// /* Phy Stats */
++// if (hw->phy.media_type == e1000_media_type_copper) {
++// if ((adapter->link_speed == SPEED_1000) &&
++// (!e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
++// phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
++// adapter->phy_stats.idle_errors += phy_tmp;
++// }
++// }
+
+ /* Management Stats */
+ adapter->stats.mgptc += E1000_READ_REG(hw, E1000_MGTPTC);