RE: Kernel 4.6.7-rt13: Intel Ethernet driver igb causes huge latencies in cyclictest
From: Koehrer Mathias (ETAS/ESW5) <hidden>
Date: 2016-09-23 13:23:30
Hi Sebastian,
quoted
The code that is causing the long latencies seems to be the function "igb_watchdog_task" within igb_main.c (Line: 4386). This function will be called periodically. When I do a return at the beginning of this function the additional latency is notseen.quoted
In particular that function calls "igb_has_link" which seems to be one candidate that is causing additional latency. Do you have any clue how this code can be executed properly without causing the additional latencies?Nope. The watchdog function is invoked via schedule_work() so it should not be blocking anything. There is no preempt disable or anything like that. Could you narrow it down further? The igb_has_link() seems also small and simple.
OK. I tried to dig deeper into that.... The critical stuff seems to be igb_has_link() calling hw->mac_ops.check_for_link (which is igb_check_for_link_82575() ) calling igb_check_for_copper_link() calling igb_phy_has_link. Within igb_phy_has_link() the line with the code ret_val = hw->phy.ops.read_reg(hw, PHY_STATUS, &phy_status); seems to be the candidate that causing the trouble. And this function pointer points to igb_read_phy_reg_82580(). Does this give you any idea what goes wrong? Thanks for any hints! Regards Mathias