kernel:ice: Add automatic VF reset on Tx MDD events
Back ported the upstream commit https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/ commit/?id=cc2a9d6c03b804c301447326aff4cf2359867f9c ("ice: Add automatic VF reset on Tx MDD events") that was introduced into linux-6.10.y, which is identified by Intel to fix the issue the frozen queue can be stuck for several minutes being unusable. Verification: - Build kernel and out of tree modules success for rt and std. - Install success onto a All-in-One lab with rt kernel. - Boot up successfully in the lab. - interfaces are up and pass packets for rt and std. - Please note we can not reproduce the issue, so we can not verify it. Closes-Bug: 2076862 Change-Id: Ib3c4ed808c660dfcbc607932ffdb07773d66c226 Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
This commit is contained in:
parent
853c60e2e8
commit
4a6f92d1b3
@ -0,0 +1,214 @@
|
||||
From 9176c0a850a8f57213c298d6030f4ac1a511570a Mon Sep 17 00:00:00 2001
|
||||
From: Marcin Szycik <marcin.szycik@linux.intel.com>
|
||||
Date: Thu, 4 Apr 2024 16:04:51 +0200
|
||||
Subject: [PATCH 1/2] ice: Add automatic VF reset on Tx MDD events
|
||||
|
||||
In cases when VF sends malformed packets that are classified as malicious,
|
||||
it can cause Tx queue to freeze as a result of Malicious Driver Detection
|
||||
event. Such malformed packets can appear as a result of a faulty userspace
|
||||
app running on VF. This frozen queue can be stuck for several minutes being
|
||||
unusable.
|
||||
|
||||
User might prefer to immediately bring the VF back to operational state
|
||||
after such event, which can be done by automatically resetting the VF which
|
||||
caused MDD. This is already implemented for Rx events (mdd-auto-reset-vf
|
||||
flag private flag needs to be set).
|
||||
|
||||
Extend the VF auto reset to also cover Tx MDD events. When any MDD event
|
||||
occurs on VF (Tx or Rx) and the mdd-auto-reset-vf private flag is set,
|
||||
perform a graceful VF reset to quickly bring it back to operational state.
|
||||
|
||||
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
|
||||
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
|
||||
Co-developed-by: Liang-Min Wang <liang-min.wang@intel.com>
|
||||
Signed-off-by: Liang-Min Wang <liang-min.wang@intel.com>
|
||||
Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
|
||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
||||
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
|
||||
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
|
||||
(cherry picked from commit cc2a9d6c03b804c301447326aff4cf2359867f9c)
|
||||
[jma: Adjust the patch for the content changes.]
|
||||
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
||||
---
|
||||
drivers/net/ethernet/intel/ice/ice_main.c | 57 +++++++++++++++++-----
|
||||
drivers/net/ethernet/intel/ice/ice_sriov.c | 25 +++++++---
|
||||
drivers/net/ethernet/intel/ice/ice_sriov.h | 2 +
|
||||
3 files changed, 67 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
|
||||
index 6d75284301cc..8a6acb5a722e 100644
|
||||
--- a/drivers/net/ethernet/intel/ice/ice_main.c
|
||||
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
|
||||
@@ -1718,6 +1718,39 @@ static void ice_service_timer(struct timer_list *t)
|
||||
ice_service_task_schedule(pf);
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * ice_mdd_maybe_reset_vf - reset VF after MDD event
|
||||
+ * @pf: pointer to the PF structure
|
||||
+ * @vf: pointer to the VF structure
|
||||
+ * @reset_vf_tx: whether Tx MDD has occurred
|
||||
+ * @reset_vf_rx: whether Rx MDD has occurred
|
||||
+ *
|
||||
+ * Since the queue can get stuck on VF MDD events, the PF can be configured to
|
||||
+ * automatically reset the VF by enabling the private ethtool flag
|
||||
+ * mdd-auto-reset-vf.
|
||||
+ */
|
||||
+static void ice_mdd_maybe_reset_vf(struct ice_pf *pf, struct ice_vf *vf,
|
||||
+ bool reset_vf_tx, bool reset_vf_rx)
|
||||
+{
|
||||
+ struct device *dev = ice_pf_to_dev(pf);
|
||||
+
|
||||
+ if (!test_bit(ICE_FLAG_MDD_AUTO_RESET_VF, pf->flags))
|
||||
+ return;
|
||||
+
|
||||
+ /* VF MDD event counters will be cleared by reset, so print the event
|
||||
+ * prior to reset.
|
||||
+ */
|
||||
+ if (reset_vf_tx)
|
||||
+ ice_print_vf_tx_mdd_event(vf);
|
||||
+
|
||||
+ if (reset_vf_rx)
|
||||
+ ice_print_vf_rx_mdd_event(vf);
|
||||
+
|
||||
+ dev_info(dev, "PF-to-VF reset on PF %d VF %d due to MDD event\n",
|
||||
+ pf->hw.pf_id, vf->vf_id);
|
||||
+ ice_reset_vf(vf, ICE_VF_RESET_NOTIFY | ICE_VF_RESET_LOCK);
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* ice_handle_mdd_event - handle malicious driver detect event
|
||||
* @pf: pointer to the PF structure
|
||||
@@ -1823,6 +1856,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
*/
|
||||
mutex_lock(&pf->vfs.table_lock);
|
||||
ice_for_each_vf(pf, bkt, vf) {
|
||||
+ bool reset_vf_tx = false, reset_vf_rx = false;
|
||||
+
|
||||
reg = rd32(hw, VP_MDET_TX_PQM(vf->vf_id));
|
||||
if (reg & VP_MDET_TX_PQM_VALID_M) {
|
||||
wr32(hw, VP_MDET_TX_PQM(vf->vf_id), 0xFFFF);
|
||||
@@ -1831,6 +1866,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
if (netif_msg_tx_err(pf))
|
||||
dev_info(dev, "Malicious Driver Detection event TX_PQM detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
+
|
||||
+ reset_vf_tx = true;
|
||||
}
|
||||
|
||||
reg = rd32(hw, VP_MDET_TX_TCLAN(vf->vf_id));
|
||||
@@ -1841,6 +1878,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
if (netif_msg_tx_err(pf))
|
||||
dev_info(dev, "Malicious Driver Detection event TX_TCLAN detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
+
|
||||
+ reset_vf_tx = true;
|
||||
}
|
||||
|
||||
reg = rd32(hw, VP_MDET_TX_TDPU(vf->vf_id));
|
||||
@@ -1851,6 +1890,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
if (netif_msg_tx_err(pf))
|
||||
dev_info(dev, "Malicious Driver Detection event TX_TDPU detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
+
|
||||
+ reset_vf_tx = true;
|
||||
}
|
||||
|
||||
reg = rd32(hw, VP_MDET_RX(vf->vf_id));
|
||||
@@ -1862,18 +1903,12 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
dev_info(dev, "Malicious Driver Detection event RX detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
|
||||
- /* Since the queue is disabled on VF Rx MDD events, the
|
||||
- * PF can be configured to reset the VF through ethtool
|
||||
- * private flag mdd-auto-reset-vf.
|
||||
- */
|
||||
- if (test_bit(ICE_FLAG_MDD_AUTO_RESET_VF, pf->flags)) {
|
||||
- /* VF MDD event counters will be cleared by
|
||||
- * reset, so print the event prior to reset.
|
||||
- */
|
||||
- ice_print_vf_rx_mdd_event(vf);
|
||||
- ice_reset_vf(vf, ICE_VF_RESET_LOCK);
|
||||
- }
|
||||
+ reset_vf_rx = true;
|
||||
}
|
||||
+
|
||||
+ if (reset_vf_tx || reset_vf_rx)
|
||||
+ ice_mdd_maybe_reset_vf(pf, vf, reset_vf_tx,
|
||||
+ reset_vf_rx);
|
||||
}
|
||||
mutex_unlock(&pf->vfs.table_lock);
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/ice/ice_sriov.c b/drivers/net/ethernet/intel/ice/ice_sriov.c
|
||||
index 31314e7540f8..442162be23ea 100644
|
||||
--- a/drivers/net/ethernet/intel/ice/ice_sriov.c
|
||||
+++ b/drivers/net/ethernet/intel/ice/ice_sriov.c
|
||||
@@ -1662,6 +1662,24 @@ void ice_print_vf_rx_mdd_event(struct ice_vf *vf)
|
||||
? "on" : "off");
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * ice_print_vf_tx_mdd_event - print VF Tx malicious driver detect event
|
||||
+ * @vf: pointer to the VF structure
|
||||
+ */
|
||||
+void ice_print_vf_tx_mdd_event(struct ice_vf *vf)
|
||||
+{
|
||||
+ struct ice_pf *pf = vf->pf;
|
||||
+ struct device *dev;
|
||||
+
|
||||
+ dev = ice_pf_to_dev(pf);
|
||||
+
|
||||
+ dev_info(dev, "%d Tx Malicious Driver Detection events detected on PF %d VF %d MAC %pM. mdd-auto-reset-vfs=%s\n",
|
||||
+ vf->mdd_tx_events.count, pf->hw.pf_id, vf->vf_id,
|
||||
+ vf->dev_lan_addr,
|
||||
+ test_bit(ICE_FLAG_MDD_AUTO_RESET_VF, pf->flags)
|
||||
+ ? "on" : "off");
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* ice_print_vfs_mdd_events - print VFs malicious driver detect event
|
||||
* @pf: pointer to the PF structure
|
||||
@@ -1670,8 +1688,6 @@ void ice_print_vf_rx_mdd_event(struct ice_vf *vf)
|
||||
*/
|
||||
void ice_print_vfs_mdd_events(struct ice_pf *pf)
|
||||
{
|
||||
- struct device *dev = ice_pf_to_dev(pf);
|
||||
- struct ice_hw *hw = &pf->hw;
|
||||
struct ice_vf *vf;
|
||||
unsigned int bkt;
|
||||
|
||||
@@ -1698,10 +1714,7 @@ void ice_print_vfs_mdd_events(struct ice_pf *pf)
|
||||
if (vf->mdd_tx_events.count != vf->mdd_tx_events.last_printed) {
|
||||
vf->mdd_tx_events.last_printed =
|
||||
vf->mdd_tx_events.count;
|
||||
-
|
||||
- dev_info(dev, "%d Tx Malicious Driver Detection events detected on PF %d VF %d MAC %pM.\n",
|
||||
- vf->mdd_tx_events.count, hw->pf_id, vf->vf_id,
|
||||
- vf->dev_lan_addr);
|
||||
+ ice_print_vf_tx_mdd_event(vf);
|
||||
}
|
||||
}
|
||||
mutex_unlock(&pf->vfs.table_lock);
|
||||
diff --git a/drivers/net/ethernet/intel/ice/ice_sriov.h b/drivers/net/ethernet/intel/ice/ice_sriov.h
|
||||
index 346cb2666f3a..7f733208d402 100644
|
||||
--- a/drivers/net/ethernet/intel/ice/ice_sriov.h
|
||||
+++ b/drivers/net/ethernet/intel/ice/ice_sriov.h
|
||||
@@ -58,6 +58,7 @@ void
|
||||
ice_vf_lan_overflow_event(struct ice_pf *pf, struct ice_rq_event_info *event);
|
||||
void ice_print_vfs_mdd_events(struct ice_pf *pf);
|
||||
void ice_print_vf_rx_mdd_event(struct ice_vf *vf);
|
||||
+void ice_print_vf_tx_mdd_event(struct ice_vf *vf);
|
||||
bool
|
||||
ice_vc_validate_pattern(struct ice_vf *vf, struct virtchnl_proto_hdrs *proto);
|
||||
#else /* CONFIG_PCI_IOV */
|
||||
@@ -67,6 +68,7 @@ static inline
|
||||
void ice_vf_lan_overflow_event(struct ice_pf *pf, struct ice_rq_event_info *event) { }
|
||||
static inline void ice_print_vfs_mdd_events(struct ice_pf *pf) { }
|
||||
static inline void ice_print_vf_rx_mdd_event(struct ice_vf *vf) { }
|
||||
+static inline void ice_print_vf_tx_mdd_event(struct ice_vf *vf) { }
|
||||
static inline void ice_restore_all_vfs_msi_state(struct pci_dev *pdev) { }
|
||||
|
||||
static inline int
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,33 @@
|
||||
From 7bd9084525e4174cbb3ea5af07589c0851f77c62 Mon Sep 17 00:00:00 2001
|
||||
From: Jiping Ma <jiping.ma2@windriver.com>
|
||||
Date: Tue, 13 Aug 2024 01:42:23 +0000
|
||||
Subject: [PATCH 2/2] ice: modify the ice driver min version to stx.3
|
||||
|
||||
Change the ice driver min version to stx.3 because we back ported
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
/commit/?id=cc2a9d6c03b804c301447326aff4cf2359867f9c (ice: Add
|
||||
automatic VF reset on Tx MDD events) from linux-6.10.y.
|
||||
|
||||
The ice driver version should be ice-6.6.40-stx.3.
|
||||
|
||||
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
||||
---
|
||||
Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 6fb76ccb9dd3..5807b310bdca 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1227,7 +1227,7 @@ uapi-asm-generic:
|
||||
|
||||
# KERNELRELEASE can change from a few different places, meaning version.h
|
||||
# needs to be updated, so this check is forced on all builds
|
||||
-ICE_STX = "-stx.2"
|
||||
+ICE_STX = "-stx.3"
|
||||
I40E_STX = "-stx.0"
|
||||
IAVF_STX = "-stx.0"
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
@ -62,3 +62,5 @@ ice-dpll/0044-ice-fix-pin-phase-adjust-updates-on-PF-reset.patch
|
||||
ice-dpll/0045-ice-fix-uninitialized-dplls-mutex-usage.patch
|
||||
ice-dpll/0046-dpll-fix-dpll_xa_ref_-_del-for-multiple-registration.patch
|
||||
ice-dpll/0047-ice-modify-the-ice-driver-min-version-to-stx.2.patch
|
||||
ice-mdd/0001-ice-Add-automatic-VF-reset-on-Tx-MDD-events.patch
|
||||
ice-mdd/0002-ice-modify-the-ice-driver-min-version-to-stx.3.patch
|
||||
|
@ -0,0 +1,214 @@
|
||||
From 9176c0a850a8f57213c298d6030f4ac1a511570a Mon Sep 17 00:00:00 2001
|
||||
From: Marcin Szycik <marcin.szycik@linux.intel.com>
|
||||
Date: Thu, 4 Apr 2024 16:04:51 +0200
|
||||
Subject: [PATCH 1/2] ice: Add automatic VF reset on Tx MDD events
|
||||
|
||||
In cases when VF sends malformed packets that are classified as malicious,
|
||||
it can cause Tx queue to freeze as a result of Malicious Driver Detection
|
||||
event. Such malformed packets can appear as a result of a faulty userspace
|
||||
app running on VF. This frozen queue can be stuck for several minutes being
|
||||
unusable.
|
||||
|
||||
User might prefer to immediately bring the VF back to operational state
|
||||
after such event, which can be done by automatically resetting the VF which
|
||||
caused MDD. This is already implemented for Rx events (mdd-auto-reset-vf
|
||||
flag private flag needs to be set).
|
||||
|
||||
Extend the VF auto reset to also cover Tx MDD events. When any MDD event
|
||||
occurs on VF (Tx or Rx) and the mdd-auto-reset-vf private flag is set,
|
||||
perform a graceful VF reset to quickly bring it back to operational state.
|
||||
|
||||
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
|
||||
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
|
||||
Co-developed-by: Liang-Min Wang <liang-min.wang@intel.com>
|
||||
Signed-off-by: Liang-Min Wang <liang-min.wang@intel.com>
|
||||
Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
|
||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
||||
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
|
||||
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
|
||||
(cherry picked from commit cc2a9d6c03b804c301447326aff4cf2359867f9c)
|
||||
[jma: Adjust the patch for the content changes.]
|
||||
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
||||
---
|
||||
drivers/net/ethernet/intel/ice/ice_main.c | 57 +++++++++++++++++-----
|
||||
drivers/net/ethernet/intel/ice/ice_sriov.c | 25 +++++++---
|
||||
drivers/net/ethernet/intel/ice/ice_sriov.h | 2 +
|
||||
3 files changed, 67 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
|
||||
index 6d75284301cc..8a6acb5a722e 100644
|
||||
--- a/drivers/net/ethernet/intel/ice/ice_main.c
|
||||
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
|
||||
@@ -1718,6 +1718,39 @@ static void ice_service_timer(struct timer_list *t)
|
||||
ice_service_task_schedule(pf);
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * ice_mdd_maybe_reset_vf - reset VF after MDD event
|
||||
+ * @pf: pointer to the PF structure
|
||||
+ * @vf: pointer to the VF structure
|
||||
+ * @reset_vf_tx: whether Tx MDD has occurred
|
||||
+ * @reset_vf_rx: whether Rx MDD has occurred
|
||||
+ *
|
||||
+ * Since the queue can get stuck on VF MDD events, the PF can be configured to
|
||||
+ * automatically reset the VF by enabling the private ethtool flag
|
||||
+ * mdd-auto-reset-vf.
|
||||
+ */
|
||||
+static void ice_mdd_maybe_reset_vf(struct ice_pf *pf, struct ice_vf *vf,
|
||||
+ bool reset_vf_tx, bool reset_vf_rx)
|
||||
+{
|
||||
+ struct device *dev = ice_pf_to_dev(pf);
|
||||
+
|
||||
+ if (!test_bit(ICE_FLAG_MDD_AUTO_RESET_VF, pf->flags))
|
||||
+ return;
|
||||
+
|
||||
+ /* VF MDD event counters will be cleared by reset, so print the event
|
||||
+ * prior to reset.
|
||||
+ */
|
||||
+ if (reset_vf_tx)
|
||||
+ ice_print_vf_tx_mdd_event(vf);
|
||||
+
|
||||
+ if (reset_vf_rx)
|
||||
+ ice_print_vf_rx_mdd_event(vf);
|
||||
+
|
||||
+ dev_info(dev, "PF-to-VF reset on PF %d VF %d due to MDD event\n",
|
||||
+ pf->hw.pf_id, vf->vf_id);
|
||||
+ ice_reset_vf(vf, ICE_VF_RESET_NOTIFY | ICE_VF_RESET_LOCK);
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* ice_handle_mdd_event - handle malicious driver detect event
|
||||
* @pf: pointer to the PF structure
|
||||
@@ -1823,6 +1856,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
*/
|
||||
mutex_lock(&pf->vfs.table_lock);
|
||||
ice_for_each_vf(pf, bkt, vf) {
|
||||
+ bool reset_vf_tx = false, reset_vf_rx = false;
|
||||
+
|
||||
reg = rd32(hw, VP_MDET_TX_PQM(vf->vf_id));
|
||||
if (reg & VP_MDET_TX_PQM_VALID_M) {
|
||||
wr32(hw, VP_MDET_TX_PQM(vf->vf_id), 0xFFFF);
|
||||
@@ -1831,6 +1866,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
if (netif_msg_tx_err(pf))
|
||||
dev_info(dev, "Malicious Driver Detection event TX_PQM detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
+
|
||||
+ reset_vf_tx = true;
|
||||
}
|
||||
|
||||
reg = rd32(hw, VP_MDET_TX_TCLAN(vf->vf_id));
|
||||
@@ -1841,6 +1878,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
if (netif_msg_tx_err(pf))
|
||||
dev_info(dev, "Malicious Driver Detection event TX_TCLAN detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
+
|
||||
+ reset_vf_tx = true;
|
||||
}
|
||||
|
||||
reg = rd32(hw, VP_MDET_TX_TDPU(vf->vf_id));
|
||||
@@ -1851,6 +1890,8 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
if (netif_msg_tx_err(pf))
|
||||
dev_info(dev, "Malicious Driver Detection event TX_TDPU detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
+
|
||||
+ reset_vf_tx = true;
|
||||
}
|
||||
|
||||
reg = rd32(hw, VP_MDET_RX(vf->vf_id));
|
||||
@@ -1862,18 +1903,12 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
|
||||
dev_info(dev, "Malicious Driver Detection event RX detected on VF %d\n",
|
||||
vf->vf_id);
|
||||
|
||||
- /* Since the queue is disabled on VF Rx MDD events, the
|
||||
- * PF can be configured to reset the VF through ethtool
|
||||
- * private flag mdd-auto-reset-vf.
|
||||
- */
|
||||
- if (test_bit(ICE_FLAG_MDD_AUTO_RESET_VF, pf->flags)) {
|
||||
- /* VF MDD event counters will be cleared by
|
||||
- * reset, so print the event prior to reset.
|
||||
- */
|
||||
- ice_print_vf_rx_mdd_event(vf);
|
||||
- ice_reset_vf(vf, ICE_VF_RESET_LOCK);
|
||||
- }
|
||||
+ reset_vf_rx = true;
|
||||
}
|
||||
+
|
||||
+ if (reset_vf_tx || reset_vf_rx)
|
||||
+ ice_mdd_maybe_reset_vf(pf, vf, reset_vf_tx,
|
||||
+ reset_vf_rx);
|
||||
}
|
||||
mutex_unlock(&pf->vfs.table_lock);
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/ice/ice_sriov.c b/drivers/net/ethernet/intel/ice/ice_sriov.c
|
||||
index 31314e7540f8..442162be23ea 100644
|
||||
--- a/drivers/net/ethernet/intel/ice/ice_sriov.c
|
||||
+++ b/drivers/net/ethernet/intel/ice/ice_sriov.c
|
||||
@@ -1662,6 +1662,24 @@ void ice_print_vf_rx_mdd_event(struct ice_vf *vf)
|
||||
? "on" : "off");
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * ice_print_vf_tx_mdd_event - print VF Tx malicious driver detect event
|
||||
+ * @vf: pointer to the VF structure
|
||||
+ */
|
||||
+void ice_print_vf_tx_mdd_event(struct ice_vf *vf)
|
||||
+{
|
||||
+ struct ice_pf *pf = vf->pf;
|
||||
+ struct device *dev;
|
||||
+
|
||||
+ dev = ice_pf_to_dev(pf);
|
||||
+
|
||||
+ dev_info(dev, "%d Tx Malicious Driver Detection events detected on PF %d VF %d MAC %pM. mdd-auto-reset-vfs=%s\n",
|
||||
+ vf->mdd_tx_events.count, pf->hw.pf_id, vf->vf_id,
|
||||
+ vf->dev_lan_addr,
|
||||
+ test_bit(ICE_FLAG_MDD_AUTO_RESET_VF, pf->flags)
|
||||
+ ? "on" : "off");
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* ice_print_vfs_mdd_events - print VFs malicious driver detect event
|
||||
* @pf: pointer to the PF structure
|
||||
@@ -1670,8 +1688,6 @@ void ice_print_vf_rx_mdd_event(struct ice_vf *vf)
|
||||
*/
|
||||
void ice_print_vfs_mdd_events(struct ice_pf *pf)
|
||||
{
|
||||
- struct device *dev = ice_pf_to_dev(pf);
|
||||
- struct ice_hw *hw = &pf->hw;
|
||||
struct ice_vf *vf;
|
||||
unsigned int bkt;
|
||||
|
||||
@@ -1698,10 +1714,7 @@ void ice_print_vfs_mdd_events(struct ice_pf *pf)
|
||||
if (vf->mdd_tx_events.count != vf->mdd_tx_events.last_printed) {
|
||||
vf->mdd_tx_events.last_printed =
|
||||
vf->mdd_tx_events.count;
|
||||
-
|
||||
- dev_info(dev, "%d Tx Malicious Driver Detection events detected on PF %d VF %d MAC %pM.\n",
|
||||
- vf->mdd_tx_events.count, hw->pf_id, vf->vf_id,
|
||||
- vf->dev_lan_addr);
|
||||
+ ice_print_vf_tx_mdd_event(vf);
|
||||
}
|
||||
}
|
||||
mutex_unlock(&pf->vfs.table_lock);
|
||||
diff --git a/drivers/net/ethernet/intel/ice/ice_sriov.h b/drivers/net/ethernet/intel/ice/ice_sriov.h
|
||||
index 346cb2666f3a..7f733208d402 100644
|
||||
--- a/drivers/net/ethernet/intel/ice/ice_sriov.h
|
||||
+++ b/drivers/net/ethernet/intel/ice/ice_sriov.h
|
||||
@@ -58,6 +58,7 @@ void
|
||||
ice_vf_lan_overflow_event(struct ice_pf *pf, struct ice_rq_event_info *event);
|
||||
void ice_print_vfs_mdd_events(struct ice_pf *pf);
|
||||
void ice_print_vf_rx_mdd_event(struct ice_vf *vf);
|
||||
+void ice_print_vf_tx_mdd_event(struct ice_vf *vf);
|
||||
bool
|
||||
ice_vc_validate_pattern(struct ice_vf *vf, struct virtchnl_proto_hdrs *proto);
|
||||
#else /* CONFIG_PCI_IOV */
|
||||
@@ -67,6 +68,7 @@ static inline
|
||||
void ice_vf_lan_overflow_event(struct ice_pf *pf, struct ice_rq_event_info *event) { }
|
||||
static inline void ice_print_vfs_mdd_events(struct ice_pf *pf) { }
|
||||
static inline void ice_print_vf_rx_mdd_event(struct ice_vf *vf) { }
|
||||
+static inline void ice_print_vf_tx_mdd_event(struct ice_vf *vf) { }
|
||||
static inline void ice_restore_all_vfs_msi_state(struct pci_dev *pdev) { }
|
||||
|
||||
static inline int
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,33 @@
|
||||
From 7bd9084525e4174cbb3ea5af07589c0851f77c62 Mon Sep 17 00:00:00 2001
|
||||
From: Jiping Ma <jiping.ma2@windriver.com>
|
||||
Date: Tue, 13 Aug 2024 01:42:23 +0000
|
||||
Subject: [PATCH 2/2] ice: modify the ice driver min version to stx.3
|
||||
|
||||
Change the ice driver min version to stx.3 because we back ported
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
/commit/?id=cc2a9d6c03b804c301447326aff4cf2359867f9c (ice: Add
|
||||
automatic VF reset on Tx MDD events) from linux-6.10.y.
|
||||
|
||||
The ice driver version should be ice-6.6.40-stx.3.
|
||||
|
||||
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
||||
---
|
||||
Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 6fb76ccb9dd3..5807b310bdca 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1227,7 +1227,7 @@ uapi-asm-generic:
|
||||
|
||||
# KERNELRELEASE can change from a few different places, meaning version.h
|
||||
# needs to be updated, so this check is forced on all builds
|
||||
-ICE_STX = "-stx.2"
|
||||
+ICE_STX = "-stx.3"
|
||||
I40E_STX = "-stx.0"
|
||||
IAVF_STX = "-stx.0"
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
@ -62,3 +62,5 @@ ice-dpll/0044-ice-fix-pin-phase-adjust-updates-on-PF-reset.patch
|
||||
ice-dpll/0045-ice-fix-uninitialized-dplls-mutex-usage.patch
|
||||
ice-dpll/0046-dpll-fix-dpll_xa_ref_-_del-for-multiple-registration.patch
|
||||
ice-dpll/0047-ice-modify-the-ice-driver-min-version-to-stx.2.patch
|
||||
ice-mdd/0001-ice-Add-automatic-VF-reset-on-Tx-MDD-events.patch
|
||||
ice-mdd/0002-ice-modify-the-ice-driver-min-version-to-stx.3.patch
|
||||
|
Loading…
x
Reference in New Issue
Block a user