Skip to content

Commit

Permalink
net/mlx5: fix port initialization with small LRO
Browse files Browse the repository at this point in the history
[ upstream commit b9f1f4c ]

If application provided maximal LRO size was less than expected PMD
minimum, the PMD either crashed with assert, if asserts were enabled,
or proceeded with port initialization to set port private maximal
LRO size below supported minimum.

The patch terminates port start if LRO size
does not match PMD requirements and TCP LRO offload was requested
at least for one Rx queue.

Fixes: 50c00ba ("net/mlx5: limit LRO size to maximum Rx packet")

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
  • Loading branch information
getelson-at-mellanox authored and kevintraynor committed Nov 23, 2022
1 parent 815d594 commit 4f1a129
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
1 change: 0 additions & 1 deletion drivers/net/mlx5/mlx5_rxq.c
Expand Up @@ -1534,7 +1534,6 @@ mlx5_max_lro_msg_size_adjust(struct rte_eth_dev *dev, uint16_t idx,
MLX5_MAX_TCP_HDR_OFFSET)
max_lro_size -= MLX5_MAX_TCP_HDR_OFFSET;
max_lro_size = RTE_MIN(max_lro_size, MLX5_MAX_LRO_SIZE);
MLX5_ASSERT(max_lro_size >= MLX5_LRO_SEG_CHUNK_SIZE);
max_lro_size /= MLX5_LRO_SEG_CHUNK_SIZE;
if (priv->max_lro_msg_size)
priv->max_lro_msg_size =
Expand Down
16 changes: 16 additions & 0 deletions drivers/net/mlx5/mlx5_trigger.c
Expand Up @@ -1089,6 +1089,22 @@ mlx5_dev_start(struct rte_eth_dev *dev)
else
rte_net_mlx5_dynf_inline_mask = 0;
if (dev->data->nb_rx_queues > 0) {
uint32_t max_lro_msg_size = priv->max_lro_msg_size;

if (max_lro_msg_size < MLX5_LRO_SEG_CHUNK_SIZE) {
uint32_t i;
struct mlx5_rxq_priv *rxq;

for (i = 0; i != priv->rxqs_n; ++i) {
rxq = mlx5_rxq_get(dev, i);
if (rxq && rxq->ctrl && rxq->ctrl->rxq.lro) {
DRV_LOG(ERR, "port %u invalid max LRO size",
dev->data->port_id);
rte_errno = EINVAL;
return -rte_errno;
}
}
}
ret = mlx5_dev_configure_rss_reta(dev);
if (ret) {
DRV_LOG(ERR, "port %u reta config failed: %s",
Expand Down

0 comments on commit 4f1a129

Please sign in to comment.