]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
mlxsw: core: Use variable timeout for EMAD retries
authorIdo Schimmel <idosch@nvidia.com>
Tue, 17 Nov 2020 17:33:52 +0000 (19:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Nov 2020 12:27:16 +0000 (13:27 +0100)
commit5ca57e8ee2ccf5dcab7a6be6db8b23f7c26f0cb7
tree0ac51f4a415ec7ff17088ea2bd5e6f49be249ffc
parent3e513faa2b7562fd1cce2ecefd60bf9d91981351
mlxsw: core: Use variable timeout for EMAD retries

[ Upstream commit 1f492eab67bced119a0ac7db75ef2047e29a30c6 ]

The driver sends Ethernet Management Datagram (EMAD) packets to the
device for configuration purposes and waits for up to 200ms for a reply.
A request is retried up to 5 times.

When the system is under heavy load, replies are not always processed in
time and EMAD transactions fail.

Make the process more robust to such delays by using exponential
backoff. First wait for up to 200ms, then retransmit and wait for up to
400ms and so on.

Fixes: caf7297e7ab5 ("mlxsw: core: Introduce support for asynchronous EMAD register access")
Reported-by: Denis Yulevich <denisyu@nvidia.com>
Tested-by: Denis Yulevich <denisyu@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/mellanox/mlxsw/core.c