net/mlx5: fix VXLAN port registration race condition
authorViacheslav Ovsiienko <viacheslavo@mellanox.com>
Wed, 23 Jan 2019 07:51:18 +0000 (07:51 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 24 Jan 2019 13:53:10 +0000 (14:53 +0100)
commit71ab2d64723c8b7192eea01877012de7aa5c2476
treec96bf76a1f857863c7e8130323bdc6d52d5ee208
parent0deb984fd7e59746625e8a16b1b28b7b048971ee
net/mlx5: fix VXLAN port registration race condition

E-Switch VXLAN tunneling rules require virtual VXLAN network
devices be created. These devices are managed by MLX5 PMD and
created/deleted dynamically.

Kernel creates the VXLAN devices and registers VXLAN UDP ports
to be hardware offloaded within the NIC kernel drivers. The
registration process is being performed into context of working
kernel thread and the race conditions might happen.

The VXLAN device is created and success code is returned to calling
application, but the UDP port registration process is not completed
yet and the next applied rule might be rejected by the driver with
ENOSUP code. This patch adds some timeout for new created devices,
allowing port registration process to be completed. The waiting
is performed once after device been created and first rule is being
applied.

Fixes: 95a464cecc21 ("net/mlx5: add E-switch VXLAN tunnel devices management")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
drivers/net/mlx5/mlx5_flow_tcf.c