From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 47B4D1B115 for ; Wed, 24 Oct 2018 12:10:28 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Oct 2018 03:10:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,420,1534834800"; d="scan'208";a="100240893" Received: from silpixa00399752.ir.intel.com (HELO silpixa00399752.ger.corp.intel.com) ([10.237.222.212]) by fmsmga004.fm.intel.com with ESMTP; 24 Oct 2018 03:10:26 -0700 From: Ferruh Yigit To: Ferruh Yigit Cc: dev@dpdk.org, stephen@networkplumber.org Date: Wed, 24 Oct 2018 12:10:10 +0100 Message-Id: <20181024111010.15568-1-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20181024105443.57063-1-ferruh.yigit@intel.com> References: <20181024105443.57063-1-ferruh.yigit@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2] kni: fix build for Linux kernel 4.19 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Oct 2018 10:10:28 -0000 The build error observed with Linux kernel 4.19 when KNI ethtool support enabled (CONFIG_RTE_KNI_KMOD_ETHTOOL=y) .../build/build/kernel/linux/kni/kni_ethtool.c:193:3: error: ‘struct ethtool_ops’ has no member named ‘get_settings’; .get_settings = kni_get_settings, ^~~~~~~~~~~~ .../build/build/kernel/linux/kni/kni_ethtool.c:194:3: error: ‘struct ethtool_ops’ has no member named ‘set_settings’; .set_settings = kni_set_settings, ^~~~~~~~~~~~ With kernel 4.19 ethtool_ops `get_settings` & `set_settings` are replaced with `get_link_ksettings` & `set_link_ksettings` Commit 9b3004953503 ("ethtool: drop get_settings and set_settings callbacks") This fix practically removes `get_settings` & `set_settings` support for the kernel versions that have the new ethtool_ops without implementing the new ones. Signed-off-by: Ferruh Yigit --- v2: * fix defines * disable driver ethtool_ops too --- kernel/linux/kni/ethtool/igb/igb_ethtool.c | 8 ++++++++ kernel/linux/kni/ethtool/ixgbe/ixgbe.h | 2 ++ kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c | 8 ++++++++ kernel/linux/kni/kni_ethtool.c | 10 ++++++++++ 4 files changed, 28 insertions(+) diff --git a/kernel/linux/kni/ethtool/igb/igb_ethtool.c b/kernel/linux/kni/ethtool/igb/igb_ethtool.c index 002f75c48..b6bddc025 100644 --- a/kernel/linux/kni/ethtool/igb/igb_ethtool.c +++ b/kernel/linux/kni/ethtool/igb/igb_ethtool.c @@ -135,6 +135,7 @@ static const char igb_gstrings_test[][ETH_GSTRING_LEN] = { #define IGB_TEST_LEN (sizeof(igb_gstrings_test) / ETH_GSTRING_LEN) #endif /* ETHTOOL_TEST */ +#ifndef ETHTOOL_GLINKSETTINGS static int igb_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct igb_adapter *adapter = netdev_priv(netdev); @@ -259,7 +260,9 @@ static int igb_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) #endif /* ETH_TP_MDI_X */ return 0; } +#endif +#ifndef ETHTOOL_SLINKSETTINGS static int igb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct igb_adapter *adapter = netdev_priv(netdev); @@ -364,6 +367,7 @@ static int igb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) clear_bit(__IGB_RESETTING, &adapter->state); return 0; } +#endif static u32 igb_get_link(struct net_device *netdev) { @@ -2737,8 +2741,12 @@ static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd) #endif /* ETHTOOL_GRXRINGS */ static const struct ethtool_ops igb_ethtool_ops = { +#ifndef ETHTOOL_GLINKSETTINGS .get_settings = igb_get_settings, +#endif +#ifndef ETHTOOL_SLINKSETTINGS .set_settings = igb_set_settings, +#endif .get_drvinfo = igb_get_drvinfo, .get_regs_len = igb_get_regs_len, .get_regs = igb_get_regs, diff --git a/kernel/linux/kni/ethtool/ixgbe/ixgbe.h b/kernel/linux/kni/ethtool/ixgbe/ixgbe.h index 6ff941334..cc15ec6ab 100644 --- a/kernel/linux/kni/ethtool/ixgbe/ixgbe.h +++ b/kernel/linux/kni/ethtool/ixgbe/ixgbe.h @@ -890,8 +890,10 @@ s32 ixgbe_dcb_hw_ets(struct ixgbe_hw *hw, struct ieee_ets *ets, int max_frame); #endif /* CONFIG_DCB */ extern void ixgbe_clean_rx_ring(struct ixgbe_ring *rx_ring); +#ifndef ETHTOOL_GLINKSETTINGS extern int ixgbe_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd); +#endif extern int ixgbe_write_uc_addr_list(struct ixgbe_adapter *adapter, struct net_device *netdev, unsigned int vfn); extern void ixgbe_full_sync_mac_table(struct ixgbe_adapter *adapter); diff --git a/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c b/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c index 44cdc9f20..f2ded19e9 100644 --- a/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c +++ b/kernel/linux/kni/ethtool/ixgbe/ixgbe_ethtool.c @@ -158,6 +158,7 @@ static const char ixgbe_gstrings_test[][ETH_GSTRING_LEN] = { #define IXGBE_TEST_LEN (sizeof(ixgbe_gstrings_test) / ETH_GSTRING_LEN) #endif /* ETHTOOL_TEST */ +#ifndef ETHTOOL_GLINKSETTINGS int ixgbe_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { @@ -347,7 +348,9 @@ int ixgbe_get_settings(struct net_device *netdev, return 0; } +#endif +#ifndef ETHTOOL_SLINKSETTINGS static int ixgbe_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { @@ -391,6 +394,7 @@ static int ixgbe_set_settings(struct net_device *netdev, } return err; } +#endif static void ixgbe_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause) @@ -2815,8 +2819,12 @@ static int ixgbe_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd) #endif /* ETHTOOL_GRXRINGS */ //static struct ethtool_ops ixgbe_ethtool_ops = { +#ifndef ETHTOOL_GLINKSETTINGS .get_settings = ixgbe_get_settings, +#endif +#ifndef ETHTOOL_SLINKSETTINGS .set_settings = ixgbe_set_settings, +#endif .get_drvinfo = ixgbe_get_drvinfo, .get_regs_len = ixgbe_get_regs_len, .get_regs = ixgbe_get_regs, diff --git a/kernel/linux/kni/kni_ethtool.c b/kernel/linux/kni/kni_ethtool.c index a44e7d949..b1c84f8f0 100644 --- a/kernel/linux/kni/kni_ethtool.c +++ b/kernel/linux/kni/kni_ethtool.c @@ -27,6 +27,8 @@ kni_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) priv->lad_dev->ethtool_ops->get_drvinfo(priv->lad_dev, info); } +/* ETHTOOL_GLINKSETTINGS replaces ETHTOOL_GSET */ +#ifndef ETHTOOL_GLINKSETTINGS static int kni_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) { @@ -34,7 +36,10 @@ kni_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) return priv->lad_dev->ethtool_ops->get_settings(priv->lad_dev, ecmd); } +#endif +/* ETHTOOL_SLINKSETTINGS replaces ETHTOOL_SSET */ +#ifndef ETHTOOL_SLINKSETTINGS static int kni_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) { @@ -42,6 +47,7 @@ kni_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) return priv->lad_dev->ethtool_ops->set_settings(priv->lad_dev, ecmd); } +#endif static void kni_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) @@ -190,8 +196,12 @@ kni_get_ethtool_stats(struct net_device *dev, struct ethtool_stats *stats, struct ethtool_ops kni_ethtool_ops = { .begin = kni_check_if_running, .get_drvinfo = kni_get_drvinfo, +#ifndef ETHTOOL_GLINKSETTINGS .get_settings = kni_get_settings, +#endif +#ifndef ETHTOOL_SLINKSETTINGS .set_settings = kni_set_settings, +#endif .get_regs_len = kni_get_regs_len, .get_regs = kni_get_regs, .get_wol = kni_get_wol, -- 2.17.2