| 823bcb3a | 08-Feb-2022 |
Hans Petter Selasky <[email protected]> |
mlx5: Add raw ethernet local loopback support.
Currently, unicast/multicast loopback raw ethernet (non-RDMA) packets are sent back to the vport. A unicast loopback packet is the packet with destina
mlx5: Add raw ethernet local loopback support.
Currently, unicast/multicast loopback raw ethernet (non-RDMA) packets are sent back to the vport. A unicast loopback packet is the packet with destination MAC address the same as the source MAC address. For multicast, the destination MAC address is in the vport's multicast filter list.
Moreover, the local loopback is not needed if there is one or none user space context.
After this patch, the raw ethernet unicast and multicast local loopback are disabled by default. When there is more than one user space context, the local loopback is enabled.
Note that when local loopback is disabled, raw ethernet packets are not looped back to the vport and are forwarded to the next routing level (eswitch, or multihost switch, or out to the wire depending on the configuration).
Linux commits: c85023e153e3824661d07307138fdeff41f6d86a 8978cc921fc7fad3f4d6f91f1da01352aeeeff25
Sponsored by: NVIDIA Networking
(cherry picked from commit ea00d7e8cab97f818c9793a112249ab79a2f8322)
show more ...
|
| cd08d4c5 | 16-Jun-2021 |
Hans Petter Selasky <[email protected]> |
mlx4ib and mlx5ib: Set slid to zero in Ethernet completion struct
IB spec says that a lid should be ignored when link layer is Ethernet, for example when building or parsing a CM request message (CA
mlx4ib and mlx5ib: Set slid to zero in Ethernet completion struct
IB spec says that a lid should be ignored when link layer is Ethernet, for example when building or parsing a CM request message (CA17-34). However, since ib_lid_be16() and ib_lid_cpu16() validates the slid, not only when link layer is IB, we set the slid to zero to prevent false warnings in the kernel log.
Linux commit: 65389322b28f81cc137b60a41044c2d958a7b950
Reviewed by: kib Sponsored by: Mellanox Technologies // NVIDIA Networking
(cherry picked from commit 30416d4e827341be32c3e415f16c73f252a68d85)
show more ...
|
| 349d0378 | 16-Jun-2021 |
Hans Petter Selasky <[email protected]> |
mlx5ib: Fix XRC QP support after introducing extended atomic.
Extended atomics are supported with RC and XRC QP types, but Linux commit a60109dc9a95 added an unneeded check to to_mlx5_access_flags()
mlx5ib: Fix XRC QP support after introducing extended atomic.
Extended atomics are supported with RC and XRC QP types, but Linux commit a60109dc9a95 added an unneeded check to to_mlx5_access_flags(). This broke XRC QPs.
The following ib_atomic_bw invocation over XRC reproduces the issue: ib_atomic_bw -d mlx5_1 --connection=XRC --atomic_type=FETCH_AND_ADD
It is safe to remove such checks because the QP type was already checked in ib_modify_qp_is_ok(), which was previously called from mlx5_ib_modify_qp().
Linux commit: 13f8d9c16693afb908ead3d2a758adbe6a79eccd
Reviewed by: kib Sponsored by: Mellanox Technologies // NVIDIA Networking
(cherry picked from commit cf88b86e4954215eb447729042dab8dea722c044)
show more ...
|
| f1d4741b | 16-Jun-2021 |
Hans Petter Selasky <[email protected]> |
mlx5ib: Limit mkey page size to 2GB
The maximum page size in the mkey context is 2GB.
Until today, we didn't enforce this requirement in the code, and therefore, if we got a page size larger than 2
mlx5ib: Limit mkey page size to 2GB
The maximum page size in the mkey context is 2GB.
Until today, we didn't enforce this requirement in the code, and therefore, if we got a page size larger than 2GB, we have passed zeros in the log_page_shift instead of the actual value and the registration failed.
This patch limits the driver to use compound pages of 2GB for mkeys.
Linux commit: 762f899ae7875554284af92b821be8c083227092
Reviewed by: kib Sponsored by: Mellanox Technologies // NVIDIA Networking
(cherry picked from commit 565cb4e8cc5efb4c493efe5cf2cb2ec36f69a413)
show more ...
|
| cae3be82 | 16-Jun-2021 |
Hans Petter Selasky <[email protected]> |
mlx5ib: Simplify mlx5_ib_cont_pages()
The patch simplifies mlx5_ib_cont_pages and fixes the following issues in the original implementation:
First issues is related to alignment of the PFNs. After
mlx5ib: Simplify mlx5_ib_cont_pages()
The patch simplifies mlx5_ib_cont_pages and fixes the following issues in the original implementation:
First issues is related to alignment of the PFNs. After the check base + p != PFN, the alignment of the PFN wasn't checked. So the PFN sequence 0, 1, 1, 2 would result in a page_shift of 13 even though the 3rd PFN is not 8KB aligned.
This wasn't actually a bug because it was supported by all the existing mlx5 compatible device, but we don't want to require this support in all future devices.
Another issue is because the inner loop didn't advance PFN so the test "if (base + p != pfn)" always failed for SGE with len > (1<<page_shift).
Linux commit: d67bc5d4e3e100d762c0f57ea67f28bc219698a6
Reviewed by: kib Sponsored by: Mellanox Technologies // NVIDIA Networking
(cherry picked from commit 21bc3710a4b46655067cbad54d1f21952c871dd2)
show more ...
|
| f8f5b459 | 08-Jan-2021 |
Hans Petter Selasky <[email protected]> |
Update user access region, UAR, APIs in the core in mlx5core.
This change include several changes as listed below all related to UAR. UAR is a special PCI memory area where the so-called doorbell re
Update user access region, UAR, APIs in the core in mlx5core.
This change include several changes as listed below all related to UAR. UAR is a special PCI memory area where the so-called doorbell register and blue flame register live. Blue flame is a feature for sending small packets more efficiently via a PCI memory page, instead of using PCI DMA.
- All structures and functions named xxx_uuars were renamed into xxx_bfreg. - Remove partially implemented Blueflame support from mlx5en(4) and mlx5ib. - Implement blue flame register allocator. - Use blue flame register allocator in mlx5ib. - A common UAR page is now allocated by the core to support doorbell register writes for all of mlx5en and mlx5ib, instead of allocating one UAR per sendqueue. - Add support for DEVX query UAR. - Add support for 4K UAR for libmlx5.
Linux commits: 7c043e908a74ae0a935037cdd984d0cb89b2b970 2f5ff26478adaff5ed9b7ad4079d6a710b5f27e7 0b80c14f009758cefeed0edff4f9141957964211 30aa60b3bd12bd79b5324b7b595bd3446ab24b52 5fe9dec0d045437e48f112b8fa705197bd7bc3c0 0118717583cda6f4f36092853ad0345e8150b286 a6d51b68611e98f05042ada662aed5dbe3279c1e
MFC after: 1 week Sponsored by: Mellanox Technologies // NVIDIA Networking
show more ...
|
| 7eefcb5e | 16-Nov-2020 |
Hans Petter Selasky <[email protected]> |
Make mlx5_cmd_exec_cb() a safe API in mlx5core.
APIs that have deferred callbacks should have some kind of cleanup function that callers can use to fence the callbacks. Otherwise things like module
Make mlx5_cmd_exec_cb() a safe API in mlx5core.
APIs that have deferred callbacks should have some kind of cleanup function that callers can use to fence the callbacks. Otherwise things like module unloading can lead to dangling function pointers, or worse.
The IB MR code is the only place that calls this function and had a really poor attempt at creating this fence. Provide a good version in the core code as future patches will add more places that need this fence.
Linux commit: e355477ed9e4f401e3931043df97325d38552d54
MFC after: 1 week Sponsored by: Mellanox Technologies // NVIDIA Networking
show more ...
|