On Sat, 5 Feb 2022 21:36:05 +0100 Sebastian Andrzej Siewior wrote: > On 2022-02-04 20:17:15 [-0800], Jakub Kicinski wrote: > > On Fri, 4 Feb 2022 21:12:58 +0100 Sebastian Andrzej Siewior wrote: > > > +int __netif_rx(struct sk_buff *skb) > > > +{ > > > + int ret; > > > + > > > + trace_netif_rx_entry(skb); > > > + ret = netif_rx_internal(skb); > > > + trace_netif_rx_exit(ret); > > > + return ret; > > > +} > > > > Any reason this is not exported? I don't think there's anything wrong > > with drivers calling this function, especially SW drivers which already > > know to be in BH. I'd vote for roughly all of $(ls drivers/net/*.c) to > > get the same treatment as loopback. > > Don't we end up in the same situation as netif_rx() vs netix_rx_ni()? Sort of. TBH my understanding of the motivation is a bit vague. IIUC you want to reduce the API duplication so drivers know what to do[1]. I believe the quote from Eric you put in the commit message pertains to HW devices, where using netif_rx() is quite anachronistic. But software devices like loopback, veth or tunnels may want to go via backlog for good reasons. Would it make it better if we called netif_rx() netif_rx_backlog() instead? Or am I missing the point?