| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- From c88eb6f4e9b2d8f71f3391db2bf0ec82ecccae81 Mon Sep 17 00:00:00 2001
- From: Daniel Golle <[email protected]>
- Date: Wed, 12 Feb 2025 04:12:42 +0000
- Subject: [PATCH] ethtool: make building for RSS input xfrm optional
- Unfortunately there is no way to detect at runtime if the kernel the
- support for RSS input transformation, and the default value
- RXH_XFRM_NO_CHANGE (0xff) used by newer ethtool results in breakage
- with older kernels.
- As a stop-gap solution simply don't compile with support for input
- xfrm by default.
- Signed-off-by: Daniel Golle <[email protected]>
- ---
- configure.ac | 10 ++++++++++
- ethtool.c | 10 ++++++++++
- 2 files changed, 20 insertions(+)
- --- a/configure.ac
- +++ b/configure.ac
- @@ -45,6 +45,16 @@ if test x$enable_pretty_dump = xyes; the
- fi
- AM_CONDITIONAL([ETHTOOL_ENABLE_PRETTY_DUMP], [test x$enable_pretty_dump = xyes])
-
- +AC_ARG_ENABLE(rss-input-xfrm,
- + [ --enable-rss-input-xfrm build with support for RSS input transformation (disabled by default)],
- + ,
- + enable_rss_input_xfrm=no)
- +if test x$enable_rss_input_xfrm = xyes; then
- + AC_DEFINE(ETHTOOL_ENABLE_RSS_INPUT_XFRM, 1,
- + [Define this to enable building with support for RSS input transformation.])
- +fi
- +AM_CONDITIONAL([ETHTOOL_ENABLE_RSS_INPUT_XFRM], [test x$enable_rss_input_xfrm = xyes])
- +
- AC_ARG_WITH([bash-completion-dir],
- AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
- [Install the bash-completion script in this directory. @<:@default=yes@:>@]),
- --- a/ethtool.c
- +++ b/ethtool.c
- @@ -4170,7 +4170,7 @@ static int do_grxfh(struct cmd_context *
- }
- if (rss->hfunc)
- printf(" Unknown hash function: 0x%x\n", rss->hfunc);
- -
- +#ifdef ETHTOOL_ENABLE_RSS_INPUT_XFRM
- printf("RSS input transformation:\n");
- printf(" symmetric-xor: %s\n",
- (rss->input_xfrm & RXH_XFRM_SYM_XOR) ? "on" : "off");
- @@ -4182,6 +4182,7 @@ static int do_grxfh(struct cmd_context *
- if (rss->input_xfrm)
- printf(" Unknown bits in RSS input transformation: 0x%x\n",
- rss->input_xfrm);
- +#endif
-
- out:
- free(hfuncs);
- @@ -4503,7 +4504,15 @@ static int do_srxfh(struct cmd_context *
- rss->cmd = ETHTOOL_SRSSH;
- rss->rss_context = rss_context;
- rss->hfunc = req_hfunc;
- +#ifdef ETHTOOL_ENABLE_RSS_INPUT_XFRM
- rss->input_xfrm = req_input_xfrm;
- +#else
- + if (req_input_xfrm != 0xff) {
- + perror("Compiled for kernel without support for input transformation");
- + err = 1;
- + goto free;
- + }
- +#endif
- if (delete) {
- rss->indir_size = rss->key_size = 0;
- } else {
|