Linux kernel source tree
Go to file
David S. Miller 9b3e446cd0 mlx5-updates-2022-02-14
mlx5 TX routines improvements
 
 1) From Aya and Tariq, first 3 patches, Use the Max size of the TX descriptor
 as advertised by the device and not the fixed value of 16 that the driver
 always assumed, this is not a bug fix as all existing devices have Max value
 larger than 16, but the series is necessary for future proofing the driver.
 
 2) TX Synchronization improvements from Maxim, last 12 patches
 
 Maxim Mikityanskiy Says:
 =======================
 mlx5e: Synchronize ndo_select_queue with configuration changes
 
 The kernel can call ndo_select_queue at any time, and there is no direct
 way to block it. The implementation of ndo_select_queue in mlx5e expects
 the parameters to be consistent and may crash (invalid pointer, division
 by zero) if they aren't.
 
 There were attempts to partially fix some of the most frequent crashes,
 see commit 846d6da1fc ("net/mlx5e: Fix division by 0 in
 mlx5e_select_queue") and commit 84c8a87402 ("net/mlx5e: Fix division
 by 0 in mlx5e_select_queue for representors"). However, they don't
 address the issue completely.
 
 This series introduces the proper synchronization mechanism between
 mlx5e configuration and TX data path:
 
 1. txq2sq updates are synchronized properly with ndo_start_xmit
    (mlx5e_xmit). The TX queue is stopped when it configuration is being
    updated, and memory barriers ensure the changes are visible before
    restarting.
 
 2. The set of parameters needed for mlx5e_select_queue is reduced, and
    synchronization using RCU is implemented. This way, changes are
    atomic, and the state in mlx5e_select_queue is always consistent.
 
 3. A few optimizations are applied to the new implementation of
    mlx5e_select_queue.
 
 =======================
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEGhZs6bAKwk/OTgTpSD+KveBX+j4FAmILSJwACgkQSD+KveBX
 +j6BjwgAj4tGNrIuR8wByLq7gFG+h8t/A80TkqxgNHFhYuF3u6bS6UnmymCAsM3F
 G8jFott6Pu/4d7SQvksrtVQJvTTj+TinZFeLGNxYXLwm/Syk6Avbs2c02eDL1CbQ
 fUE4HavgwpS+hp8xvdWOUH+i5b+e7I+iF6JC/K0LULHUhXaJ7BXiQi3qCm7DKwLm
 gVdWzDHNBj73Xmxak71CH0b79qdIBMs0JlZjdizE++8vg/AZ8CY2G51UUTmjJk5h
 YASXBigbmGAP5o30IWxjYaj51UQTmWmR5A1XhNIC4iVdWjFOPcz6k8M5EfB0ADq+
 eXkQKGDiyMDddKAaor611K0n9H4Ogw==
 =SDns
 -----END PGP SIGNATURE-----

Merge tag 'mlx5-updates-2022-02-14' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux

Saeed Mahameed says:

====================
mlx5-updates-2022-02-14

mlx5 TX routines improvements

1) From Aya and Tariq, first 3 patches, Use the Max size of the TX descriptor
as advertised by the device and not the fixed value of 16 that the driver
always assumed, this is not a bug fix as all existing devices have Max value
larger than 16, but the series is necessary for future proofing the driver.

2) TX Synchronization improvements from Maxim, last 12 patches

Maxim Mikityanskiy Says:
=======================
mlx5e: Synchronize ndo_select_queue with configuration changes

The kernel can call ndo_select_queue at any time, and there is no direct
way to block it. The implementation of ndo_select_queue in mlx5e expects
the parameters to be consistent and may crash (invalid pointer, division
by zero) if they aren't.

There were attempts to partially fix some of the most frequent crashes,
see commit 846d6da1fc ("net/mlx5e: Fix division by 0 in
mlx5e_select_queue") and commit 84c8a87402 ("net/mlx5e: Fix division
by 0 in mlx5e_select_queue for representors"). However, they don't
address the issue completely.

This series introduces the proper synchronization mechanism between
mlx5e configuration and TX data path:

1. txq2sq updates are synchronized properly with ndo_start_xmit
   (mlx5e_xmit). The TX queue is stopped when it configuration is being
   updated, and memory barriers ensure the changes are visible before
   restarting.

2. The set of parameters needed for mlx5e_select_queue is reduced, and
   synchronization using RCU is implemented. This way, changes are
   atomic, and the state in mlx5e_select_queue is always consistent.

3. A few optimizations are applied to the new implementation of
   mlx5e_select_queue.

=======================

====================

Signed-off-by: David S. Miller <davem@davemloft.net>
2022-02-15 10:35:09 +00:00
arch Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-02-10 17:29:56 -08:00
block block: bio-integrity: Advance seed correctly for larger interval sizes 2022-02-03 21:09:24 -07:00
certs certs: Fix build error when CONFIG_MODULE_SIG_KEY is empty 2022-01-23 00:08:44 +09:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2022-02-09 09:53:56 -08:00
Documentation dt-bindings: net: Add Davicom dm9051 SPI ethernet controller 2022-02-14 11:18:46 +00:00
drivers net/mlx5e: Optimize the common case condition in mlx5e_select_queue 2022-02-14 22:30:52 -08:00
fs Notable bug fixes: 2022-02-09 09:56:57 -08:00
include net: wwan: debugfs obtained dev reference not dropped 2022-02-14 14:09:59 +00:00
init Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2022-02-09 18:40:56 -08:00
ipc ipc/sem: do not sleep with a spin lock held 2022-02-04 09:25:05 -08:00
kernel Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-02-10 17:29:56 -08:00
lib Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-02-10 17:29:56 -08:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
mm mm/kmemleak: avoid scanning potential huge holes 2022-02-04 09:25:05 -08:00
net ipv6: blackhole_netdev needs snmp6 counters 2022-02-14 14:04:27 +00:00
samples samples/bpf: Get rid of bpf_prog_load_xattr() use 2022-02-03 16:32:25 +01:00
scripts Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2022-02-09 18:40:56 -08:00
security Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-02-10 17:29:56 -08:00
sound ASoC: Fixes for v5.17 2022-02-01 16:52:54 +01:00
tools selftests: net: cmsg_sender: Fix spelling mistake "MONOTINIC" -> "MONOTONIC" 2022-02-14 14:12:06 +00:00
usr kbuild: remove include/linux/cyclades.h from header file check 2022-01-27 08:51:08 +01:00
virt Two larger x86 series: 2022-01-28 19:00:26 +02:00
.clang-format genirq/msi: Make interrupt allocation less convoluted 2021-12-16 22:22:20 +01:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore .gitignore: ignore only top-level modules.builtin 2021-05-02 00:43:35 +09:00
.mailmap mailmap: update Christian Brauner's email address 2022-02-01 11:21:31 -08:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Removing Ohad from remoteproc/rpmsg maintenance 2021-12-08 10:09:40 -07:00
Kbuild kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-02-10 17:29:56 -08:00
Makefile Linux 5.17-rc3 2022-02-06 12:20:50 -08:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.