Hi Sebastian, > > 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. > > 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 ��.n��������+%������w��{.n�����{�����ǫ���ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f