Thread (34 messages) 34 messages, 10 authors, 2016-10-18

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 not
seen.
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


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help