Hello Mike,

I did not review carefully yet.
Just two quick comments.


On Fri, Jul 1, 2022 at 5:58 AM Mike Pattrick <[email protected]> wrote:
>
> From: Flavio Leitner <[email protected]>
>
> This provides a software implementation in the case
> the egress netdev doesn't support segmentation in hardware.
>
> This is an _untested_ patch to showcase the proposed solution.

I suppose it is a leftover from the RFC patch, can you confirm?

>
> The challenge here is to guarantee packet ordering in the
> original batch that may be full of TSO packets. Each TSO
> packet can go up to ~64kB, so with segment size of 1440
> that means about 44 packets for each TSO. Each batch has
> 32 packets, so the total batch amounts to 1408 normal
> packets.
>
> The segmentation estimates the total number of packets
> and then the total number of batches. Then allocate
> enough memory and finally do the work.
>
> Finally each batch is sent in order to the netdev.
>
> Signed-off-by: Flavio Leitner <[email protected]>
> Co-authored-by: Mike Pattrick <[email protected]>
> Signed-off-by: Mike Pattrick <[email protected]>
> ---
>  lib/automake.mk     |   2 +
>  lib/dp-packet-gso.c | 172 ++++++++++++++++++++++++++++++++++++++++++++
>  lib/dp-packet-gso.h |  24 +++++++
>  lib/dp-packet.c     |   2 +
>  lib/dp-packet.h     |  11 +++
>  lib/netdev-dpdk.c   |  38 +++++++---
>  lib/netdev-linux.c  |  57 ---------------
>  lib/netdev.c        | 121 ++++++++++++++++++-------------
>  lib/packets.c       |   4 +-
>  9 files changed, 311 insertions(+), 120 deletions(-)
>  create mode 100644 lib/dp-packet-gso.c
>  create mode 100644 lib/dp-packet-gso.h
>

[snip]


> diff --git a/lib/netdev.c b/lib/netdev.c
> index ad9081f28..f0931730c 100644
> --- a/lib/netdev.c
> +++ b/lib/netdev.c
> @@ -35,6 +35,7 @@
>  #include "coverage.h"
>  #include "dpif.h"
>  #include "dp-packet.h"
> +#include "dp-packet-gso.h"
>  #include "openvswitch/dynamic-string.h"
>  #include "fatal-signal.h"
>  #include "hash.h"
> @@ -55,6 +56,7 @@
>  #include "svec.h"
>  #include "openvswitch/vlog.h"
>  #include "flow.h"
> +#include "userspace-tso.h"
>  #include "util.h"
>  #ifdef __linux__
>  #include "tc.h"
> @@ -66,6 +68,7 @@ COVERAGE_DEFINE(netdev_received);
>  COVERAGE_DEFINE(netdev_sent);
>  COVERAGE_DEFINE(netdev_add_router);
>  COVERAGE_DEFINE(netdev_get_stats);
> +COVERAGE_DEFINE(netdev_send_tcp_seg_drops);

This coverage counter is not used, as flagged by the CI:
https://mail.openvswitch.org/pipermail/ovs-build/2022-July/023119.html



>  COVERAGE_DEFINE(netdev_send_prepare_drops);
>  COVERAGE_DEFINE(netdev_push_header_drops);
>


-- 
David Marchand

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to