Skip to contentSkip to conversation

drivers/net/mlx5: fix representor interrupts handler

PATCH In review Gregory Etelson 2 participants 7 messages Oct 28, 2020 – Nov 22, 2020 Network drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 drivers/net/mlx5: fix representor interrupts handler

Representor is a port in DPDK that is connected to a VF in such a way that assuming there are no offload flows, each packet that is sent from the VF will be received by the corresponding representor. While each packet that is sent to a representor will be received by the VF. This is very useful in case of SRIOV mode, where the first packet that is sent by the VF will be received by the DPDK application which will decide if this flow should be offloaded to the E-Switch.

Representor shares interrupts handler with host PF over the PCI address. Therefore after PF completes it's interrupts handler initialization no additional actions required for representor.

Fixes 26c08b979d26 ("net/mlx5: add port representor awareness")
---
 drivers/net/mlx5/mlx5_rxq.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
drivers/net/mlx5/mlx5_rxq.c +10 -0
index 8d05315e61..df8542f7db 100644
@@ -902,6 +902,11 @@ mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev)
 	unsigned int count = 0;
 	struct rte_intr_handle *intr_handle = dev->intr_handle;
 
+	/**
+	 * representor shares dev->intr_handle with PF
+	 */
+	if (priv->representor)
+		return 0;
 	if (!dev->data->dev_conf.intr_conf.rxq)
 		return 0;
 	mlx5_rx_intr_vec_disable(dev);
@@ -982,6 +987,11 @@ mlx5_rx_intr_vec_disable(struct rte_eth_dev *dev)
 	unsigned int rxqs_n = priv->rxqs_n;
 	unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID);
 
+	/**
+	 * representor shares dev->intr_handle with PF
+	 */
+	if (priv->representor)
+		return;
 	if (!dev->data->dev_conf.intr_conf.rxq)
 		return;
 	if (!intr_handle->intr_vec)
Signature · 1 line
2.28.0
#1 lore raw

PATCH 2/2 examples/l3fwd-power: fix check_ptype query

l3fwd-power uses `--parse-ptype' parameter to query egress packets type. Before that feature is eanbled l3fwd-power verifies PMD ability to advertise supporrtred packet types with rte_eth_dev_get_supported_ptypes().

The patch updates code for PMDs that register supported types after dev_start.

Fixes 82bea4661626 ("examples/l3fwd-power: add --parse-ptype option")
---
 examples/l3fwd-power/main.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
examples/l3fwd-power/main.c +6 -3
index a48d75f68f..a18a25f316 100644
@@ -2702,9 +2702,7 @@ main(int argc, char **argv)
 				if (add_cb_parse_ptype(portid, queueid) < 0)
 					rte_exit(EXIT_FAILURE,
 						 "Fail to add ptype cb\n");
-			} else if (!check_ptype(portid))
-				rte_exit(EXIT_FAILURE,
-					 "PMD can not provide needed ptypes\n");
+			}
 		}
 	}
 
@@ -2735,6 +2733,11 @@ main(int argc, char **argv)
 		}
 		/* initialize spinlock for each port */
 		rte_spinlock_init(&(locks[portid]));
+
+		if (!parse_ptype)
+			if (!check_ptype(portid))
+				rte_exit(EXIT_FAILURE,
+					"PMD can not provide needed ptypes\n");
 	}
 
 	check_all_ports_link_status(enabled_port_mask);
Signature · 1 line
2.28.0
#2 lore raw
In reply to Gregory Etelson

28/10/2020 10:59, Gregory Etelson:

Quoted 10 lines

Representor is a port in DPDK that is connected to a VF in such a way that assuming there are no offload flows, each packet that is sent from the VF will be received by the corresponding representor. While each packet that is sent to a representor will be received by the VF. This is very useful in case of SRIOV mode, where the first packet that is sent by the VF will be received by the DPDK application which will decide if this flow should be offloaded to the E-Switch.

Representor shares interrupts handler with host PF over the PCI address. Therefore after PF completes it's interrupts handler

it's -> its

Quoted 1 line

initialization no additional actions required for representor.

comma missing after "initialization"

drivers/net/mlx5/mlx5_rxq.c mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev) · line 907

Quoted 10 lines
Fixes 26c08b979d26 ("net/mlx5: add port representor awareness")

---

drivers/net/mlx5/mlx5_rxq.c +3 -0
+	/**
+	 * representor shares dev->intr_handle with PF
+	 */

The style in mlx5 is to start comments with a capital letter and to end with a period.
Moreover, it does not have to be a doxygen-style comment, and can be on one line.

Matan, Slava, please check such details in reviews.

#3 lore raw

PATCH v2 1/2 examples/l3fwd-power: fix check_ptype query

In reply to Gregory Etelson

l3fwd-power uses `--parse-ptype' parameter to query egress packets type. Before that feature is eanbled l3fwd-power verifies PMD ability to advertise supporrtred packet types with rte_eth_dev_get_supported_ptypes().

