Subject: Re: [PATCH bpf-next v4 5/7] samples/bpf: Add a "force" flag to XDP samples

From: Maciej Fijalkowski <[email-masked]>
Date: Wed, 30 Jan 2019 19:12:48 +0100

On Tue, 29 Jan 2019 12:34:05 +0100
Jesper Dangaard Brouer <[email-masked]> wrote:

> On Tue, 29 Jan 2019 09:00:00 +0100
> Jesper Dangaard Brouer <[email-masked]> wrote:
> 
> > On Mon, 28 Jan 2019 20:16:11 +0100
> > Maciej Fijalkowski <[email-masked]> wrote:
> >   
> > > From: Maciej Fijalkowski <[email-masked]>
> > > 
> > > Make xdp samples consistent with iproute2 behavior and set the
> > > XDP_FLAGS_UPDATE_IF_NOEXIST by default when setting the xdp program on
> > > interface. Provide an option for user to force the program loading,
> > > which as a result will not include the mentioned flag in
> > > bpf_set_link_xdp_fd call.    
> > 
> > I like the idea, but what is the error message users get after this
> > change?  
> 
> $ sudo ./xdp1 mlx5p1 &
> [1] 9768
> 
> $ sudo ./xdp1 mlx5p1 
> link set xdp fd failed
> 
> This error message is a little too generic to be a good user experience.
> The kernel (in dev_change_xdp_fd) will return errno -EBUSY (-16), but
> we don't use or report the return value in these sample programs.
> 
> If my QA see this error message, I will still get an error report
> bugzilla that I need to spend time on investigating.  Can we please
> improve this error message? 
> 
> If you are really cool you get inspired by (or use) libbpf_strerror()
> code avail in tools/lib/bpf/libbpf_errno.c.  Default strerror(EBUSY)
> will return "Device or resource busy", but maybe we can do slightly
> better and report something more meaningful for this XDP context.
> 
I'll post a v5 with libbpf_strerror() usage when bpf_set_link_xdp_fd failed in
samples but at this point it will only give us a standard "device or resource
busy" error, so if we need some more meaningful message that libbpf will give
us then I guess we need to define a new libbpf_errno entry (as well as entry in
libbpf_strerror_table for this new errno value) and set the errno in
bpf_set_link_xdp_fd in case of a failure?