Merge "i40e Driver Upgrade in support of N3000 on-board NICs"

This commit is contained in:
Zuul 2019-11-20 22:14:49 +00:00 committed by Gerrit Code Review
commit d2a3c1e163
15 changed files with 61 additions and 111 deletions

View File

@ -10,8 +10,8 @@ perf
# Network Drivers
#
# i40evf-kmod
kmod-i40evf
# iavf-kmod
kmod-iavf
# i40e-kmod
kmod-i40e

View File

@ -7,8 +7,8 @@
# Network Drivers
#
# i40evf-kmod
kmod-i40evf-rt
# iavf-kmod
kmod-iavf-rt
# i40e-kmod
kmod-i40e-rt

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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-//')

View File

@ -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

View File

@ -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)) {

View File

@ -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

View File

@ -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

View File

@ -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 \{\} \;

View File

@ -0,0 +1 @@
iavf