The patch updates code for PMDs that register supported types after dev_start.

Fixes 82bea4661626 ("examples/l3fwd-power: add --parse-ptype option")
---
 examples/l3fwd-power/main.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
examples/l3fwd-power/main.c +6 -3
index 2874285c4e..995a3b6ad7 100644
@@ -2707,9 +2707,7 @@ main(int argc, char **argv)
 				if (add_cb_parse_ptype(portid, queueid) < 0)
 					rte_exit(EXIT_FAILURE,
 						 "Fail to add ptype cb\n");
-			} else if (!check_ptype(portid))
-				rte_exit(EXIT_FAILURE,
-					 "PMD can not provide needed ptypes\n");
+			}
 		}
 	}
 
@@ -2740,6 +2738,11 @@ main(int argc, char **argv)
 		}
 		/* initialize spinlock for each port */
 		rte_spinlock_init(&(locks[portid]));
+
+		if (!parse_ptype)
+			if (!check_ptype(portid))
+				rte_exit(EXIT_FAILURE,
+					"PMD can not provide needed ptypes\n");
 	}
 
 	check_all_ports_link_status(enabled_port_mask);
Signature · 1 line
2.29.2
#4 lore raw

PATCH v2 2/2 drivers/net/mlx5: fix representor interrupts handler

Representor is a port in DPDK that is connected to a VF in such a way that assuming there are no offload flows, each packet that is sent from the VF will be received by the corresponding representor. While each packet that is sent to a representor will be received by the VF. This is very useful in case of SRIOV mode, where the first packet that is sent by the VF will be received by the DPDK application which will decide if this flow should be offloaded to the E-Switch.

Representor shares interrupts handler with host PF over the PCI address. Therefore, after PF completes its interrupts handler initialization, no additional actions required for representor.

Fixes 26c08b979d26 ("net/mlx5: add port representor awareness")
---
 drivers/net/mlx5/mlx5_rxq.c | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/net/mlx5/mlx5_rxq.c +6 -0
index 0693c924d0..1e2fe706ad 100644
@@ -902,6 +902,9 @@ mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev)
 	unsigned int count = 0;
 	struct rte_intr_handle *intr_handle = dev->intr_handle;
 
+	/* Representor shares dev->intr_handle with PF. */
+	if (priv->representor)
+		return 0;
 	if (!dev->data->dev_conf.intr_conf.rxq)
 		return 0;
 	mlx5_rx_intr_vec_disable(dev);
@@ -982,6 +985,9 @@ mlx5_rx_intr_vec_disable(struct rte_eth_dev *dev)
 	unsigned int rxqs_n = priv->rxqs_n;
 	unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID);
 
+	/* Representor shares dev->intr_handle with PF. */
+	if (priv->representor)
+		return;
 	if (!dev->data->dev_conf.intr_conf.rxq)
 		return;
 	if (!intr_handle->intr_vec)
Signature · 1 line
2.29.2
#5 lore raw

17/11/2020 19:49, Gregory Etelson:

Quoted 12 lines

Representor is a port in DPDK that is connected to a VF in such a way that assuming there are no offload flows, each packet that is sent from the VF will be received by the corresponding representor. While each packet that is sent to a representor will be received by the VF. This is very useful in case of SRIOV mode, where the first packet that is sent by the VF will be received by the DPDK application which will decide if this flow should be offloaded to the E-Switch.

Representor shares interrupts handler with host PF over the PCI address. Therefore, after PF completes its interrupts handler initialization, no additional actions required for representor.

Quoted 6 lines
Fixes 26c08b979d26 ("net/mlx5: add port representor awareness")
---
 drivers/net/mlx5/mlx5_rxq.c | 6 ++++++

I don't understand why this patch was in the same series as the l3fwd-power fix.
So the whole series is delegated to me and I merge both.

Applied

#6 lore raw

Re: [dpdk-dev] [PATCH v2 1/2] examples/l3fwd-power: fix check_ptype query

In reply to Gregory Etelson

I was expecting a review from David Hunt.
Let's proceed.

17/11/2020 19:49, Gregory Etelson:

Quoted 2 lines

l3fwd-power uses `--parse-ptype' parameter to query egress packets type. Before that feature is eanbled l3fwd-power verifies PMD ability

typo: eanbled -> enabled

Quoted 1 line

to advertise supporrtred packet types with

double typo: supporrtred -> supported

Quoted 1 line

rte_eth_dev_get_supported_ptypes().

Adding the note from ethdev API description:
"
Better to invoke this API after the device is already started or rx burst function is decided, to obtain correct supported ptypes.
"

Quoted 6 lines

The patch updates code for PMDs that register supported types after dev_start.

Fixes 82bea4661626 ("examples/l3fwd-power: add --parse-ptype option")

Applied, thanks