1. 13 Oct, 2020 3 commits
    • Willy Tarreau's avatar
      macb: support the two tx descriptors on at91rm9200 · 0a4e9ce1
      Willy Tarreau authored
      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: default avatarWilly Tarreau <w@1wt.eu>
      Link: https://lore.kernel.org/r/20201011090944.10607-4-w@1wt.euSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0a4e9ce1
    • Willy Tarreau's avatar
      macb: prepare at91 to use a 2-frame TX queue · 73d74228
      Willy Tarreau authored
      The RM9200 supports one frame being sent while another one is waiting in
      queue. This avoids the dead time that follows the emission of a frame
      and which prevents one from reaching line speed.
      
      Right now the driver supports only a single skb, so we'll first replace
      the rm9200-specific skb info with an array of two macb_tx_skb (already
      used by other drivers). This patch only moves the skb_length to
      txq[0].size and skb_physaddr to skb[0].mapping but doesn't perform any
      other change. It already uses [desc] in order to minimize future changes.
      
      Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
      Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
      Cc: Daniel Palmer <daniel@0x0f.com>
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Link: https://lore.kernel.org/r/20201011090944.10607-3-w@1wt.euSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      73d74228
    • Willy Tarreau's avatar
      macb: add RM9200's interrupt flag TBRE · fa6031df
      Willy Tarreau authored
      Transmit Buffer Register Empty replaces TXERR on RM9200 and signals the
      sender may try to send again becase the last queued frame is no longer
      in queue (being transmitted or already transmitted).
      
      Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
      Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
      Cc: Daniel Palmer <daniel@0x0f.com>
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Link: https://lore.kernel.org/r/20201011090944.10607-2-w@1wt.euSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      fa6031df
  2. 12 Oct, 2020 29 commits
  3. 11 Oct, 2020 8 commits