7 Replies Latest reply on Sep 8, 2015 10:59 PM by wb_Intel

    Latency problem with Linux e1000e driver with 82579LM controller




      We have a problem with Linux e1000e driver on an on-board e1000e controller, (listed as 82579LM). We have pinpointed the problem to a very simple test case.


      A task sends an UDP packet every 5ms. Most of the time, this happens in a few microseconds, but from time to time, this can take a few multiples of 50 microseconds.


      Instrumenting the driver, we found that the lost time happens in the function e1000e_update_tail_wa, where the function waits for the register at offset 0x05B54 to contain the bit 0x01000000. We understand from the code that using this register is a workaround for the 82579 chip. Looking at various datasheets, we were not able to find a documentation of what this register does and a description of exactly what this workaround is needed? Since this workaround is consuming time, is there any way we could replace it with say, a software spinlock?