From: Stanislav Fomichev <stfomichev@gmail.com>
To: Mina Almasry <almasrymina@google.com>
Cc: Stanislav Fomichev <sdf@fomichev.me>,
netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com
Subject: Re: [PATCH net-next v2 08/12] selftests: ncdevmem: Use YNL to enable TCP header split
Date: Thu, 3 Oct 2024 09:57:42 -0700 [thread overview]
Message-ID: <Zv7NBlVAck9v0Shd@mini-arch> (raw)
In-Reply-To: <CAHS8izMm8kibMU912thkhB9WC=z6SrkfqAkvXeW6Tj9UsGrQSg@mail.gmail.com>
On 10/03, Mina Almasry wrote:
> On Mon, Sep 30, 2024 at 10:18 AM Stanislav Fomichev <sdf@fomichev.me> wrote:
> >
> > In the next patch the hard-coded queue numbers are gonna be removed.
> > So introduce some initial support for ethtool YNL and use
> > it to enable header split.
> >
> > Also, tcp-data-split requires latest ethtool which is unlikely
> > to be present in the distros right now.
> >
> > (ideally, we should not shell out to ethtool at all).
> >
> > Cc: Mina Almasry <almasrymina@google.com>
> > Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
> > ---
> > tools/testing/selftests/net/Makefile | 2 +-
> > tools/testing/selftests/net/ncdevmem.c | 43 ++++++++++++++++++++++++--
> > 2 files changed, 42 insertions(+), 3 deletions(-)
> >
> > diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
> > index 649f1fe0dc46..9c970e96ed33 100644
> > --- a/tools/testing/selftests/net/Makefile
> > +++ b/tools/testing/selftests/net/Makefile
> > @@ -112,7 +112,7 @@ TEST_INCLUDES := forwarding/lib.sh
> > include ../lib.mk
> >
> > # YNL build
> > -YNL_GENS := netdev
> > +YNL_GENS := ethtool netdev
> > include ynl.mk
> >
> > $(OUTPUT)/epoll_busy_poll: LDLIBS += -lcap
> > diff --git a/tools/testing/selftests/net/ncdevmem.c b/tools/testing/selftests/net/ncdevmem.c
> > index 48cbf057fde7..a1fa818c8229 100644
> > --- a/tools/testing/selftests/net/ncdevmem.c
> > +++ b/tools/testing/selftests/net/ncdevmem.c
> > @@ -28,10 +28,12 @@
> > #include <linux/netlink.h>
> > #include <linux/genetlink.h>
> > #include <linux/netdev.h>
> > +#include <linux/ethtool_netlink.h>
> > #include <time.h>
> > #include <net/if.h>
> >
> > #include "netdev-user.h"
> > +#include "ethtool-user.h"
> > #include <ynl.h>
> >
> > #define PAGE_SHIFT 12
> > @@ -217,8 +219,42 @@ static int reset_flow_steering(void)
> >
> > static int configure_headersplit(bool on)
> > {
> > - return run_command("sudo ethtool -G %s tcp-data-split %s >&2", ifname,
> > - on ? "on" : "off");
> > + struct ethtool_rings_set_req *req;
> > + struct ynl_error yerr;
> > + struct ynl_sock *ys;
> > + int ret;
> > +
> > + ys = ynl_sock_create(&ynl_ethtool_family, &yerr);
> > + if (!ys) {
> > + fprintf(stderr, "YNL: %s\n", yerr.msg);
> > + return -1;
> > + }
> > +
> > + req = ethtool_rings_set_req_alloc();
> > + ethtool_rings_set_req_set_header_dev_index(req, ifindex);
> > + ethtool_rings_set_req_set_tcp_data_split(req, on ? 2 : 0);
>
> I'm guessing 2 is explicit on? 1 being auto probably? A comment would
> be nice, but that's just a nit.
Sure, will add.
> > + ret = ethtool_rings_set(ys, req);
> > + if (ret < 0)
> > + fprintf(stderr, "YNL failed: %s\n", ys->err.msg);
>
> Don't you wanna return ret; here on error?
Good point. Will add 'if (ret == 0)' to the get request.
> > + ethtool_rings_set_req_free(req);
> > +
> > + {
> > + struct ethtool_rings_get_req *req;
> > + struct ethtool_rings_get_rsp *rsp;
> > +
>
> I'm guessing you're creating a new scope to re-declare req/rsp? To be
> honest it's a bit weird style I haven't seen anywhere else. I would
> prefer get_req and get_rsp instead, but this is a nit.
SG.
> > + req = ethtool_rings_get_req_alloc();
> > + ethtool_rings_get_req_set_header_dev_index(req, ifindex);
> > + rsp = ethtool_rings_get(ys, req);
> > + ethtool_rings_get_req_free(req);
> > + if (rsp)
> > + fprintf(stderr, "TCP header split: %d\n",
> > + rsp->tcp_data_split);
>
> I would prefer to cehck that rsp->tcp_data_split == 2 for 'on' and ==
> 0 for 'off' instead of just printing and relying on the user to notice
> the mismatch in the logs.
Will do, thanks!
> Consider addressing the feedback, but mostly nits/improvements that
> can be done later, so:
>
> Reviewed-by: Mina Almasry <almasrymina@google.com>
next prev parent reply other threads:[~2024-10-03 16:57 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-30 17:17 [PATCH net-next v2 00/12] selftests: ncdevmem: Add ncdevmem to ksft Stanislav Fomichev
2024-09-30 17:17 ` [PATCH net-next v2 01/12] selftests: ncdevmem: Redirect all non-payload output to stderr Stanislav Fomichev
2024-10-03 17:40 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 02/12] selftests: ncdevmem: Separate out dmabuf provider Stanislav Fomichev
2024-10-03 17:57 ` Mina Almasry
2024-10-03 22:08 ` Stanislav Fomichev
2024-10-04 1:42 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 03/12] selftests: ncdevmem: Unify error handling Stanislav Fomichev
2024-10-03 6:57 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 04/12] selftests: ncdevmem: Make client_ip optional Stanislav Fomichev
2024-10-03 6:56 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 05/12] selftests: ncdevmem: Remove default arguments Stanislav Fomichev
2024-10-03 6:59 ` Mina Almasry
2024-10-03 16:36 ` Stanislav Fomichev
2024-10-03 18:51 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 06/12] selftests: ncdevmem: Switch to AF_INET6 Stanislav Fomichev
2024-10-03 7:07 ` Mina Almasry
2024-10-03 16:47 ` Stanislav Fomichev
2024-10-03 17:16 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 07/12] selftests: ncdevmem: Properly reset flow steering Stanislav Fomichev
2024-10-03 7:02 ` Mina Almasry
2024-10-03 16:42 ` Stanislav Fomichev
2024-10-03 18:54 ` Mina Almasry
2024-10-03 22:12 ` Stanislav Fomichev
2024-09-30 17:17 ` [PATCH net-next v2 08/12] selftests: ncdevmem: Use YNL to enable TCP header split Stanislav Fomichev
2024-10-03 7:22 ` Mina Almasry
2024-10-03 16:57 ` Stanislav Fomichev [this message]
2024-09-30 17:17 ` [PATCH net-next v2 09/12] selftests: ncdevmem: Remove hard-coded queue numbers Stanislav Fomichev
2024-10-03 7:14 ` Mina Almasry
2024-10-03 17:02 ` Stanislav Fomichev
2024-10-03 19:07 ` Mina Almasry
2024-10-03 22:16 ` Stanislav Fomichev
2024-09-30 17:17 ` [PATCH net-next v2 10/12] selftests: ncdevmem: Run selftest when none of the -s or -c has been provided Stanislav Fomichev
2024-10-03 7:26 ` Mina Almasry
2024-10-03 17:18 ` Stanislav Fomichev
2024-10-03 19:10 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 11/12] selftests: ncdevmem: Move ncdevmem under drivers/net/hw Stanislav Fomichev
2024-10-03 7:29 ` Mina Almasry
2024-10-03 17:25 ` Stanislav Fomichev
2024-10-03 19:16 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 12/12] selftests: ncdevmem: Add automated test Stanislav Fomichev
2024-10-03 7:39 ` Mina Almasry
2024-10-03 17:47 ` Stanislav Fomichev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zv7NBlVAck9v0Shd@mini-arch \
--to=stfomichev@gmail.com \
--cc=almasrymina@google.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.