Hello, On Fri, 2021-11-26 at 19:57 +0100, Paolo Abeni wrote: > On Fri, 2021-11-26 at 10:19 -0800, Jakub Kicinski wrote: > > On Fri, 26 Nov 2021 12:19:11 +0100 Paolo Abeni wrote: > > > -void bpf_warn_invalid_xdp_action(u32 act) > > > +void bpf_warn_invalid_xdp_action(struct net_device *dev, struct bpf_prog *prog, u32 act) > > > { > > > const u32 act_max = XDP_REDIRECT; > > > > > > - pr_warn_once("%s XDP return value %u, expect packet loss!\n", > > > + pr_warn_once("%s XDP return value %u on prog %s (id %d) dev %s, expect packet loss!\n", > > > act > act_max ? "Illegal" : "Driver unsupported", > > > - act); > > > + act, prog->aux->name, prog->aux->id, dev->name ? dev->name : ""); > > > } > > > > Since we have to touch all the drivers each time the prototype of this > > function is changed - would it make sense to pass in rxq instead? It has > > more info which may become useful at some point. > > I *think* for this specific scenario the device name provides all the > necessary info - the users need to know the driver causing the issue. > > Others similar xdp helpers - e.g. trace_xdp_exception() - have the same > arguments list used here. If the rxq is useful I guess we will have to > change even them, and touch all the drivers anyway. Following the above reasoning I'm going to post v3 with the same argument list used here, unless someone stops me soon ;) Thanks, Paolo