On Tue, 28 May 2019 19:06:21 +0200, Björn Töpel wrote: > On Wed, 22 May 2019 at 20:32, Jakub Kicinski wrote: > > You should be able to just call install with the original flags, and > > install handler should do the right maths again to direct it either to > > drv or generic, no? > > > > On a related note: I ran the test_offload.py test (thanks for pointing > that out!), and realized that my view of load flags was incorrect. To > double-check: > > Given an XDP DRV capable netdev "eth0". > > # ip link set dev eth0 xdp obj foo.o sec .text > # ip link set dev eth0 xdpdrv off > > and > > # ip link set dev eth0 xdpdrv obj foo.o sec .text > # ip link set dev eth0 xdp off > > and > > # ip link set dev eth0 xdpdrv obj foo.o sec .text > # ip link -force set dev eth0 xdp obj foo.o sec .text > > and > > # ip link set dev eth0 xdp obj foo.o sec .text > # ip link -force set dev eth0 xdpdrv obj foo.o sec .text > > Should all fail. IOW, there's a distinction between explicit DRV and > auto-detected DRV? It's considered to be different flags. > > Correct? I think so. That's the way drivers which implement offloads work (netdevsim and nfp). However: ip link set dev eth0 xdpdrv obj foo.o sec .text ip link set dev eth0 xdpoffload off ip link set dev eth0 xdpgeneric off are fine. It's just the no flag case that's special, to avoid confusion. If one always uses the flags there should be no errors. > This was *not* my view. :-)