lkml.org 
[lkml]   [2016]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: stmmac ethernet in kernel 4.9-rc6: coalescing related pauses.
    From
    From: Pavel Machek <pavel@ucw.cz>
    Date: Thu, 24 Nov 2016 09:55:06 +0100

    > Hi!
    >
    >> I'm debugging strange delays during transmit in stmmac driver. They
    >> seem to be present in 4.4 kernel (and older kernels, too). Workload is
    >> burst of udp packets being sent, pause, burst of udp packets, ...
    >>
    >> Test code is attached, I use these parameters for testing:
    >>
    >> ./udp-test raw 10.0.0.6 1234 1000 100 30
    >>
    >> The delays seem to be related to coalescing:
    >>
    >> drivers/net/ethernet/stmicro/stmmac/common.h
    >> #define STMMAC_COAL_TX_TIMER 40000
    >> #define STMMAC_MAX_COAL_TX_TICK 100000
    >> #define STMMAC_TX_MAX_FRAMES 256
    >>
    >> If I lower the parameters, delays are gone, but I get netdev watchdog
    >> backtrace followed by broken driver.
    >>
    >> Any ideas what is going on there?
    >
    > 4.9-rc6 still has the delays. With the
    >
    > #define STMMAC_COAL_TX_TIMER 1000
    > #define STMMAC_TX_MAX_FRAMES 2
    >
    > settings, delays go away, and driver still works. (It fails fairly
    > fast in 4.4). Good news. But the question still is: what is going on
    > there?

    256 packets looks way too large for being a trigger for aborting the
    TX coalescing timer.

    Looking more deeply into this, the driver is using non-highres timers
    to implement the TX coalescing. This simply cannot work.

    1 HZ, which is the lowest granularity of non-highres timers in the
    kernel, is variable as well as already too large of a delay for
    effective TX coalescing.

    I seriously think that the TX coalescing support should be ripped out
    or disabled entirely until it is implemented properly in this driver.

    \
     
     \ /
      Last update: 2016-11-24 17:12    [W:4.058 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site