From: Hangbin Liu <liuhangbin@gmail.com>
To: Nikolay Aleksandrov <razor@blackwall.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>,
netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Alexei Starovoitov <ast@kernel.org>,
Jesper Dangaard Brouer <hawk@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
Jiri Pirko <jiri@resnulli.us>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Lorenzo Bianconi <lorenzo@kernel.org>,
Andrii Nakryiko <andriin@fb.com>, Jussi Maki <joamaki@gmail.com>,
Jay Vosburgh <jv@jvosburgh.net>,
linux-kernel@vger.kernel.org, bpf@vger.kernel.org,
Liang Li <liali@redhat.com>
Subject: Re: [PATCH net] bpf: xdp: fallback to SKB mode if DRV flag is absent.
Date: Tue, 15 Oct 2024 10:38:44 +0000 [thread overview]
Message-ID: <Zw5GNHSjgut12LEV@fedora> (raw)
In-Reply-To: <2cdcad89-2677-4526-8ab5-3624d0300b7f@blackwall.org>
On Tue, Oct 15, 2024 at 12:53:08PM +0300, Nikolay Aleksandrov wrote:
> On 15/10/2024 11:17, Daniel Borkmann wrote:
> > On 10/15/24 5:36 AM, Hangbin Liu wrote:
> >> After commit c8a36f1945b2 ("bpf: xdp: Fix XDP mode when no mode flags
> >> specified"), the mode is automatically set to XDP_MODE_DRV if the driver
> >> implements the .ndo_bpf function. However, for drivers like bonding, which
> >> only support native XDP for specific modes, this may result in an
> >> "unsupported" response.
> >>
> >> In such cases, let's fall back to SKB mode if the user did not explicitly
> >> request DRV mode.
> >>
>
> So behaviour changed once, now it's changing again..
This should not be a behaviour change, it just follow the fallback rules.
> IMO it's better to explicitly
> error out and let the user decide how to resolve the situation.
The user feels confused and reported a bug. Because cmd
`ip link set bond0 xdp obj xdp_dummy.o section xdp` failed with "Operation
not supported" in stead of fall back to xdpgeneral mode.
> The above commit
> is 4 years old, surely everyone is used to the behaviour by now. If you insist
> to do auto-fallback, then at least I'd go with Daniel's suggestion and do it
> in the bonding device. Maybe it can return -EFALLBACK, or some other way to
> signal the caller and change the mode, but you assume that's what the user
> would want, maybe it is and maybe it's not - that is why I'd prefer the
> explicit error so conscious action can be taken to resolve the situation.
>
> That being said, I don't have a strong preference, just my few cents. :)
>
> >> Fixes: c8a36f1945b2 ("bpf: xdp: Fix XDP mode when no mode flags specified")
> >> Reported-by: Liang Li <liali@redhat.com>
> >> Closes: https://issues.redhat.com/browse/RHEL-62339
> >
> > nit: The link is not accessible to the public.
I made it public now.
> >
> > Also, this breaks BPF CI with regards to existing bonding selftest :
> >
> > https://github.com/kernel-patches/bpf/actions/runs/11340153361/job/31536275257
The following should fix the selftest error.
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 18d1314fa797..0c380558a25d 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -5705,7 +5705,7 @@ static int bond_xdp_set(struct net_device *dev, struct bpf_prog *prog,
if (dev_xdp_prog_count(slave_dev) > 0) {
SLAVE_NL_ERR(dev, slave_dev, extack,
"Slave has XDP program loaded, please unload before enslaving");
- err = -EOPNOTSUPP;
+ err = -EEXIST;
goto err;
}
But it doesn't solve the problem if the slave has xdp program loaded while
using an unsupported bond mode, which will return too early.
If there is not other driver has this problem. I can try fix this on
bonding side.
Thanks
Hangbin
next prev parent reply other threads:[~2024-10-15 10:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-15 3:36 [PATCH net] bpf: xdp: fallback to SKB mode if DRV flag is absent Hangbin Liu
2024-10-15 8:17 ` Daniel Borkmann
2024-10-15 9:53 ` Nikolay Aleksandrov
2024-10-15 10:38 ` Hangbin Liu [this message]
2024-10-15 10:46 ` Nikolay Aleksandrov
2024-10-15 10:55 ` Nikolay Aleksandrov
2024-10-15 11:31 ` Hangbin Liu
2024-10-15 15:51 ` Jakub Kicinski
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=Zw5GNHSjgut12LEV@fedora \
--to=liuhangbin@gmail.com \
--cc=andriin@fb.com \
--cc=ast@kernel.org \
--cc=bigeasy@linutronix.de \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=jiri@resnulli.us \
--cc=joamaki@gmail.com \
--cc=john.fastabend@gmail.com \
--cc=jv@jvosburgh.net \
--cc=kuba@kernel.org \
--cc=liali@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lorenzo@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).