Comment 1 for bug 1750989

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Hi,
this is interesting.
Thanks for the ping.

Note: this needs no PPC or any other special arch, a VM guest is enough to test it.

Up until very recently we were still on kernel 4.13 where this did not occur.

With 4.13 - starting both off:
$ sudo ethtool -k ens3 | egrep 'udp-fragmentation-offload|generic-receive-offload'
  udp-fragmentation-offload: off
  generic-receive-offload: off
$ sudo ethtool -K ens3 gro on
$ sudo ethtool -k ens3 | egrep 'udp-fragmentation-offload|generic-receive-offload'
  udp-fragmentation-offload: off
  generic-receive-offload: on
$ sudo ethtool -K ens3 ufo on
$ sudo ethtool -k ens3 | egrep 'udp-fragmentation-offload|generic-receive-offload'
  udp-fragmentation-offload: on
  generic-receive-offload: on

So all was just fine.

ethtool release is rather tied to kernel version releases for just this reason.
But there was no update (yet) and we are on 4.11 for now.
Due to that the https://patchwork.ozlabs.org/patch/806563/ is missing still.

It is important that this is ONLY a warning and things work just fine.
Obviously setting UFO will fail, but setting GRO works (aside the annoying error messages).
So GRO is not functionally affected, it is just the older ethtool that tries to probe the related UFO and fails on that.

This is also the reason that upstream ONLY disabled the warning (but kept all else).

Therefore on 4.15 it behaves like this:
$ sudo ethtool -k ens3 | egrep 'udp-fragmentation-offload|generic-receive-offload'
  Cannot get device udp-fragmentation-offload settings: Operation not supported
  udp-fragmentation-offload: off
  generic-receive-offload: off
$ sudo ethtool -K ens3 gro on
  Cannot get device udp-fragmentation-offload settings: Operation not supported
  Cannot get device udp-fragmentation-offload settings: Operation not supported
$ echo $?
  0
$ sudo ethtool -k ens3 | egrep 'udp-fragmentation-offload|generic-receive-offload'
  Cannot get device udp-fragmentation-offload settings: Operation not supported
  udp-fragmentation-offload: off
  generic-receive-offload: on

So other than the warning it worked.
UFO doesn't of course.

$ sudo ethtool -K ens3 ufo on
  Cannot get device udp-fragmentation-offload settings: Operation not supported
  Cannot change udp-fragmentation-offload
  Cannot get device udp-fragmentation-offload settings: Operation not supported
  Could not change any device features
$ echo $?
  1
$ sudo ethtool -k ens3 | egrep 'udp-fragmentation-offload|generic-receive-offload'
  Cannot get device udp-fragmentation-offload settings: Operation not supported
  udp-fragmentation-offload: off
  generic-receive-offload: on

That said we have two options now:
1. we can pick the change from upstream and be good in regard to this bug.
   This can also be done post Feature Freeze as it is a bug fix.
2. We actually should - as we did with iproute2 recently - tie ethtool versions to kernel
   uploads. It is so dependent on the actual kernel, and might even more special for kernel
   backports, hwe kernels and so on.
   For example this will trigger on Xenial with a 4.15 HWE as well at some point.

I'll try to look into the doability of an ethtool 4.15 right now, but would like to ask the kernel Team to (eventually) adopt ethtool to their list of "kernelversion-related-uploads"