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.