On Thu, Jul 7, 2022 at 7:03 AM David Marchand <[email protected]> wrote: > > 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?
Yes, sorry about that. The patches mostly kept the original messages, this one should have gotten a new message as it was tested and modified. > > > > 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 > My bad, these were used briefly during the testing process, but are no longer relevant and will be removed in the next revision. > > > > COVERAGE_DEFINE(netdev_send_prepare_drops); > > COVERAGE_DEFINE(netdev_push_header_drops); > > > > > -- > David Marchand > Cheers, M _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
