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 <dsosnowski@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
This commit is contained in:
Dariusz Sosnowski 2022-11-14 18:19:55 +00:00 committed by Thomas Monjalon
parent f359b71525
commit 8e82ebe265
2 changed files with 24 additions and 0 deletions

View File

@ -161,6 +161,19 @@ Limitations
- NIC ConnectX-5 and before are not supported. - NIC ConnectX-5 and before are not supported.
- Partial match with item template is not supported. - Partial match with item template is not supported.
- IPv6 5-tuple matching 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 - When using Verbs flow engine (``dv_flow_en`` = 0), flow pattern without any
specific VLAN will match for VLAN packets as well: specific VLAN will match for VLAN packets as well:

View File

@ -1138,6 +1138,10 @@ mlx5_hw_representor_port_allowed_start(struct rte_eth_dev *dev)
* *
* @return * @return
* 0 on success, a negative errno value otherwise and rte_errno is set. * 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 int
mlx5_dev_start(struct rte_eth_dev *dev) 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 * @param dev
* Pointer to Ethernet device structure. * 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 int
mlx5_dev_stop(struct rte_eth_dev *dev) mlx5_dev_stop(struct rte_eth_dev *dev)