[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190531200838.25184-1-saeedm@mellanox.com>
Date: Fri, 31 May 2019 20:09:19 +0000
From: Saeed Mahameed <saeedm@...lanox.com>
To: "David S. Miller" <davem@...emloft.net>
CC: "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
Saeed Mahameed <saeedm@...lanox.com>
Subject: [pull request][net-next 0/9] Mellanox, mlx5 updates 2019-05-31
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
Powered by blists - more mailing lists