From 8e82ebe265feb5d3fa3d43682ecf102b28061a3c Mon Sep 17 00:00:00 2001 From: Dariusz Sosnowski Date: Mon, 14 Nov 2022 18:19:55 +0000 Subject: [PATCH] net/mlx5: document E-Switch limitations with HWS This patch adds the following limitations to the mlx5 PMD guide: - With HW Steering and E-Switch enabled, transfer proxy port must be started before any port representor. - With HW Steering and E-Switch enabled, all representors must be stopped before transfer proxy port is stopped. Documentation of mlx5 PMD's implementations of rte_eth_dev_start() and rte_eth_dev_stop() is updated accordingly: - rte_eth_dev_start() returns (-EAGAIN) when transfer proxy port cannot be started. - rte_eth_dev_stop() returns (-EBUSY) when port representor cannot be stopped. Signed-off-by: Dariusz Sosnowski Acked-by: Viacheslav Ovsiienko --- doc/guides/nics/mlx5.rst | 13 +++++++++++++ drivers/net/mlx5/mlx5_trigger.c | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index cf2bfcf4cb..51f51259e3 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -161,6 +161,19 @@ Limitations - NIC ConnectX-5 and before are not supported. - Partial match with item template is not supported. - IPv6 5-tuple matching is not supported. + - With E-Switch enabled, ports which share the E-Switch domain + should be started and stopped in a specific order: + + - When starting ports, the transfer proxy port should be started first + and port representors should follow. + - When stopping ports, all of the port representors + should be stopped before stopping the transfer proxy port. + + If ports are started/stopped in an incorrect order, + ``rte_eth_dev_start()``/``rte_eth_dev_stop()`` will return an appropriate error code: + + - ``-EAGAIN`` for ``rte_eth_dev_start()``. + - ``-EBUSY`` for ``rte_eth_dev_stop()``. - When using Verbs flow engine (``dv_flow_en`` = 0), flow pattern without any specific VLAN will match for VLAN packets as well: diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index fe6359908a..f54443ed1a 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -1138,6 +1138,10 @@ mlx5_hw_representor_port_allowed_start(struct rte_eth_dev *dev) * * @return * 0 on success, a negative errno value otherwise and rte_errno is set. + * The following error values are defined: + * + * - -EAGAIN: If port representor cannot be started, + * because transfer proxy port is not started. */ int mlx5_dev_start(struct rte_eth_dev *dev) @@ -1394,6 +1398,13 @@ mlx5_hw_proxy_port_allowed_stop(struct rte_eth_dev *dev) * * @param dev * Pointer to Ethernet device structure. + * + * @return + * 0 on success, a negative errno value otherwise and rte_errno is set. + * The following error values are defined: + * + * - -EBUSY: If transfer proxy port cannot be stopped, + * because other port representors are still running. */ int mlx5_dev_stop(struct rte_eth_dev *dev)