igb: fix hung at dev_get_stats()

without this igb can bring the whole userspace to hung
with "cpu_stuck for more than 22s". I don't understand
why this bug is set to "wont-fix" at the bugtracker.

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Arne Fitzenreiter
2016-04-01 08:15:27 +02:00
parent f9855d6d55
commit b64110cfd5
2 changed files with 36 additions and 0 deletions

View File

@@ -79,6 +79,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-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)

View File

@@ -0,0 +1,35 @@
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);