History log of /freebsd-current/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c
Revision Date Author Comments
# 76ed99ed 18-Feb-2023 Mark Bloch <mbloch@nvidia.com>

mlx5: Use software enum in APIs instead of PRM

Users of the steering APIs shouldn't use the PRM directly.
Create an software enum to be used instead.

Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Sponsored by: NVidia networking
MFC after: 1 week


# cb054a49 19-Feb-2023 Mark Bloch <mbloch@nvidia.com>

mlx5: Refactor flow actions into a struct

Create a struct to hold flow actions to be used when creating
a flow rule.

Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Sponsored by: NVidia networking
MFC after: 1 week


# 95ee2897 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# b0b87d91 18-Apr-2023 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5: Make mlx5_del_flow_rule() NULL safe.

This change factors out repeated NULL checks.

No functional change intended.

MFC after: 1 week
Sponsored by: NVIDIA Networking


# 5dc00f00 19-Sep-2022 Justin Hibbits <jhibbits@FreeBSD.org>

Mechanically convert mlx5en(4) to IfAPI

Reviewed by: zlei
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D38595


# 04f407a3 10-Feb-2022 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5en: Make sure the NIC IP addresses are written to firmware on link up.

Fixes e059c120b4223fd5ec3af9def21c0519f439fe57 .

PR: 261746
MFC after: 1 day
Sponsored by: NVIDIA Networking


# 001106f8 01-Feb-2022 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5en: Create flowtables in correct order.

Because it affects how the flow tables may re-direct traffic.

MFC after: 1 week
Sponsored by: NVIDIA Networking


# 2c0ade80 01-Feb-2022 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5: Implement flow steering helper functions for TCP sockets.

This change adds convenience functions to setup a flow steering rule based on
a TCP socket. The helper function gets all the address information from the
socket and returns a steering rule, to be used with HW TLS RX offload.

MFC after: 1 week
Sponsored by: NVIDIA Networking


# e059c120 01-Feb-2022 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5en: Create and destroy all flow tables and rules when the network interface attaches and detaches.

Previously flow steering tables and rules were only created and destroyed
at link up and down events, respectivly. Due to new requirements for adding
TLS RX flow tables and rules, the main flow steering table must always be
available as there are permanent redirections from the TLS RX flow table
to the vlan flow table.

MFC after: 1 week
Sponsored by: NVIDIA Networking


# 9680b1ba 01-Feb-2022 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5en: Only delete installed VxLAN rules.

MFC after: 1 week
Sponsored by: NVIDIA Networking


# 6176a5e3 01-Feb-2022 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5en: Fix inverted logical assignment.

MFC after: 1 week
Sponsored by: NVIDIA Networking


# 89918a23 14-Jun-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: idiomatic use of preprocessor, in particular paths

MFC after: 1 week
Sponsored by: NVIDIA Networking


# b984b956 14-Jun-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: normalize use of the opt_*.h files

MFC after: 1 week
Sponsored by: NVIDIA Networking


# b1277d42 26-Apr-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: add ASCII art providing an overview of flow tables organization

Reviewed by: hselasky
Sponsored by: Mellanox Technologies/NVidia Networking
MFC after: 1 week


# 2f7ce232 16-Jun-2021 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5en: Add missing error case when creating VXLAN flow tables.

While at it remove redundant checks for IFCAP_VXLAN_HWCSUM flag.

MFC after: 1 week
Reviewed by: kib
Sponsored by: Mellanox Technologies // NVIDIA Networking


# 48acda2b 20-Apr-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: Honor IFCAP_VXLAN_HWCSUM

In particular, avoid creating TIR or installing flow rules for VXLAN
if the capability is disabled.

Reported and reviewed by: hselasky
Sponsored by: Mellanox Technologies/NVidia Networking
MFC after: 1 week


# 0e4cb0d5 14-Apr-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: remove all dynamic vxlan steering rules on close and reinstall on open

Reviewed by: hselasky
Sponsored by: Mellanox Technologies/NVidia Networking
MFC after: 1 week


# 559eaa44 14-Apr-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: add mlx5e_add_vxlan_rule_from_db() helper

Reviewed by: hselasky
Sponsored by: Mellanox Technologies/NVidia Networking
MFC after: 1 week


