From: Greg Kroah-Hartman Date: Fri, 12 Mar 2021 12:40:51 +0000 (+0100) Subject: 4.9-stable patches X-Git-Tag: v4.4.262~107 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=949b807f22b92c8dddfcdb645f1f81ed3b7e11a7;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: net-mlx4_en-update-moderation-when-config-reset.patch --- diff --git a/queue-4.9/net-mlx4_en-update-moderation-when-config-reset.patch b/queue-4.9/net-mlx4_en-update-moderation-when-config-reset.patch new file mode 100644 index 00000000000..febaafecef0 --- /dev/null +++ b/queue-4.9/net-mlx4_en-update-moderation-when-config-reset.patch @@ -0,0 +1,80 @@ +From 00ff801bb8ce6711e919af4530b6ffa14a22390a Mon Sep 17 00:00:00 2001 +From: "Kevin(Yudong) Yang" +Date: Wed, 3 Mar 2021 09:43:54 -0500 +Subject: net/mlx4_en: update moderation when config reset + +From: Kevin(Yudong) Yang + +commit 00ff801bb8ce6711e919af4530b6ffa14a22390a upstream. + +This patch fixes a bug that the moderation config will not be +applied when calling mlx4_en_reset_config. For example, when +turning on rx timestamping, mlx4_en_reset_config() will be called, +causing the NIC to forget previous moderation config. + +This fix is in phase with a previous fix: +commit 79c54b6bbf06 ("net/mlx4_en: Fix TX moderation info loss +after set_ringparam is called") + +Tested: Before this patch, on a host with NIC using mlx4, run +netserver and stream TCP to the host at full utilization. +$ sar -I SUM 1 + INTR intr/s +14:03:56 sum 48758.00 + +After rx hwtstamp is enabled: +$ sar -I SUM 1 +14:10:38 sum 317771.00 +We see the moderation is not working properly and issued 7x more +interrupts. + +After the patch, and turned on rx hwtstamp, the rate of interrupts +is as expected: +$ sar -I SUM 1 +14:52:11 sum 49332.00 + +Fixes: 79c54b6bbf06 ("net/mlx4_en: Fix TX moderation info loss after set_ringparam is called") +Signed-off-by: Kevin(Yudong) Yang +Reviewed-by: Eric Dumazet +Reviewed-by: Neal Cardwell +CC: Tariq Toukan +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 2 +- + drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 2 ++ + drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 + + 3 files changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c ++++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +@@ -47,7 +47,7 @@ + #define EN_ETHTOOL_SHORT_MASK cpu_to_be16(0xffff) + #define EN_ETHTOOL_WORD_MASK cpu_to_be32(0xffffffff) + +-static int mlx4_en_moderation_update(struct mlx4_en_priv *priv) ++int mlx4_en_moderation_update(struct mlx4_en_priv *priv) + { + int i; + int err = 0; +--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c ++++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +@@ -3459,6 +3459,8 @@ int mlx4_en_reset_config(struct net_devi + en_err(priv, "Failed starting port\n"); + } + ++ if (!err) ++ err = mlx4_en_moderation_update(priv); + out: + mutex_unlock(&mdev->state_lock); + kfree(tmp); +--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h ++++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +@@ -773,6 +773,7 @@ void mlx4_en_ptp_overflow_check(struct m + #define DEV_FEATURE_CHANGED(dev, new_features, feature) \ + ((dev->features & feature) ^ (new_features & feature)) + ++int mlx4_en_moderation_update(struct mlx4_en_priv *priv); + int mlx4_en_reset_config(struct net_device *dev, + struct hwtstamp_config ts_config, + netdev_features_t new_features); diff --git a/queue-4.9/series b/queue-4.9/series index a8abde1fad5..4fa25ba52b4 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -9,3 +9,4 @@ can-flexcan-enable-rx-fifo-after-frz-halt-valid.patch netfilter-x_tables-gpf-inside-xt_find_revision.patch cifs-return-proper-error-code-in-statfs-2.patch revert-mm-slub-consider-rest-of-partial-list-if-acquire_slab-fails.patch +net-mlx4_en-update-moderation-when-config-reset.patch