At the moment, ethtool falls back to ioctl implementation whenever either
in response to request type not implemented in kernel or netlink interface
is unavailable or netlink request fails with EOPNOTSUPP error code. This is
not perfect as EOPNOTSUPP can have different meanings and we only want to
fall back if it is caused by kernel lacking netlink implementation of the
request. In other cases, we would needlessly repeat the same failure trying
both netlink and ioctl.

These two patches improve the logic to avoid such duplicate failures and
improve handling of cases where fallback to ioctl is impossible for other
reasons (e.g. wildcard device name or no ioctl handler).

Michal Kubecek (2):
  refactor interface between ioctl and netlink code
  netlink: use genetlink ops information to decide about fallback

 ethtool.c          |  51 +++---------
 netlink/extapi.h   |  14 ++--
 netlink/monitor.c  |  15 +++-
 netlink/netlink.c  | 193 ++++++++++++++++++++++++++++++++++++++-------
 netlink/netlink.h  |   6 ++
 netlink/parser.c   |   7 ++
 netlink/settings.c |   7 ++
 7 files changed, 220 insertions(+), 73 deletions(-)

-- 
2.26.2

Reply via email to