On Sun, Feb 15, 2026 at 02:06:42PM +0100, Florian Westphal wrote: > Jakub Kicinski wrote: > > On Fri, 13 Feb 2026 12:30:58 +0100 Florian Westphal wrote: > > > > > Looking at the *upper layer*, I don't think it expected drivers to use > > > > > a single global list for this bit something that is scoped to the > > > > > net_device. > > > > > > > > Maybe subjective but the fix seems a little off to me. > > > > Isn't flow_block_cb_setup_simple() just a "simple" implementation > > > > for reuse in drivers locking in there doesn't really guarantee much? > > > > > > Not sure what you mean. I see the same pattern as netdevsim in all > > > drivers using this API. > > > > Grep for flow_block_cb_add(). Not all drivers use > > static int > mtk_eth_setup_tc_block(struct net_device *dev, struct flow_block_offload *f) > { > struct mtk_mac *mac = netdev_priv(dev); > struct mtk_eth *eth = mac->hw; > static LIST_HEAD(block_cb_list); > ~~~~~~ > I have a question. > > [..] > f->driver_block_list = &block_cb_list; > > Now I have many questions! > > How is this supposed to work? Last time I met people, I asked how is hw offload actually working with netns (6 years ago?), someone told me: "maybe there is a driver that supports it...". I have never seen one, but I am very much outdates on how this has evolved TBH, I might be wrong. I don't think any driver really supports netns + hardware offload, so I suggest to restrict it, see attached patch. It would be better to add a helper function such as int net_setup_tc() for the myriad of ->ndo_setup_tc() calls in the code, then move this check in it to consolidate, but I think you want something you can pass to -stable at this stage?