# e012189d 14-Apr-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: remove unneeded protocol and port parameters from mlx5e_add_vxal_rule

the values are already passed in the db element

Reviewed by: hselasky
Sponsored by: Mellanox Technologies/NVidia Networking
MFC after: 1 week


# 861a612d 05-Apr-2021 Konstantin Belousov <konstantinb@nvidia.com>

mlx5en: register vxlan start/stop handlers

Handlers maintain flow rules and inform hardware about non-standard VxLAN
port in use. The database of the vxlan end points is maintained.

Reviewed by: hselasky
Sponsored by: Mellanox Technologies/NVidia Networking
MFC after: 1 week


# f6ca0b21 18-Mar-2020 Konstantin Belousov <kib@FreeBSD.org>

mlx5: Integrate eswitch and mpfs management code.

Reviewed by: hselasky
Sponsored by: Mellanox Technologies
MFC after: 2 weeks


# 20b26072 14-Oct-2019 Gleb Smirnoff <glebius@FreeBSD.org>

Convert to if_foreach_llmaddr() KPI.

Reviewed by: hselasky


# 6b4040d8 02-Oct-2019 Hans Petter Selasky <hselasky@FreeBSD.org>

Unify prints in mlx5en(4).

All prints in mlx5en(4) should use on of the macros:
mlx5_en_err/dbg/warn

Submitted by: slavash@
MFC after: 3 days
Sponsored by: Mellanox Technologies


# 66b38bfe 02-Oct-2019 Hans Petter Selasky <hselasky@FreeBSD.org>

Add support for Multi-Physical Function Switch, MPFS, in mlx5en.

MPFS is a logical switch in the Mellanox device which forward packets
based on a hardware driven L2 address table, to one or more physical-
or virtual- functions. The physical- or virtual- function is required
to tell the MPFS by using the MPFS firmware commands, which unicast
MAC addresses it is requesting from the physical port's traffic.
Broadcast and multicast traffic however, is copied to all listening
physical- and virtual- functions and does not need a rule in the MPFS
switching table.

Linux commit: eeb66cdb682678bfd1f02a4547e3649b38ffea7e
MFC after: 3 days
Sponsored by: Mellanox Technologies


# 2db3dd50 02-Oct-2019 Hans Petter Selasky <hselasky@FreeBSD.org>

Implement macro for asserting priv lock in mlx5en.

MFC after: 3 days
Sponsored by: Mellanox Technologies


# 39c6d43e 08-May-2019 Hans Petter Selasky <hselasky@FreeBSD.org>

Ensure the flowtable rules are not freed twice in mlx5en(4).
This can happen when re-loading the driver.

MFC after: 3 days
Sponsored by: Mellanox Technologies


# f5233a73 08-May-2019 Hans Petter Selasky <hselasky@FreeBSD.org>

Undo previous steps upon returning failure in mlx5en(4).

Else flowtable resources may not be properly freed.

MFC after: 3 days
Sponsored by: Mellanox Technologies


# 47d93c5c 08-May-2019 Hans Petter Selasky <hselasky@FreeBSD.org>

Make sure the flow destination structure does not use values off the stack
in mlx5en(4).

MFC after: 3 days
Sponsored by: Mellanox Technologies


# aa9f073c 17-Jul-2018 Hans Petter Selasky <hselasky@FreeBSD.org>

Add missing newline.

MFC after: 1 week
Sponsored by: Mellanox Technologies


# d7c5a620 18-May-2018 Matt Macy <mmacy@FreeBSD.org>

ifnet: Replace if_addr_lock rwlock with epoch + mutex

Run on LLNW canaries and tested by pho@

gallatin:
Using a 14-core, 28-HTT single socket E5-2697 v3 with a 40GbE MLX5
based ConnectX 4-LX NIC, I see an almost 12% improvement in received
packet rate, and a larger improvement in bytes delivered all the way
to userspace.

When the host receiving 64 streams of netperf -H $DUT -t UDP_STREAM -- -m 1,
I see, using nstat -I mce0 1 before the patch:

InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree
4.98 0.00 4.42 0.00 4235592 33 83.80 4720653 2149771 1235 247.32
4.73 0.00 4.20 0.00 4025260 33 82.99 4724900 2139833 1204 247.32
4.72 0.00 4.20 0.00 4035252 33 82.14 4719162 2132023 1264 247.32
4.71 0.00 4.21 0.00 4073206 33 83.68 4744973 2123317 1347 247.32
4.72 0.00 4.21 0.00 4061118 33 80.82 4713615 2188091 1490 247.32
4.72 0.00 4.21 0.00 4051675 33 85.29 4727399 2109011 1205 247.32
4.73 0.00 4.21 0.00 4039056 33 84.65 4724735 2102603 1053 247.32

After the patch

InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree
5.43 0.00 4.20 0.00 3313143 33 84.96 5434214 1900162 2656 245.51
5.43 0.00 4.20 0.00 3308527 33 85.24 5439695 1809382 2521 245.51
5.42 0.00 4.19 0.00 3316778 33 87.54 5416028 1805835 2256 245.51
5.42 0.00 4.19 0.00 3317673 33 90.44 5426044 1763056 2332 245.51
5.42 0.00 4.19 0.00 3314839 33 88.11 5435732 1792218 2499 245.52
5.44 0.00 4.19 0.00 3293228 33 91.84 5426301 1668597 2121 245.52

Similarly, netperf reports 230Mb/s before the patch, and 270Mb/s after the patch

Reviewed by: gallatin
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D15366


# 952e75c7 02-May-2018 Konstantin Belousov <kib@FreeBSD.org>

mlx5en: Always allow VLAN id 0.

According to the 802.1Q-2014 9.6 VLAN Tag Control Information, VID value 0
means that there is no VLAN tag assigned to the packet, and only PCP and
DEI values from the tag are meaningful. Current flow table programming
filter out such packets.

When programming VLAN filter for flow table, unconditionally add rule which
accept packets with VLAN id 0. The packets are already handled correctly
by the network stack.

Reviewed by: hselasky, slavash
Sponsored by: Mellanox Technologies
MFC after: 1 week


# 5a93b4cd 10-Nov-2017 Hans Petter Selasky <hselasky@FreeBSD.org>

Refactor the flowsteering APIs used by mlx5en(4). This change is needed by
the coming ibcore and mlx5ib updates in order to support traffic redirection
to so-called raw ethernet QPs.

Remove unused E-switch related routines and files while at it.

Sponsored by: Mellanox Technologies
MFC after: 1 week


# de83258d 02-Dec-2016 Hans Petter Selasky <hselasky@FreeBSD.org>

Remove useless NULL checks.

NULL is not returned when allocating memory passing the M_WAITOK flag.

Submitted by: trasz @
Differential Revision: https://reviews.freebsd.org/D5772
Sponsored by: Mellanox Technologies
MFC after: 1 week


# cb4e4a6e 16-Sep-2016 Hans Petter Selasky <hselasky@FreeBSD.org>

Update the MLX5 core module:
- Add new firmware commands and update existing ones.
- Add more firmware related structures and update existing ones.
- Some minor fixes, like adding missing \n to some prints.

Sponsored by: Mellanox Technologies
MFC after: 1 week


# 76a5241f 07-Jun-2016 Hans Petter Selasky <hselasky@FreeBSD.org>

Add SR-IOV guest support to the mlx5en driver.

This patch adds the missing pieces needed for device setup using the
mlx5en driver inside a virtual machine which is providing hardware
access through SR-IOV.

Sponsored by: Mellanox Technologies
MFC after: 1 week


# bb3853c6 19-Nov-2015 Hans Petter Selasky <hselasky@FreeBSD.org>

Style changes, mostly automated.

Differential Revision: https://reviews.freebsd.org/D4179
Submitted by: Daria Genzel <dariaz@mellanox.com>
Sponsored by: Mellanox Technologies
MFC after: 3 days


# dc7e38ac 09-Nov-2015 Hans Petter Selasky <hselasky@FreeBSD.org>

Add mlx5 and mlx5en driver(s) for ConnectX-4 and ConnectX-4LX cards
from Mellanox Technologies. The current driver supports ethernet
speeds up to and including 100 GBit/s. Infiniband support will be
done later.

The code added is not compiled by default, which will be done by a
separate commit.

Sponsored by: Mellanox Technologies
MFC after: 2 weeks