mbox

[pull,request,net-next,0/9] Mellanox, mlx5 updates 2019-05-31

Message ID 20190531200838.25184-1-saeedm@mellanox.com
State Accepted
Delegated to: David Miller
Headers show

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2019-05-31

Message

Saeed Mahameed May 31, 2019, 8:09 p.m. UTC
Hi Dave,

This series adds misc updates to mlx5 driver.
For more information please see tag log below.

Please pull and let me know if there is any problem.

Please note that the series starts with a merge of mlx5-next branch,
to resolve and avoid dependency with rdma tree.

Thanks,
Saeed.

---
The following changes since commit 7fe4d43eccde0dc83131aca206e07e00673f43aa:

  Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux (2019-05-31 13:04:06 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2019-05-31

for you to fetch changes up to ca6c7df00a89206f142365091c689059fc0b67bf:

  net/mlx5e: TX, Improve performance under GSO workload (2019-05-31 13:04:26 -0700)

----------------------------------------------------------------
mlx5-updates-2019-05-31

This series provides some updates to mlx5 core and netdevice driver.

1) use __netdev_tx_sent_queue() to improve performance under GSO workload

2) Allow matching only enc_key_id/enc_dst_port for decapsulation action

3) Geneve support:
This patchset adds support for GENEVE tunnel encap/decap flows offload:
encapsulating layer 2 Ethernet frames within layer 4 UDP datagrams.
The driver supports 6081 destination UDP port number, which is the
default IANA-assigned port.

Encap:
  ConnectX-5 inserts the header (w/ or w/o Geneve TLV options) that is
  provided by the mlx5 driver to the outgoing packet.

Decap:
  Geneve header is matched and the packet is decapsulated.
  Notes about decap flows with Geneve TLV Options:
   - Support offloading of 32-bit options data only
   - At any given time, only one combination of class/type parameters
     can be offloaded, but the same class/type combination can have
     many different flows offloaded with different 32-bit option data
   - Options with value of 0 can't be offloaded

Managing Geneve TLV options:
  Matching (on receive) is done by ConnectX-5 flex parser.
  Geneve TLV options are managed using General Object of type
  “Geneve TLV Options”.

  When the first flow with a certain class/type values is requested
  to be offloaded, the driver creates a FW object with FW command
  (Geneve TLV Options general object) and starts counting the number
  of flows using this object.

  During this time, any request with a different class/type values
  will fail to be offloaded.
  Once the refcount reaches 0, the driver destroys the TLV options
  general object, and can now offload a flow with any class/type parameters.

  Geneve TLV Options object is added to core device.
  It is currently used to manage Geneve TLV options general
  object allocation in FW and its reference counting only.

  In the future it will also be used for managing geneve ports
  by registering callbacks for ndo_udp_tunnel_add/del.

TC tunnel code refactoring:
  As a preparation for Geneve code, the TC tunnel code in mlx5
  was rearranged in a modular way, so that it would be easier
  to add future tunnels:
   - Defined tc tunnel object with the fields and callbacks that
     any tunnel must implement.
   - Define tc UDP tunnel object for UDP tunnels, such as VXLAN
   - Move each tunnel code (GRE, VXLAN) to its own separate file
   - Rewrite tc tunnel implementation in a general way – using
     only the objects and their callbacks.

4) Termination tables:
Actions in tables set with the termination flag are guaranteed to terminate
the action list. Thus, potential looping functionality (e.g. haripin) can safely be
executed without potential loops.

----------------------------------------------------------------
Erez Alfasi (1):
      net/mlx5e: TX, Improve performance under GSO workload

Oz Shlomo (1):
      net/mlx5e: Use termination table for VLAN push actions

Tonghao Zhang (1):
      net/mlx5e: Allow matching only enc_key_id/enc_dst_port for decapsulation action

Vu Pham (1):
      net/mlx5e: Generalize vport type in vport representor

Yevgeny Kliteynik (5):
      net/mlx5e: Enable setting multiple match criteria for flow group
      net/mlx5: Geneve, Manage Geneve TLV options
      net/mlx5e: Geneve, Keep tunnel info as pointer to the original struct
      net/mlx5e: Rearrange tc tunnel code in a modular way
      net/mlx5e: Geneve, Add support for encap/decap flows offload

 drivers/net/ethernet/mellanox/mlx5/core/Makefile   |   7 +-
 .../net/ethernet/mellanox/mlx5/core/en/tc_tun.c    | 287 ++++++------------
 .../net/ethernet/mellanox/mlx5/core/en/tc_tun.h    |  41 ++-
 .../ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c | 335 +++++++++++++++++++++
 .../ethernet/mellanox/mlx5/core/en/tc_tun_gre.c    |  95 ++++++
 .../ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c  | 151 ++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c   |  52 ++--
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.h   |   5 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c    |  74 ++---
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c    |   7 +-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.h  |  22 ++
 .../ethernet/mellanox/mlx5/core/eswitch_offloads.c |  23 +-
 .../mellanox/mlx5/core/eswitch_offloads_termtbl.c  | 277 +++++++++++++++++
 .../net/ethernet/mellanox/mlx5/core/lib/geneve.c   | 157 ++++++++++
 .../net/ethernet/mellanox/mlx5/core/lib/geneve.h   |  33 ++
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |   4 +
 include/linux/mlx5/driver.h                        |   2 +
 17 files changed, 1293 insertions(+), 279 deletions(-)
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_gre.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/lib/geneve.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/lib/geneve.h

Comments

David Miller June 3, 2019, 8:43 p.m. UTC | #1
From: Saeed Mahameed <saeedm@mellanox.com>
Date: Fri, 31 May 2019 20:09:19 +0000

> This series adds misc updates to mlx5 driver.
> For more information please see tag log below.
> 
> Please pull and let me know if there is any problem.
> 
> Please note that the series starts with a merge of mlx5-next branch,
> to resolve and avoid dependency with rdma tree.

Pulled, thanks.