]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Mar 2021 12:41:06 +0000 (13:41 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Mar 2021 12:41:06 +0000 (13:41 +0100)
added patches:
net-mlx4_en-update-moderation-when-config-reset.patch
net-stmmac-fix-incorrect-dma-channel-intr-enable-setting-of-eqos-v4.10.patch

queue-4.14/net-mlx4_en-update-moderation-when-config-reset.patch [new file with mode: 0644]
queue-4.14/net-stmmac-fix-incorrect-dma-channel-intr-enable-setting-of-eqos-v4.10.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/net-mlx4_en-update-moderation-when-config-reset.patch b/queue-4.14/net-mlx4_en-update-moderation-when-config-reset.patch
new file mode 100644 (file)
index 0000000..e62f937
--- /dev/null
@@ -0,0 +1,80 @@
+From 00ff801bb8ce6711e919af4530b6ffa14a22390a Mon Sep 17 00:00:00 2001
+From: "Kevin(Yudong) Yang" <yyd@google.com>
+Date: Wed, 3 Mar 2021 09:43:54 -0500
+Subject: net/mlx4_en: update moderation when config reset
+
+From: Kevin(Yudong) Yang <yyd@google.com>
+
+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 <yyd@google.com>
+Reviewed-by: Eric Dumazet <edumazet@google.com>
+Reviewed-by: Neal Cardwell <ncardwell@google.com>
+CC: Tariq Toukan <tariqt@nvidia.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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, t;
+       int err = 0;
+--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
++++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+@@ -3673,6 +3673,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
+@@ -789,6 +789,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.14/net-stmmac-fix-incorrect-dma-channel-intr-enable-setting-of-eqos-v4.10.patch b/queue-4.14/net-stmmac-fix-incorrect-dma-channel-intr-enable-setting-of-eqos-v4.10.patch
new file mode 100644 (file)
index 0000000..070f216
--- /dev/null
@@ -0,0 +1,57 @@
+From 879c348c35bb5fb758dd881d8a97409c1862dae8 Mon Sep 17 00:00:00 2001
+From: Ong Boon Leong <boon.leong.ong@intel.com>
+Date: Wed, 3 Mar 2021 20:38:40 +0530
+Subject: net: stmmac: fix incorrect DMA channel intr enable setting of EQoS v4.10
+
+From: Ong Boon Leong <boon.leong.ong@intel.com>
+
+commit 879c348c35bb5fb758dd881d8a97409c1862dae8 upstream.
+
+We introduce dwmac410_dma_init_channel() here for both EQoS v4.10 and
+above which use different DMA_CH(n)_Interrupt_Enable bit definitions for
+NIE and AIE.
+
+Fixes: 48863ce5940f ("stmmac: add DMA support for GMAC 4.xx")
+Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>
+Signed-off-by: Ramesh Babu B <ramesh.babu.b@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c |   19 ++++++++++++++++++-
+ 1 file changed, 18 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c
+@@ -115,6 +115,23 @@ static void dwmac4_dma_init_channel(void
+              ioaddr + DMA_CHAN_INTR_ENA(chan));
+ }
++static void dwmac410_dma_init_channel(void __iomem *ioaddr,
++                                    struct stmmac_dma_cfg *dma_cfg, u32 chan)
++{
++      u32 value;
++
++      /* common channel control register config */
++      value = readl(ioaddr + DMA_CHAN_CONTROL(chan));
++      if (dma_cfg->pblx8)
++              value = value | DMA_BUS_MODE_PBL;
++
++      writel(value, ioaddr + DMA_CHAN_CONTROL(chan));
++
++      /* Mask interrupts by writing to CSR7 */
++      writel(DMA_CHAN_INTR_DEFAULT_MASK_4_10,
++             ioaddr + DMA_CHAN_INTR_ENA(chan));
++}
++
+ static void dwmac4_dma_init(void __iomem *ioaddr,
+                           struct stmmac_dma_cfg *dma_cfg,
+                           u32 dma_tx, u32 dma_rx, int atds)
+@@ -416,7 +433,7 @@ const struct stmmac_dma_ops dwmac4_dma_o
+ const struct stmmac_dma_ops dwmac410_dma_ops = {
+       .reset = dwmac4_dma_reset,
+       .init = dwmac4_dma_init,
+-      .init_chan = dwmac4_dma_init_channel,
++      .init_chan = dwmac410_dma_init_channel,
+       .init_rx_chan = dwmac4_dma_init_rx_chan,
+       .init_tx_chan = dwmac4_dma_init_tx_chan,
+       .axi = dwmac4_dma_axi,
index a6c3afed10d567c1b347fedf81e63e2a41840043..da9f962932405c1be04f2c637657ebfeb68102fb 100644 (file)
@@ -13,3 +13,5 @@ cifs-return-proper-error-code-in-statfs-2.patch
 scripts-recordmcount.-c-pl-support-ffunction-sections-.text.-section-names.patch
 revert-mm-slub-consider-rest-of-partial-list-if-acquire_slab-fails.patch
 sh_eth-fix-trscer-mask-for-sh771x.patch
+net-mlx4_en-update-moderation-when-config-reset.patch
+net-stmmac-fix-incorrect-dma-channel-intr-enable-setting-of-eqos-v4.10.patch