macb: support the two tx descriptors on at91rm9200
authorWilly Tarreau <w@1wt.eu>
Sun, 11 Oct 2020 09:09:44 +0000 (11:09 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 13 Oct 2020 23:57:12 +0000 (16:57 -0700)
commit0a4e9ce17ba77847e5a9f87eed3c0ba46e3f82eb
tree9688ac73260eb4cf890da91e3e0e4cfab7e91aa6
parent73d7422813839bbcae3dd28ff0d3c48d916e0b57
macb: support the two tx descriptors on at91rm9200

The at91rm9200 variant used by a few chips including the MSC313 supports
two Tx descriptors (one frame being serialized and another one queued).
However the driver only implemented a single one, which adds a dead time
after each transfer to receive and process the interrupt and wake the
queue up, preventing from reaching line rate.

This patch implements a very basic 2-deep queue to address this limitation.
The tests run on a Breadbee board equipped with an MSC313E show that at
1 GHz, HTTP traffic on medium-sized objects (45kB) was limited to exactly
50 Mbps before this patch, and jumped to 76 Mbps with this patch. And tests
on a single TCP stream with an MTU of 576 jump from 10kpps to 15kpps. With
1500 byte packets it's now possible to reach line rate versus 75 Mbps
before.

Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
Cc: Daniel Palmer <daniel@0x0f.com>
Signed-off-by: Willy Tarreau <w@1wt.eu>
Link: https://lore.kernel.org/r/20201011090944.10607-4-w@1wt.eu
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cadence/macb.h
drivers/net/ethernet/cadence/macb_main.c