This is series mainly merges out-of-order mergeable and
non-mergeable Rx paths.

Doing so, we remove one path, and micro-benchmark does not
show any performance regression:

                
+---------+----------+----------+----------+----------+----------+
                |            V18.11             |    v18.11 + Rx paths merge    
 |
                
+---------+----------+----------+----------+----------+----------+
                | 1 queue | 2 queues | 3 queues | 1 queue  | 2 queues | 3 
queues |
+-----+---------+---------+----------+----------+----------+----------+----------+
| MRG | Rxonly  | 16.22   | 32.47    | 48.81    | 16.31    | 32.62    | 48.88   
 |
| OFF | IO loop | 12.86   | 25.69    | 38.16    | 12.88    | 25.74    | 38.53   
 |
+-----+---------+---------+----------+----------+----------+----------+----------+
| MRG | Rxonly  | 16.27   | 32.65    | 48.81    | 16.29    | 32.67    | 48.77   
 |
| ON  | IO loop | 12.82   | 25.59    | 37.86    | 12.86    | 25.68    | 37.9    
 |
+-----+---------+---------+----------+----------+----------+----------+----------+

Note that to avoid vector path to be selected as this benchmark is done
without offloads, I had to do this small change to disable it in
virtio_dev_configure():
-       hw->use_simple_rx = 1;
+       hw->use_simple_rx = 0;

The series also enables in-order path selection when mergeable buffers feature
is disabled. Offload and refill helpers are also changed to be inlined.

Maxime Coquelin (3):
  net/virtio: inline refill and offload helpers
  net/virtio: merge Rx mergeable and non-mergeable paths
  net/virtio: add non-mergeable support to in-order path

 drivers/net/virtio/virtio_ethdev.c |  16 +---
 drivers/net/virtio/virtio_ethdev.h |   5 +-
 drivers/net/virtio/virtio_rxtx.c   | 133 ++++-------------------------
 3 files changed, 22 insertions(+), 132 deletions(-)

-- 
2.17.2

Reply via email to