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
