• Claudiu Manoil's avatar
    gianfar: Change default HW Tx queue scheduling mode · b98b8bab
    Claudiu Manoil authored
    This is primarily to address transmission timeout occurrences, when
    multiple H/W Tx queues are being used concurrently. Because in
    the priority scheduling mode the controller does not service the
    Tx queues equally (but in ascending index order), Tx timeouts are
    being triggered rightaway for a basic test with multiple simultaneous
    connections like:
    iperf -c <server_ip> -n 100M -P 8
    
    resulting in kernel trace:
    NETDEV WATCHDOG: eth1 (fsl-gianfar): transmit queue <X> timed out
    ------------[ cut here ]------------
    WARNING: at net/sched/sch_generic.c:255
    ...
    and controller reset during intense traffic, and possibly further
    complications.
    
    This patch changes the default H/W Tx scheduling setting (TXSCHED)
    for multi-queue devices, from priority scheduling mode to a weighted
    round robin mode with equal weights for all H/W Tx queues, and
    addresses the issue above.
    Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@freescale.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b98b8bab
gianfar.c 86.7 KB