From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from demumfd002.nsn-inter.net (demumfd002.nsn-inter.net [93.183.12.31]) by dpdk.org (Postfix) with ESMTP id 58F4CAB03 for ; Tue, 17 Jun 2014 16:34:57 +0200 (CEST) Received: from demuprx016.emea.nsn-intra.net ([10.150.129.55]) by demumfd002.nsn-inter.net (8.14.3/8.14.3) with ESMTP id s5HEZDRs024864 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Tue, 17 Jun 2014 14:35:13 GMT Received: from ak-desktop.emea.nsn-net.net ([10.144.45.49]) by demuprx016.emea.nsn-intra.net (8.12.11.20060308/8.12.11) with ESMTP id s5HEZAFx030028; Tue, 17 Jun 2014 16:35:13 +0200 From: Aaro Koskinen To: dev@dpdk.org Date: Tue, 17 Jun 2014 17:32:04 +0300 Message-Id: <1403015524-26218-2-git-send-email-aaro.koskinen@nsn.com> X-Mailer: git-send-email 2.0.0 In-Reply-To: <1403015524-26218-1-git-send-email-aaro.koskinen@nsn.com> References: <1403015524-26218-1-git-send-email-aaro.koskinen@nsn.com> X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-size: 3916 X-purgate-ID: 151667::1403015713-00007A71-534F3109/0/0 Subject: [dpdk-dev] [PATCH 2/2] kni: igb: modify rate configation to support min/max rate fields X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jun 2014 14:34:58 -0000 This follows the mainline Linux kernel commit ed616689a3d95eb6c9bdbb1ef74b0f50cbdf276a (Add support to configure SR-IOV VF minimum and maximum Tx rate) by Sucheta Chakraborty, and enables to build the driver against 3.16. Signed-off-by: Aaro Koskinen --- lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 23 ++++++++++++++++++++++ lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 1 + 2 files changed, 24 insertions(+) diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c index 0657237..a802a02 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c @@ -200,7 +200,11 @@ static int igb_ndo_set_vf_vlan(struct net_device *netdev, static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, bool setting); #endif +#ifdef HAVE_VF_MIN_MAX_TXRATE +static int igb_ndo_set_vf_bw(struct net_device *, int, int, int); +#else /* HAVE_VF_MIN_MAX_TXRATE */ static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, int tx_rate); +#endif /* HAVE_VF_MIN_MAX_TXRATE */ static int igb_ndo_get_vf_config(struct net_device *netdev, int vf, struct ifla_vf_info *ivi); static void igb_check_vf_rate_limit(struct igb_adapter *); @@ -2278,7 +2282,11 @@ static const struct net_device_ops igb_netdev_ops = { #ifdef IFLA_VF_MAX .ndo_set_vf_mac = igb_ndo_set_vf_mac, .ndo_set_vf_vlan = igb_ndo_set_vf_vlan, +#ifdef HAVE_VF_MIN_MAX_TXRATE + .ndo_set_vf_rate = igb_ndo_set_vf_bw, +#else /* HAVE_VF_MIN_MAX_TXRATE */ .ndo_set_vf_tx_rate = igb_ndo_set_vf_bw, +#endif /* HAVE_VF_MIN_MAX_TXRATE */ .ndo_get_vf_config = igb_ndo_get_vf_config, #ifdef HAVE_VF_SPOOFCHK_CONFIGURE .ndo_set_vf_spoofchk = igb_ndo_set_vf_spoofchk, @@ -9389,7 +9397,12 @@ static void igb_check_vf_rate_limit(struct igb_adapter *adapter) } } +#ifdef HAVE_VF_MIN_MAX_TXRATE +static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, int min_tx_rate, + int tx_rate) +#else /* HAVE_VF_MIN_MAX_TXRATE */ static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, int tx_rate) +#endif /* HAVE_VF_MIN_MAX_TXRATE */ { struct igb_adapter *adapter = netdev_priv(netdev); struct e1000_hw *hw = &adapter->hw; @@ -9398,6 +9411,11 @@ static int igb_ndo_set_vf_bw(struct net_device *netdev, int vf, int tx_rate) if (hw->mac.type != e1000_82576) return -EOPNOTSUPP; +#ifdef HAVE_VF_MIN_MAX_TXRATE + if (min_tx_rate) + return -EINVAL; +#endif /* HAVE_VF_MIN_MAX_TXRATE */ + actual_link_speed = igb_link_mbps(adapter->link_speed); if ((vf >= adapter->vfs_allocated_count) || (!(E1000_READ_REG(hw, E1000_STATUS) & E1000_STATUS_LU)) || @@ -9419,7 +9437,12 @@ static int igb_ndo_get_vf_config(struct net_device *netdev, return -EINVAL; ivi->vf = vf; memcpy(&ivi->mac, adapter->vf_data[vf].vf_mac_addresses, ETH_ALEN); +#ifdef HAVE_VF_MIN_MAX_TXRATE + ivi->max_tx_rate = adapter->vf_data[vf].tx_rate; + ivi->min_tx_rate = 0; +#else /* HAVE_VF_MIN_MAX_TXRATE */ ivi->tx_rate = adapter->vf_data[vf].tx_rate; +#endif /* HAVE_VF_MIN_MAX_TXRATE */ ivi->vlan = adapter->vf_data[vf].pf_vlan; ivi->qos = adapter->vf_data[vf].pf_qos; #ifdef HAVE_VF_SPOOFCHK_CONFIGURE diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h index f5e4435..7c5d6ac 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h @@ -3855,6 +3855,7 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type) #if ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0) ) #define SET_ETHTOOL_OPS(netdev, ops) ((netdev)->ethtool_ops = (ops)) +#define HAVE_VF_MIN_MAX_TXRATE 1 #endif /* >= 3.16.0 */ #endif /* _KCOMPAT_H_ */ -- 2.0.0