i40e Driver Upgrade in support of N3000 on-board NICs
Uprev i40e to version 2.10.19.30 i40evf gets replaced by iavf version 3.7.61.20 The iavf driver supports both fortville and columbiaville, so they decided to rename from i40evf to something more generic. We get to drop the patch which polls for coming out of reset as it was incorporated upstream. The Intel FPGA Programmable Acceleration Card N3000 contains dual Intel XL710 NICs and an FPGA for acceleration purposes. This driver upgrade is required to support those NICs. Change-Id: Ifbec94bcc00a8cce9fe97bf0eb41556b8bd3e592 Story: 2006740 Task: 37542 Depends-On: https://review.opendev.org/#/c/695061 Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
This commit is contained in:
parent
5afd5f90b2
commit
2718976ddc
@ -10,8 +10,8 @@ perf
|
||||
# Network Drivers
|
||||
#
|
||||
|
||||
# i40evf-kmod
|
||||
kmod-i40evf
|
||||
# iavf-kmod
|
||||
kmod-iavf
|
||||
|
||||
# i40e-kmod
|
||||
kmod-i40e
|
||||
|
@ -7,8 +7,8 @@
|
||||
# Network Drivers
|
||||
#
|
||||
|
||||
# i40evf-kmod
|
||||
kmod-i40evf-rt
|
||||
# iavf-kmod
|
||||
kmod-iavf-rt
|
||||
|
||||
# i40e-kmod
|
||||
kmod-i40e-rt
|
||||
|
@ -80,9 +80,9 @@ kmod-e1000e-rt
|
||||
kmod-i40e
|
||||
kmod-i40e-rt
|
||||
|
||||
# i40evf-kmod
|
||||
kmod-i40evf
|
||||
kmod-i40evf-rt
|
||||
# iavf-kmod
|
||||
kmod-iavf
|
||||
kmod-iavf-rt
|
||||
|
||||
# ixgbevf-kmod
|
||||
kmod-ixgbevf
|
||||
|
@ -65,7 +65,7 @@ kubernetes/etcd
|
||||
kubernetes/helm
|
||||
grub/grubby
|
||||
kernel/kernel-modules/intel-e1000e
|
||||
kernel/kernel-modules/intel-i40evf
|
||||
kernel/kernel-modules/intel-iavf
|
||||
kernel/kernel-modules/intel-i40e
|
||||
kernel/kernel-modules/intel-ixgbevf
|
||||
kernel/kernel-modules/intel-ixgbe
|
||||
|
@ -3,7 +3,7 @@ networking/mellanox/libibverbs
|
||||
kernel/kernel-modules/mlnx-ofa_kernel
|
||||
networking/mellanox/rdma-core
|
||||
kernel/kernel-modules/intel-e1000e
|
||||
kernel/kernel-modules/intel-i40evf
|
||||
kernel/kernel-modules/intel-iavf
|
||||
kernel/kernel-modules/intel-i40e
|
||||
kernel/kernel-modules/intel-ixgbevf
|
||||
kernel/kernel-modules/intel-ixgbe
|
||||
|
@ -1,4 +1,4 @@
|
||||
COPY_LIST=" \
|
||||
$PKG_BASE/files/* \
|
||||
$STX_BASE/downloads/i40e-2.7.29.tar.gz"
|
||||
$STX_BASE/downloads/i40e-2.10.19.30.tar.gz"
|
||||
TIS_PATCH_VER=1
|
||||
|
@ -8,7 +8,7 @@
|
||||
%define kmod_name i40e
|
||||
|
||||
Name: %{kmod_name}-kmod%{?bt_ext}
|
||||
Version: 2.7.29
|
||||
Version: 2.10.19.30
|
||||
Release: 0%{?_tis_dist}.%{tis_patch_ver}
|
||||
Group: System Environment/Kernel
|
||||
License: GPLv2
|
||||
@ -25,7 +25,6 @@ Source11: modules-load.conf
|
||||
|
||||
Patch01: i40e-Enable-getting-link-status-from-VF.patch
|
||||
Patch02: i40e-add-more-debug-info-for-VFs-still-in-reset.patch
|
||||
Patch03: ndo_get_vf_config-poll-for-out-of-vf-reset.patch
|
||||
|
||||
%define kversion %(rpm -q kernel%{?bt_ext}-devel | sort --version-sort | tail -1 | sed 's/kernel%{?bt_ext}-devel-//')
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 412fdc8c0d51500e42e76e788ece3ca7dd260ced Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <412fdc8c0d51500e42e76e788ece3ca7dd260ced.1528830095.git.Jim.Somerville@windriver.com>
|
||||
From b8c666367cd98a2b0033c043f6f206abd8e238a6 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <b8c666367cd98a2b0033c043f6f206abd8e238a6.1572295393.git.Jim.Somerville@windriver.com>
|
||||
From: Vadim Suraev <vsuraev@northforgeinc.com>
|
||||
Date: Mon, 8 Feb 2016 15:57:30 -0500
|
||||
Subject: [PATCH 1/3] i40e: Enable getting link status from VF
|
||||
Subject: [PATCH 1/2] i40e: Enable getting link status from VF
|
||||
|
||||
Add handling of custom OP code sent from the PMD VF to get link status via the
|
||||
virtual channel interface.
|
||||
@ -16,10 +16,10 @@ Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
||||
2 files changed, 79 insertions(+)
|
||||
|
||||
diff --git a/src/i40e_virtchnl_pf.c b/src/i40e_virtchnl_pf.c
|
||||
index 020bacb..126ec19 100644
|
||||
index 9e48f0d..21b4606 100644
|
||||
--- a/src/i40e_virtchnl_pf.c
|
||||
+++ b/src/i40e_virtchnl_pf.c
|
||||
@@ -2559,6 +2559,81 @@ static int i40e_vc_config_promiscuous_mode_msg(struct i40e_vf *vf, u8 *msg)
|
||||
@@ -2467,6 +2467,81 @@ err_out:
|
||||
aq_ret);
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ index 020bacb..126ec19 100644
|
||||
/**
|
||||
* i40e_vc_config_queues_msg
|
||||
* @vf: pointer to the VF info
|
||||
@@ -4300,6 +4375,9 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, s16 vf_id, u32 v_opcode,
|
||||
@@ -4166,6 +4241,9 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, s16 vf_id, u32 v_opcode,
|
||||
case VIRTCHNL_OP_REQUEST_QUEUES:
|
||||
ret = i40e_vc_request_queues_msg(vf, msg);
|
||||
break;
|
||||
@ -112,17 +112,17 @@ index 020bacb..126ec19 100644
|
||||
case VIRTCHNL_OP_ENABLE_CHANNELS:
|
||||
ret = i40e_vc_add_qch_msg(vf, msg);
|
||||
diff --git a/src/virtchnl.h b/src/virtchnl.h
|
||||
index afde603..b9b38c0 100644
|
||||
index a22cc43..d3d9324 100644
|
||||
--- a/src/virtchnl.h
|
||||
+++ b/src/virtchnl.h
|
||||
@@ -124,6 +124,7 @@ enum virtchnl_ops {
|
||||
@@ -128,6 +128,7 @@ enum virtchnl_ops {
|
||||
VIRTCHNL_OP_DISABLE_CHANNELS = 31,
|
||||
VIRTCHNL_OP_ADD_CLOUD_FILTER = 32,
|
||||
VIRTCHNL_OP_DEL_CLOUD_FILTER = 33,
|
||||
+ VIRTCHNL_OP_GET_LINK_STAT = 0x101,
|
||||
|
||||
};
|
||||
|
||||
/* These macros are used to generate compilation errors if a structure/union
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
From d60e87567eb5418fbb848bf30f72d3d8bec3bad6 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <d60e87567eb5418fbb848bf30f72d3d8bec3bad6.1528830095.git.Jim.Somerville@windriver.com>
|
||||
In-Reply-To: <412fdc8c0d51500e42e76e788ece3ca7dd260ced.1528830095.git.Jim.Somerville@windriver.com>
|
||||
References: <412fdc8c0d51500e42e76e788ece3ca7dd260ced.1528830095.git.Jim.Somerville@windriver.com>
|
||||
From 40b257ecf5d36abf14a4ef98fc2e44dba7100fea Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <40b257ecf5d36abf14a4ef98fc2e44dba7100fea.1572295393.git.Jim.Somerville@windriver.com>
|
||||
In-Reply-To: <b8c666367cd98a2b0033c043f6f206abd8e238a6.1572295393.git.Jim.Somerville@windriver.com>
|
||||
References: <b8c666367cd98a2b0033c043f6f206abd8e238a6.1572295393.git.Jim.Somerville@windriver.com>
|
||||
From: Jim Somerville <Jim.Somerville@windriver.com>
|
||||
Date: Mon, 26 Mar 2018 11:03:47 -0400
|
||||
Subject: [PATCH 2/3] i40e add more debug info for VFs still in reset
|
||||
Subject: [PATCH 2/2] i40e add more debug info for VFs still in reset
|
||||
|
||||
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
||||
---
|
||||
@ -12,10 +12,21 @@ Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/i40e_virtchnl_pf.c b/src/i40e_virtchnl_pf.c
|
||||
index 126ec19..da29fc3 100644
|
||||
index 21b4606..dfb9568 100644
|
||||
--- a/src/i40e_virtchnl_pf.c
|
||||
+++ b/src/i40e_virtchnl_pf.c
|
||||
@@ -4650,8 +4650,8 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
|
||||
@@ -4363,8 +4363,8 @@ static int i40e_set_vf_mac(struct i40e_vf *vf, struct i40e_vsi *vsi,
|
||||
msleep(20);
|
||||
}
|
||||
if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {
|
||||
- dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n",
|
||||
- vf->vf_id);
|
||||
+ dev_err(&pf->pdev->dev, "%s: VF %d still in reset. Try again.\n",
|
||||
+ __func__, vf->vf_id);
|
||||
ret = -EAGAIN;
|
||||
goto error_param;
|
||||
}
|
||||
@@ -4522,8 +4522,8 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
|
||||
vf = &pf->vf[vf_id];
|
||||
vsi = pf->vsi[vf->lan_vsi_idx];
|
||||
if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {
|
||||
@ -26,7 +37,7 @@ index 126ec19..da29fc3 100644
|
||||
ret = -EAGAIN;
|
||||
goto error_pvid;
|
||||
}
|
||||
@@ -4784,8 +4784,8 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int max_tx_rate)
|
||||
@@ -4678,8 +4678,8 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int max_tx_rate)
|
||||
vf = &pf->vf[vf_id];
|
||||
vsi = pf->vsi[vf->lan_vsi_idx];
|
||||
if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {
|
||||
@ -37,18 +48,7 @@ index 126ec19..da29fc3 100644
|
||||
ret = -EAGAIN;
|
||||
goto error;
|
||||
}
|
||||
@@ -4844,8 +4844,8 @@ int i40e_ndo_get_vf_config(struct net_device *netdev,
|
||||
/* first vsi is always the LAN vsi */
|
||||
vsi = pf->vsi[vf->lan_vsi_idx];
|
||||
if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {
|
||||
- dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n",
|
||||
- vf_id);
|
||||
+ dev_err(&pf->pdev->dev, "%s: VF %d still in reset. Try again.\n",
|
||||
+ __func__, vf_id);
|
||||
ret = -EAGAIN;
|
||||
goto error_param;
|
||||
}
|
||||
@@ -4989,8 +4989,8 @@ int i40e_ndo_set_vf_spoofchk(struct net_device *netdev, int vf_id, bool enable)
|
||||
@@ -4881,8 +4881,8 @@ int i40e_ndo_set_vf_spoofchk(struct net_device *netdev, int vf_id, bool enable)
|
||||
|
||||
vf = &(pf->vf[vf_id]);
|
||||
if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {
|
||||
|
@ -1,49 +0,0 @@
|
||||
From 25b521f58b33bf070c0b31d077333c13c3ad25e8 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <25b521f58b33bf070c0b31d077333c13c3ad25e8.1528830095.git.Jim.Somerville@windriver.com>
|
||||
In-Reply-To: <412fdc8c0d51500e42e76e788ece3ca7dd260ced.1528830095.git.Jim.Somerville@windriver.com>
|
||||
References: <412fdc8c0d51500e42e76e788ece3ca7dd260ced.1528830095.git.Jim.Somerville@windriver.com>
|
||||
From: Jim Somerville <Jim.Somerville@windriver.com>
|
||||
Date: Mon, 2 Apr 2018 15:35:12 -0400
|
||||
Subject: [PATCH 3/3] ndo_get_vf_config poll for out of vf reset
|
||||
|
||||
Same solution as 028daf80117376b22909becd9720daaefdfceff4 from the
|
||||
net-next tree as supplied by Intel, but we apply it to
|
||||
ndo_get_vf_config instead.
|
||||
|
||||
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
||||
---
|
||||
src/i40e_virtchnl_pf.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/src/i40e_virtchnl_pf.c b/src/i40e_virtchnl_pf.c
|
||||
index da29fc3..d5935d6 100644
|
||||
--- a/src/i40e_virtchnl_pf.c
|
||||
+++ b/src/i40e_virtchnl_pf.c
|
||||
@@ -4829,6 +4829,7 @@ int i40e_ndo_get_vf_config(struct net_device *netdev,
|
||||
struct i40e_pf *pf = vsi->back;
|
||||
struct i40e_vf *vf;
|
||||
int ret = 0;
|
||||
+ u8 i;
|
||||
|
||||
if (test_and_set_bit(__I40E_VIRTCHNL_OP_PENDING, pf->state)) {
|
||||
dev_warn(&pf->pdev->dev, "Unable to configure VFs, other operation is pending.\n");
|
||||
@@ -4843,6 +4844,16 @@ int i40e_ndo_get_vf_config(struct net_device *netdev,
|
||||
vf = &pf->vf[vf_id];
|
||||
/* first vsi is always the LAN vsi */
|
||||
vsi = pf->vsi[vf->lan_vsi_idx];
|
||||
+
|
||||
+ /* When the VF is resetting wait until it is done.
|
||||
+ * It can take up to 200 milliseconds,
|
||||
+ * but wait for up to 300 milliseconds to be safe.
|
||||
+ */
|
||||
+ for (i = 0; i < 15; i++) {
|
||||
+ if (test_bit(I40E_VF_STATE_INIT, &vf->vf_states))
|
||||
+ break;
|
||||
+ msleep(20);
|
||||
+ }
|
||||
if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {
|
||||
dev_err(&pf->pdev->dev, "%s: VF %d still in reset. Try again.\n",
|
||||
__func__, vf_id);
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1 +0,0 @@
|
||||
i40evf
|
@ -1,4 +1,4 @@
|
||||
COPY_LIST=" \
|
||||
$PKG_BASE/files/* \
|
||||
$STX_BASE/downloads/i40evf-3.6.15.tar.gz"
|
||||
$STX_BASE/downloads/iavf-3.7.61.20.tar.gz"
|
||||
TIS_PATCH_VER=1
|
@ -5,10 +5,10 @@
|
||||
%endif
|
||||
|
||||
# Define the kmod package name here.
|
||||
%define kmod_name i40evf
|
||||
%define kmod_name iavf
|
||||
|
||||
Name: %{kmod_name}-kmod%{?bt_ext}
|
||||
Version: 3.6.15
|
||||
Version: 3.7.61.20
|
||||
Release: 0%{?_tis_dist}.%{tis_patch_ver}
|
||||
Group: System Environment/Kernel
|
||||
License: GPLv2
|
||||
@ -25,52 +25,52 @@ Source11: modules-load.conf
|
||||
|
||||
%define kversion %(rpm -q kernel%{?bt_ext}-devel | sort --version-sort | tail -1 | sed 's/kernel%{?bt_ext}-devel-//')
|
||||
|
||||
%package -n kmod-i40evf%{?bt_ext}
|
||||
Summary: i40evf kernel module(s)
|
||||
%package -n kmod-iavf%{?bt_ext}
|
||||
Summary: iavf kernel module(s)
|
||||
Group: System Environment/Kernel
|
||||
%global _use_internal_dependency_generator 0
|
||||
Provides: kernel-modules >= %{kversion}
|
||||
Provides: i40evf-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: iavf-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires(post): /usr/sbin/depmod
|
||||
Requires(postun): /usr/sbin/depmod
|
||||
|
||||
%description -n kmod-i40evf%{?bt_ext}
|
||||
This package provides the i40evf kernel module(s) built
|
||||
%description -n kmod-iavf%{?bt_ext}
|
||||
This package provides the iavf kernel module(s) built
|
||||
for the Linux kernel using the %{_target_cpu} family of processors.
|
||||
|
||||
%post -n kmod-i40evf%{?bt_ext}
|
||||
%post -n kmod-iavf%{?bt_ext}
|
||||
echo "Working. This may take some time ..."
|
||||
if [ -e "/boot/System.map-%{kversion}" ]; then
|
||||
/usr/sbin/depmod -aeF "/boot/System.map-%{kversion}" "%{kversion}" > /dev/null || :
|
||||
fi
|
||||
modules=( $(find /lib/modules/%{kversion}/extra/i40evf | grep '\.ko$') )
|
||||
modules=( $(find /lib/modules/%{kversion}/extra/iavf | grep '\.ko$') )
|
||||
if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\n' "${modules[@]}" | /sbin/weak-modules --add-modules
|
||||
fi
|
||||
echo "Done."
|
||||
|
||||
%preun -n kmod-i40evf%{?bt_ext}
|
||||
rpm -ql kmod-i40evf%{?bt_ext}-%{version}-%{release}.x86_64 | grep '\.ko$' > /var/run/rpm-kmod-i40evf%{?bt_ext}-modules
|
||||
%preun -n kmod-iavf%{?bt_ext}
|
||||
rpm -ql kmod-iavf%{?bt_ext}-%{version}-%{release}.x86_64 | grep '\.ko$' > /var/run/rpm-kmod-iavf%{?bt_ext}-modules
|
||||
|
||||
%postun -n kmod-i40evf%{?bt_ext}
|
||||
%postun -n kmod-iavf%{?bt_ext}
|
||||
echo "Working. This may take some time ..."
|
||||
if [ -e "/boot/System.map-%{kversion}" ]; then
|
||||
/usr/sbin/depmod -aeF "/boot/System.map-%{kversion}" "%{kversion}" > /dev/null || :
|
||||
fi
|
||||
modules=( $(cat /var/run/rpm-kmod-i40evf%{?bt_ext}-modules) )
|
||||
rm /var/run/rpm-kmod-i40evf%{?bt_ext}-modules
|
||||
modules=( $(cat /var/run/rpm-kmod-iavf%{?bt_ext}-modules) )
|
||||
rm /var/run/rpm-kmod-iavf%{?bt_ext}-modules
|
||||
if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\n' "${modules[@]}" | /sbin/weak-modules --remove-modules
|
||||
fi
|
||||
echo "Done."
|
||||
|
||||
%files -n kmod-i40evf%{?bt_ext}
|
||||
%files -n kmod-iavf%{?bt_ext}
|
||||
%defattr(644,root,root,755)
|
||||
/lib/modules/%{kversion}/
|
||||
%config(noreplace)/etc/depmod.d/kmod-i40evf.conf
|
||||
%doc /usr/share/doc/kmod-i40evf-%{version}/
|
||||
%config(noreplace)/etc/depmod.d/kmod-iavf.conf
|
||||
%doc /usr/share/doc/kmod-iavf-%{version}/
|
||||
%doc /usr/share/man/man7/
|
||||
%{_sysconfdir}/modules-load.d/i40evf.conf
|
||||
%{_sysconfdir}/modules-load.d/iavf.conf
|
||||
|
||||
# Disable the building of the debug package(s).
|
||||
%define debug_package %{nil}
|
||||
@ -102,7 +102,7 @@ popd >/dev/null
|
||||
%{__install} -d %{buildroot}%{_mandir}/man7/
|
||||
%{__install} %{kmod_name}.7.gz %{buildroot}%{_mandir}/man7/
|
||||
%{__install} -d %{buildroot}%{_sysconfdir}/modules-load.d
|
||||
%{__install} -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/modules-load.d/i40evf.conf
|
||||
%{__install} -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/modules-load.d/iavf.conf
|
||||
|
||||
# Strip the modules(s).
|
||||
find %{buildroot} -type f -name \*.ko -exec %{__strip} --strip-debug \{\} \;
|
1
kernel/kernel-modules/intel-iavf/files/modules-load.conf
Normal file
1
kernel/kernel-modules/intel-iavf/files/modules-load.conf
Normal file
@ -0,0 +1 @@
|
||||
iavf
|
Loading…
Reference in New Issue
Block a user