]> git.baikalelectronics.ru Git - kernel.git/commit
gianfar: Change default HW Tx queue scheduling mode
authorClaudiu Manoil <claudiu.manoil@freescale.com>
Sun, 23 Sep 2012 22:39:08 +0000 (22:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Sep 2012 20:25:16 +0000 (16:25 -0400)
commitfb2eada33bf0715224a2ebbfe7029f0e99ea2b6e
tree84490a56fe0cbeffd6082d54d9bf3172efd1668a
parented88034fe0dd6c01bb7104a64b1ce46af54b51fa
gianfar: Change default HW Tx queue scheduling mode

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: Claudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/gianfar.c
drivers/net/ethernet/freescale/gianfar.h