[libvirt] [PATCH 2/7] configure.ac: drop checks for ETH flags

Laine Stump laine at laine.org
Thu Aug 18 05:17:23 UTC 2016


On 08/03/2016 12:20 PM, Ján Tomko wrote:
> No choices are made at configure time based on these checks.

AC_CHECK_DECLS doesn't make sense if you're using it to check for a 
#defined name just so you can use the new name that is #defined as a 
result of the check. That's what's being done here with ETHTOOL_*, so 
those are pointless.

However, it *can* be useful if you want to check for existence of a 
function name, global data name, data type, or enum value at compile 
time (since those *can't* be directly checked with #ifdef - it will 
always return false). That's what's being done with ETH_FLAG_* (they are 
all enum values), so I think those have to stay (if you apply this 
patch, you end up trying to check for them directly with #ifdef, and the 
result is that several of the items are omitted from the 
virNetDevEthtoolFeatureCmd flags array).


> Drop them and use #ifdefs in virnetdev.c.
> ---
>   configure.ac         |  5 -----
>   src/util/virnetdev.c | 20 ++++++++++----------
>   2 files changed, 10 insertions(+), 15 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 8d7d63e..db42173 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -402,11 +402,6 @@ AC_CHECK_TYPE([struct sockpeercred],
>     [], [[#include <sys/socket.h>
>     ]])
>   
> -AC_CHECK_DECLS([ETH_FLAG_TXVLAN, ETH_FLAG_NTUPLE, ETH_FLAG_RXHASH, ETH_FLAG_LRO,
> -                ETHTOOL_GGSO, ETHTOOL_GGRO, ETHTOOL_GFLAGS, ETHTOOL_GFEATURES],
> -  [], [], [[#include <linux/ethtool.h>
> -  ]])
> -
>   dnl Our only use of libtasn1.h is in the testsuite, and can be skipped
>   dnl if the header is not present.  Assume -ltasn1 is present if the
>   dnl header could be found.
> diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
> index fa695d4..c3a35bb 100644
> --- a/src/util/virnetdev.c
> +++ b/src/util/virnetdev.c
> @@ -85,7 +85,7 @@ VIR_LOG_INIT("util.netdev");
>   #endif
>   
>   #define RESOURCE_FILE_LEN 4096
> -#if HAVE_DECL_ETHTOOL_GFEATURES
> +#ifdef ETHTOOL_GFEATURES
>   # define TX_UDP_TNL 25
>   # define GFEATURES_SIZE 2
>   # define FEATURE_WORD(blocks, index, field)  ((blocks)[(index) / 32U].field)
> @@ -2446,28 +2446,28 @@ virNetDevGetEthtoolFeatures(virBitmapPtr bitmap,
>           {ETHTOOL_GTXCSUM, VIR_NET_DEV_FEAT_GTXCSUM},
>           {ETHTOOL_GSG, VIR_NET_DEV_FEAT_GSG},
>           {ETHTOOL_GTSO, VIR_NET_DEV_FEAT_GTSO},
> -# if HAVE_DECL_ETHTOOL_GGSO
> +# ifdef ETHTOOL_GGSO
>           {ETHTOOL_GGSO, VIR_NET_DEV_FEAT_GGSO},
>   # endif
> -# if HAVE_DECL_ETHTOOL_GGRO
> +# ifdef ETHTOOL_GGRO
>           {ETHTOOL_GGRO, VIR_NET_DEV_FEAT_GGRO},
>   # endif
>       };
>   
> -# if HAVE_DECL_ETHTOOL_GFLAGS
> +# ifdef ETHTOOL_GFLAGS
>       /* ethtool masks */
>       struct virNetDevEthtoolFeatureCmd flags[] = {
> -#  if HAVE_DECL_ETH_FLAG_LRO
> +#  ifdef ETH_FLAG_LRO
>           {ETH_FLAG_LRO, VIR_NET_DEV_FEAT_LRO},
>   #  endif
> -#  if HAVE_DECL_ETH_FLAG_TXVLAN
> +#  ifdef ETH_FLAG_TXVLAN
>           {ETH_FLAG_RXVLAN, VIR_NET_DEV_FEAT_RXVLAN},
>           {ETH_FLAG_TXVLAN, VIR_NET_DEV_FEAT_TXVLAN},
>   #  endif
> -#  if HAVE_DECL_ETH_FLAG_NTUBLE
> +#  ifdef ETH_FLAG_NTUPLE
>           {ETH_FLAG_NTUPLE, VIR_NET_DEV_FEAT_NTUPLE},
>   #  endif
> -#  if HAVE_DECL_ETH_FLAG_RXHASH
> +#  ifdef ETH_FLAG_RXHASH
>           {ETH_FLAG_RXHASH, VIR_NET_DEV_FEAT_RXHASH},
>   #  endif
>       };
> @@ -2479,7 +2479,7 @@ virNetDevGetEthtoolFeatures(virBitmapPtr bitmap,
>               ignore_value(virBitmapSetBit(bitmap, ethtool_cmds[i].feat));
>       }
>   
> -# if HAVE_DECL_ETHTOOL_GFLAGS
> +# ifdef ETHTOOL_GFLAGS
>       cmd.cmd = ETHTOOL_GFLAGS;
>       if (virNetDevFeatureAvailable(fd, ifr, &cmd)) {
>           for (i = 0; i < ARRAY_CARDINALITY(flags); i++) {
> @@ -2491,7 +2491,7 @@ virNetDevGetEthtoolFeatures(virBitmapPtr bitmap,
>   }
>   
>   
> -# if HAVE_DECL_ETHTOOL_GFEATURES
> +# ifdef ETHTOOL_GFEATURES
>   /**
>    * virNetDevGFeatureAvailable
>    * This function checks for the availability of a network device gfeature





More information about the libvir-list mailing list