[pull request][net-next 00/13] Mellanox, mlx5 updates 2018-07-27 (Vxlan updates)

Saeed Mahameed
2018-07-27T22:40:43Z

Hi Dave,

This series from Gal and Saeed provides updates to mlx5 vxlan implementation.

For more information please see tag log below.

Please pull and let me know if there's any problem.

Thanks,
Saeed.

---

The following changes since commit 1f3ed383fb9a073ae2e408cd7a0717b04c7c3a21:

net: sched: don't dump chains only held by actions (2018-07-27 09:38:46 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5e-updates-2018-07-27

for you to fetch changes up to 50920f3f268405af2b047ae9277efdbf4ed7510f:

net/mlx5e: Issue direct lookup on vxlan ports by vport representors (2018-07-27 13:57:55 -0700)

----------------------------------------------------------------
mlx5e-updates-2018-07-27 (Vxlan updates)

This series from Gal and Saeed provides updates to mlx5 vxlan implementation.

Gal, started with three cleanups to reflect the actual hardware vxlan state
- reflect 4789 UDP port default addition to software database
- check maximum number of vxlan UDP ports
- cleanup an unused member in vxlan work

Then Gal provides two performance optimizations by replacing the
vxlan radix tree with a hash table, and replacing the vxlan table
spin lock with a read-write lock.

Measuring mlx5e_vxlan_lookup_port execution time:

Radix Tree Hash Table
--------------- ------------ ------------
Single Stream 161 ns 79 ns (51% improvement)
Multi Stream 259 ns 136 ns (47% improvement)

Measuring UDP stream packet rate, single fully utilized TX core:
Radix Tree: 498,300 PPS
Hash Table: 555,468 PPS (11% improvement)

Next, from Saeed, vxlan refactoring to allow sharing the vxlan table
between different mlx5 netdevice instances like PF and VF representors,
this is done by making mlx5 vxlan interface more generic and decoupling
it from PF netdevice structures and logic, then moving it into mlx5 core
as a low level interface so it can be used by VF representors, which is
illustrated in the last patch of the serious.

-Saeed.

----------------------------------------------------------------
Gal Pressman (5):
net/mlx5e: Vxlan, reflect 4789 UDP port default addition to software database
net/mlx5e: Vxlan, check maximum number of UDP ports
net/mlx5e: Vxlan, replace ports radix-tree with hash table
net/mlx5e: Vxlan, replace spinlock with read-write lock
net/mlx5e: Vxlan, cleanup an unused member in vxlan work

Saeed Mahameed (8):
net/mlx5e: Vxlan, add direct delete function
net/mlx5e: Vxlan, move netdev only logic to en_main.c
net/mlx5e: Vxlan, rename struct mlx5e_vxlan to mlx5_vxlan_port
net/mlx5e: Vxlan, rename from mlx5e to mlx5
net/mlx5e: Vxlan, return values for add/del port
net/mlx5e: Vxlan, add sync lock for add/del vxlan port
net/mlx5e: Vxlan, move vxlan logic to core driver
net/mlx5e: Issue direct lookup on vxlan ports by vport representors

drivers/net/ethernet/mellanox/mlx5/core/Makefile | 4 +-
drivers/net/ethernet/mellanox/mlx5/core/en.h | 6 -
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 71 ++++++-
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 14 +-
.../net/ethernet/mellanox/mlx5/core/lib/vxlan.c | 230 +++++++++++++++++++++
.../ethernet/mellanox/mlx5/core/{ => lib}/vxlan.h | 39 ++--
drivers/net/ethernet/mellanox/mlx5/core/main.c | 5 +
drivers/net/ethernet/mellanox/mlx5/core/vxlan.c | 190 -----------------
include/linux/mlx5/driver.h | 2 +
include/linux/mlx5/mlx5_ifc.h | 4 +-
10 files changed, 325 insertions(+), 240 deletions(-)
create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c
rename drivers/net/ethernet/mellanox/mlx5/core/{ => lib}/vxlan.h (66%)
delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/vxlan.c