[2/8] net/ice: enhance debug when HW fails to transmit

Message ID 20240405125039.897933-3-david.marchand@redhat.com (mailing list archive)
State Superseded
Delegated to: Thomas Monjalon
Headers
Series Fix outer UDP checksum for Intel nics |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

David Marchand April 5, 2024, 12:49 p.m. UTC
  At the moment, if the driver sets an incorrect Tx descriptor, the HW
will raise a MDD event reported as:
ice_interrupt_handler(): OICR: MDD event

Add some debug info for this case and the VF index in all logs.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 drivers/net/ice/ice_ethdev.c | 29 +++++++++++++++++++++++++----
 1 file changed, 25 insertions(+), 4 deletions(-)
  

Patch

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 87385d2649..fd494e6b3b 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -1389,6 +1389,7 @@  ice_interrupt_handler(void *param)
 	uint32_t oicr;
 	uint32_t reg;
 	uint8_t pf_num;
+	uint16_t vf_num;
 	uint8_t event;
 	uint16_t queue;
 	int ret;
@@ -1432,28 +1433,48 @@  ice_interrupt_handler(void *param)
 		if (reg & GL_MDET_TX_PQM_VALID_M) {
 			pf_num = (reg & GL_MDET_TX_PQM_PF_NUM_M) >>
 				 GL_MDET_TX_PQM_PF_NUM_S;
+			vf_num = (reg & GL_MDET_TX_PQM_VF_NUM_M) >>
+				 GL_MDET_TX_PQM_VF_NUM_S;
 			event = (reg & GL_MDET_TX_PQM_MAL_TYPE_M) >>
 				GL_MDET_TX_PQM_MAL_TYPE_S;
 			queue = (reg & GL_MDET_TX_PQM_QNUM_M) >>
 				GL_MDET_TX_PQM_QNUM_S;
 
 			PMD_DRV_LOG(WARNING, "Malicious Driver Detection event "
-				    "%d by PQM on TX queue %d PF# %d",
-				    event, queue, pf_num);
+				    "%d by PQM on TX queue %d PF# %d VF# %d",
+				    event, queue, pf_num, vf_num);
 		}
 
 		reg = ICE_READ_REG(hw, GL_MDET_TX_TCLAN);
 		if (reg & GL_MDET_TX_TCLAN_VALID_M) {
 			pf_num = (reg & GL_MDET_TX_TCLAN_PF_NUM_M) >>
 				 GL_MDET_TX_TCLAN_PF_NUM_S;
+			vf_num = (reg & GL_MDET_TX_TCLAN_VF_NUM_M) >>
+				 GL_MDET_TX_TCLAN_VF_NUM_S;
 			event = (reg & GL_MDET_TX_TCLAN_MAL_TYPE_M) >>
 				GL_MDET_TX_TCLAN_MAL_TYPE_S;
 			queue = (reg & GL_MDET_TX_TCLAN_QNUM_M) >>
 				GL_MDET_TX_TCLAN_QNUM_S;
 
 			PMD_DRV_LOG(WARNING, "Malicious Driver Detection event "
-				    "%d by TCLAN on TX queue %d PF# %d",
-				    event, queue, pf_num);
+				    "%d by TCLAN on TX queue %d PF# %d VF# %d",
+				    event, queue, pf_num, vf_num);
+		}
+
+		reg = ICE_READ_REG(hw, GL_MDET_TX_TDPU);
+		if (reg & GL_MDET_TX_TDPU_VALID_M) {
+			pf_num = (reg & GL_MDET_TX_TDPU_PF_NUM_M) >>
+				 GL_MDET_TX_TDPU_PF_NUM_S;
+			vf_num = (reg & GL_MDET_TX_TDPU_VF_NUM_M) >>
+				 GL_MDET_TX_TDPU_VF_NUM_S;
+			event = (reg & GL_MDET_TX_TDPU_MAL_TYPE_M) >>
+				GL_MDET_TX_TDPU_MAL_TYPE_S;
+			queue = (reg & GL_MDET_TX_TDPU_QNUM_M) >>
+				GL_MDET_TX_TDPU_QNUM_S;
+
+			PMD_DRV_LOG(WARNING, "Malicious Driver Detection event "
+				    "%d by TDPU on TX queue %d PF# %d VF# %d",
+				    event, queue, pf_num, vf_num);
 		}
 	}
 done: