History log of /freebsd-current/sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
Revision Date Author Comments
# 4366ea33 08-Feb-2023 Justin Hibbits <jhibbits@FreeBSD.org>

mlx4: Finish conversion to IfAPI

Fix a few stragglers found with further IfAPI work.

Sponsored by: Juniper Networks, Inc.


# 0b281376 17-Aug-2022 Justin Hibbits <jhibbits@FreeBSD.org>

Mechanically convert mlx4(4) to IfAPI

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


# b18c5108 07-Mar-2022 Hans Petter Selasky <hselasky@FreeBSD.org>

mlx5/mlx4: Bump driver version to 3.7.1

MFC after: 1 week
Sponsored by: NVIDIA Networking


# 9d593d5a 25-Oct-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

mlx4: rename conflicting netdev_priv() to mlx4_netdev_priv()

netdev_priv() is a LinuxKPI function which was used with the old ifnet
linux/netdevice.h implementation which was not adaptable to modern
Linux drviers unless rewriting them for ifnet in first place which
defeats the purpose.
Rename the netdev_priv() calls in mlx4 to mlx4_netdev_priv()
returning the ifnet softc to avoid conflicting symbol names
with different implementations in the future.

MFC after: 3 days
Reviewed by: hselasky, kib
Differential Revision: https://reviews.freebsd.org/D32640


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

mlx5/mlx4: Bump driver version to 3.7

While at it only output driver version to dmesg(8) when hardware is present.

Differential Revision: https://reviews.freebsd.org/D29100
MFC after: 1 week
Reviewed by: kib and markj
Sponsored by: NVIDIA Networking


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

ibcore: Kernel space update based on Linux 5.7-rc1.

Overview:

This is the first stage of a RDMA stack upgrade introducing kernel
changes only based on Linux 5.7-rc1.

This patch is based on about four main areas of work:
- Update of the IB uobjects system:
- The memory holding so-called AH, CQ, PD, SRQ and UCONTEXT objects
is now managed by ibcore. This also require some changes in the
kernel verbs API. The updated verbs changes are typically about
initialize and deinitialize objects, and remove allocation and
free of memory.

- Update of the uverbs IOCTL framework:
- The parsing and handling of user-space commands has been
completely refactored to integrate with the updated IB uobjects
system.

- Various changes and updates to the generic uverbs interfaces in
device drivers including the new uAPI surface.

- The mlx5_ib_devx.c in mlx5ib and related mlx5 core changes.

Dependencies:

- The mlx4ib driver code has been updated with the minimum changes
needed.

- The mlx5ib driver code has been updated with the minimum changes
needed including DV support.

Compatibility:

- All user-space facing APIs are backwards compatible after this
change.

- All kernel-space facing RDMA APIs are backwards compatible after
this change, with exception of ib_create_ah() and ib_destroy_ah()
which takes a new flag.

- The "ib_device_ops" structure exist, but only contains the driver ID
and some structure sizes.

Differences from Linux:

- Infiniband drivers must use the INIT_IB_DEVICE_OPS() macro to set
the sizes needed for allocating various IB objects, when adding
IB device instances.

Security:

- PRIV_NET_RAW is needed to use raw ethernet transmit features.
- PRIV_DRIVER is needed to use other privileged operations.

Based on upstream Linux, Torvalds (5.7-rc1):
8632e9b5645bbc2331d21d892b0d6961c1a08429

MFC after: 1 week
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D31149
Sponsored by: NVIDIA Networking


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

mlx4: Map core_clock page to user space only when allowed

Currently when we map the hca_core_clock page to the user space,
there are vulnerable registers, one of which is semaphore, on
this page as well. If user read the wrong offset, it can modify the
above semaphore and hang the device.

Hence, mapping the hca_core_clock page to the user space only when
user required it specifically.

After this patch, mlx4 core_clock won't be mapped to user space by
default. Oppose to current state, where mlx4 core_clock is always mapped
to user space.

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


# 4238b4a7 16-Jun-2021 Hans Petter Selasky <hselasky@FreeBSD.org>

ibcore: Introduce ib_port_phys_state enum.

In order to improve readability, add ib_port_phys_state enum to replace
the use of magic numbers.

Linux commit:
72a7720fca37fec0daf295923f17ac5d88a613e1

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


# 1411f52f 04-Jun-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

mlx4/OFED: replace the struct net_device with struct ifnet

Given all the code does operate on struct ifnet, the last step in this
longer series of changes now is to rename struct net_device to
struct ifnet (that is what it was defined to in the LinuxKPi code).
While mlx4 and OFED are "shared" code the decision was made years ago
to not write it based on the netdevice KPI but the native ifnet KPI
for most of it. This commit simply spells this out and with that
frees "struct netdevice" to be re-done on LinuxKPI to become a more
native/mixed implementation over time as needed by, e.g., wireless
drivers.

Sponsored by: The FreeBSD Foundation
MFC after: 10 days
Reviewed by: hselasky
Differential Revision: https://reviews.freebsd.org/D30515


# 60afad6f 26-May-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

mlx4: replace LinuxKPI macros with ifnet functions

The LinuxKPI net_device actually is an ifnet; in order to further
clean that up so we can extend "net_device" replace the few macros
inline in mlx4.

Sponsored by: The FreeBSD Foundation
MFC after: 12 days
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D30476


# 5a461a86 26-Mar-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

mlx4: remove no longer needed header

Remove linux/inetdevice.h as neither of the two inline functions there
are used here.

Sposored-by: The FreeBSD Foundation
MFC-after: 2 weeks
Reviewed-by: hselasky
X-D-R: D29366 (extracted as further cleanup)
Differential Revision: https://reviews.freebsd.org/D29428


# 9a47ae04 08-Jan-2021 Hans Petter Selasky <hselasky@FreeBSD.org>

Bump driver versions for mlx5en(4) and mlx4en(4).

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


# 6c43a5e9 09-Nov-2020 Hans Petter Selasky <hselasky@FreeBSD.org>

Include GID type when deleting GIDs from HW table under RoCE in mlx4ib.
Refer to the Linux commit mentioned below for a more detailed description.

Linux commit:
a18177925c252da7801149abe217c05b80884798

Requested by: Isilon
MFC after: 1 week
Sponsored by: Mellanox Technologies // NVIDIA Networking


# 1866c98e 06-Jul-2020 Hans Petter Selasky <hselasky@FreeBSD.org>

Infiniband clients must be attached and detached in a specific order in ibcore.

Currently the linking order of the infiniband, IB, modules decide in which
order the clients are attached and detached. For example one IB client may
use resources from another IB client. This can lead to a potential deadlock
at shutdown. For example if the ipoib is unregistered after the ib_multicast
client is detached, then if ipoib is using multicast addresses a deadlock may
happen, because ib_multicast will wait for all its resources to be freed before
returning from the remove method.

Fix this by using module_xxx_order() instead of module_xxx().

Differential Revision: https://reviews.freebsd.org/D23973
MFC after: 1 week
Sponsored by: Mellanox Technologies


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

Bump the Mellanox driver version numbers and the FreeBSD version number.

MFC after: 3 days
Sponsored by: Mellanox Technologies


# 0f3b263d 05-Dec-2018 Slava Shwartsman <slavash@FreeBSD.org>

mlx4/mlx5: Updated driver version to 3.5.0

Approved by: hselasky (mentor)
MFC after: 1 week
Sponsored by: Mellanox Technologies


# 87e30305 07-Mar-2018 Hans Petter Selasky <hselasky@FreeBSD.org>

Bump version information in mlx4ib(4).

MFC after: 1 week
Sponsored by: Mellanox Technologies


# c9a80d02 07-Mar-2018 Hans Petter Selasky <hselasky@FreeBSD.org>

The mlx4ib(4) should not be loaded before the ibcore is initialized.

MFC after: 1 week
Sponsored by: Mellanox Technologies


# 54b55cbd 07-Mar-2018 Hans Petter Selasky <hselasky@FreeBSD.org>

Disable unsupported disassociate ucontext functionality in mlx4ib(4).

MFC after: 1 week
Sponsored by: Mellanox Technologies


# c3191c2e 15-Nov-2017 Hans Petter Selasky <hselasky@FreeBSD.org>

Update the mlx4 core and mlx4en(4) modules towards Linux v4.9.

Background:
The coming ibcore update forces an update of mlx4ib(4) which in turn requires
an updated mlx4 core module. This also affects the mlx4en(4) module because
commonly used APIs are updated. This commit is a middle step updating the
mlx4 modules towards the new ibcore.

This change contains no major new features.

Changes in mlx4:
a) Improved error handling when mlx4 PCI devices are
detached inside VMs.
b) Major update of codebase towards Linux 4.9.

Changes in mlx4ib(4):
a) Minimal changes needed in order to compile using the
updated mlx4 core APIs.

Changes in mlx4en(4):
a) Update flow steering code in mlx4en to use new APIs for
registering MAC addresses and IP addresses.
b) Update all statistics counters to be 64-bit.
c) Minimal changes needed in order to compile using the
updated mlx4 core APIs.

Sponsored by: Mellanox Technologies
MFC after: 1 week


# 8cc48704 13-Nov-2017 Hans Petter Selasky <hselasky@FreeBSD.org>

Update mlx4ib(4) to Linux 4.9.

Sponsored by: Mellanox Technologies


# d05554bb 20-Oct-2017 Hans Petter Selasky <hselasky@FreeBSD.org>

The remote DMA TCP portspace selector, RDMA_PS_TCP, is used for both
iWarp and RoCE in ibcore. The selection of RDMA_PS_TCP can not be used
to indicate iWarp protocol use. Backport the proper IB device
capabilities from Linux upstream to distinguish between iWarp and
RoCE. Only allocate the additional socket required for iWarp for RDMA
IDs when at least one iWarp device present. This resolves
interopability issues between iWarp and RoCE in ibcore

Reviewed by: np @
Differential Revision: https://reviews.freebsd.org/D12563
Sponsored by: Mellanox Technologies
MFC after: 3 days


# b0259ad3 31-Jul-2017 Hans Petter Selasky <hselasky@FreeBSD.org>

Fix broken usage of the mlx4_read_clock() function:
- return value has too small width
- cycle_t is unsigned and cannot be less than zero

Sponsored by: Mellanox Technologies
MFC after: 1 week


# f0473bfa 23-Dec-2016 Ed Maste <emaste@FreeBSD.org>

mlx(4): remove date from log message

Further to r310425, go one step further and just remove the date.

Reviewed by: hselasky
Differential Revision: https://reviews.freebsd.org/D8888


# 07b2e5c9 22-Dec-2016 Ed Maste <emaste@FreeBSD.org>

mlx: avoid use of __DATE__ to make build reproducible

Reviewed by: hselasky
Differential Revision: https://reviews.freebsd.org/D8886


# 97549c34 30-Sep-2016 Hans Petter Selasky <hselasky@FreeBSD.org>

Move the ConnectX-3 and ConnectX-2 driver from sys/ofed into sys/dev/mlx4
like other PCI network drivers. The sys/ofed directory is now mainly
reserved for generic infiniband code, with exception of the mthca driver.

- Add new manual page, mlx4en(4), describing how to configure and load
mlx4en.

- All relevant driver C-files are now prefixed mlx4, mlx4_en and
mlx4_ib respectivly to avoid object filename collisions when compiling
the kernel. This also fixes an issue with proper dependency file
generation for the C-files in question.

- Device mlxen is now device mlx4en and depends on device mlx4, see
mlx4en(4). Only the network device name remains unchanged.

- The mlx4 and mlx4en modules are now built by default on i386 and
amd64 targets. Only building the mlx4ib module depends on
WITH_OFED=YES .

Sponsored by: Mellanox Technologies