I hit a failure during ports drop queue RQ creation when my adapters are on CPU socket ID 1 instead of socket ID 0: .... EAL: Probe PCI driver: mlx5_pci (15b3:1019) device: 0020:01:00.0 (socket 1) EAL: set_mempolicy failed: Invalid argument mlx5_common: Failed to allocate memory for RQ. mlx5_net: Port 0 drop queue RQ creation failed. mlx5_net: Cannot create drop RX queue mlx5_net: probe of PCI device 0020:01:00.0 aborted after encountering an error: Success EAL: Probe PCI driver: mlx5_pci (15b3:1019) device: 0020:01:00.1 (socket 1) EAL: set_mempolicy failed: Invalid argument mlx5_common: Failed to allocate memory for RQ. mlx5_net: Port 0 drop queue RQ creation failed. mlx5_net: Cannot create drop RX queue mlx5_net: probe of PCI device 0020:01:00.1 aborted after encountering an error: Success TELEMETRY: No legacy callbacks, legacy socket not created testpmd: No probed ethernet devices ...
The patch sets the correct CPU socket ID for the mlx5_rxq_ctrl before calling the mlx5_rxq_create_devx_rq_resources() which eventually calls mlx5_devx_rq_create() with correct CPU socket ID. Result with this patch: ...... EAL: Probe PCI driver: mlx5_pci (15b3:1019) device: 0020:01:00.0 (socket 1) EAL: Probe PCI driver: mlx5_pci (15b3:1019) device: 0020:01:00.1 (socket 1) TELEMETRY: No legacy callbacks, legacy socket not created Interactive-mode selected ...... Configuring Port 0 (socket 1) Port 0: 0C:42:A1:ED:C1:20 Configuring Port 1 (socket 1) Port 1: 0C:42:A1:ED:C1:21 Checking link statuses... Done Signed-off-by: Thinh Tran <thin...@linux.vnet.ibm.com> Reviewed-by: David Christensen <d...@linux.vnet.ibm.com> --- drivers/net/mlx5/mlx5_devx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c index af106bda50..5ab092a259 100644 --- a/drivers/net/mlx5/mlx5_devx.c +++ b/drivers/net/mlx5/mlx5_devx.c @@ -947,6 +947,8 @@ mlx5_rxq_devx_obj_drop_create(struct rte_eth_dev *dev) rte_errno = ENOMEM; goto error; } + /* set the CPU socket ID where the rxq_ctrl was allocated */ + rxq_ctrl->socket = socket_id; rxq_obj->rxq_ctrl = rxq_ctrl; rxq_ctrl->is_hairpin = false; rxq_ctrl->sh = priv->sh; -- 2.27.0