]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Drop net-mvmdio-avoid-excessive-sleeps-in-polled-mode.patch from 5.10
authorSasha Levin <sashal@kernel.org>
Fri, 2 Feb 2024 19:54:24 +0000 (14:54 -0500)
committerSasha Levin <sashal@kernel.org>
Fri, 2 Feb 2024 19:54:24 +0000 (14:54 -0500)
queue-5.10/net-mvmdio-avoid-excessive-sleeps-in-polled-mode.patch [deleted file]
queue-5.10/series

diff --git a/queue-5.10/net-mvmdio-avoid-excessive-sleeps-in-polled-mode.patch b/queue-5.10/net-mvmdio-avoid-excessive-sleeps-in-polled-mode.patch
deleted file mode 100644 (file)
index 4a38826..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-From 6c1cb4db1450d5c1be6016b7940624d0b52618a4 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 4 Dec 2023 11:08:10 +0100
-Subject: net: mvmdio: Avoid excessive sleeps in polled mode
-
-From: Tobias Waldekranz <tobias@waldekranz.com>
-
-[ Upstream commit 7dd12fe34686d89c332b1a05104d18d728591f0a ]
-
-Before this change, when operating in polled mode, i.e. no IRQ is
-available, every individual C45 access would be hit with a 150us sleep
-after the bus access.
-
-For example, on a board with a CN9130 SoC connected to an MV88X3310
-PHY, a single C45 read would take around 165us:
-
-    root@infix:~$ mdio f212a600.mdio-mii mmd 4:1 bench 0xc003
-    Performed 1000 reads in 165ms
-
-By replacing the long sleep with a tighter poll loop, we observe a 10x
-increase in bus throughput:
-
-    root@infix:~$ mdio f212a600.mdio-mii mmd 4:1 bench 0xc003
-    Performed 1000 reads in 15ms
-
-Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
-Reviewed-by: Andrew Lunn <andrew@lunn.ch>
-Tested-by: Andrew Lunn <andrew@lunn.ch>
-Link: https://lore.kernel.org/r/20231204100811.2708884-3-tobias@waldekranz.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/marvell/mvmdio.c | 53 ++++++++-------------------
- 1 file changed, 16 insertions(+), 37 deletions(-)
-
-diff --git a/drivers/net/ethernet/marvell/mvmdio.c b/drivers/net/ethernet/marvell/mvmdio.c
-index d14762d93640..28967a7b8df2 100644
---- a/drivers/net/ethernet/marvell/mvmdio.c
-+++ b/drivers/net/ethernet/marvell/mvmdio.c
-@@ -21,6 +21,7 @@
- #include <linux/delay.h>
- #include <linux/interrupt.h>
- #include <linux/io.h>
-+#include <linux/iopoll.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/of_device.h>
-@@ -56,11 +57,6 @@
-  * - Armada 370       (Globalscale Mirabox):   41us to 43us (Polled)
-  */
- #define MVMDIO_SMI_TIMEOUT            1000 /* 1000us = 1ms */
--#define MVMDIO_SMI_POLL_INTERVAL_MIN  45
--#define MVMDIO_SMI_POLL_INTERVAL_MAX  55
--
--#define MVMDIO_XSMI_POLL_INTERVAL_MIN 150
--#define MVMDIO_XSMI_POLL_INTERVAL_MAX 160
- struct orion_mdio_dev {
-       void __iomem *regs;
-@@ -82,8 +78,6 @@ enum orion_mdio_bus_type {
- struct orion_mdio_ops {
-       int (*is_done)(struct orion_mdio_dev *);
--      unsigned int poll_interval_min;
--      unsigned int poll_interval_max;
- };
- /* Wait for the SMI unit to be ready for another operation
-@@ -92,34 +86,23 @@ static int orion_mdio_wait_ready(const struct orion_mdio_ops *ops,
-                                struct mii_bus *bus)
- {
-       struct orion_mdio_dev *dev = bus->priv;
--      unsigned long timeout = usecs_to_jiffies(MVMDIO_SMI_TIMEOUT);
--      unsigned long end = jiffies + timeout;
--      int timedout = 0;
-+      unsigned long timeout;
-+      int done;
--      while (1) {
--              if (ops->is_done(dev))
-+      if (dev->err_interrupt <= 0) {
-+              if (!read_poll_timeout_atomic(ops->is_done, done, done, 2,
-+                                            MVMDIO_SMI_TIMEOUT, false, dev))
-+                      return 0;
-+      } else {
-+              /* wait_event_timeout does not guarantee a delay of at
-+               * least one whole jiffie, so timeout must be no less
-+               * than two.
-+               */
-+              timeout = max(usecs_to_jiffies(MVMDIO_SMI_TIMEOUT), 2);
-+
-+              if (wait_event_timeout(dev->smi_busy_wait,
-+                                     ops->is_done(dev), timeout))
-                       return 0;
--              else if (timedout)
--                      break;
--
--              if (dev->err_interrupt <= 0) {
--                      usleep_range(ops->poll_interval_min,
--                                   ops->poll_interval_max);
--
--                      if (time_is_before_jiffies(end))
--                              ++timedout;
--              } else {
--                      /* wait_event_timeout does not guarantee a delay of at
--                       * least one whole jiffie, so timeout must be no less
--                       * than two.
--                       */
--                      if (timeout < 2)
--                              timeout = 2;
--                      wait_event_timeout(dev->smi_busy_wait,
--                                         ops->is_done(dev), timeout);
--
--                      ++timedout;
--              }
-       }
-       dev_err(bus->parent, "Timeout: SMI busy for too long\n");
-@@ -133,8 +116,6 @@ static int orion_mdio_smi_is_done(struct orion_mdio_dev *dev)
- static const struct orion_mdio_ops orion_mdio_smi_ops = {
-       .is_done = orion_mdio_smi_is_done,
--      .poll_interval_min = MVMDIO_SMI_POLL_INTERVAL_MIN,
--      .poll_interval_max = MVMDIO_SMI_POLL_INTERVAL_MAX,
- };
- static int orion_mdio_smi_read(struct mii_bus *bus, int mii_id,
-@@ -198,8 +179,6 @@ static int orion_mdio_xsmi_is_done(struct orion_mdio_dev *dev)
- static const struct orion_mdio_ops orion_mdio_xsmi_ops = {
-       .is_done = orion_mdio_xsmi_is_done,
--      .poll_interval_min = MVMDIO_XSMI_POLL_INTERVAL_MIN,
--      .poll_interval_max = MVMDIO_XSMI_POLL_INTERVAL_MAX,
- };
- static int orion_mdio_xsmi_read(struct mii_bus *bus, int mii_id,
--- 
-2.43.0
-
index 3382cfd970776b9cc60a08033aded8ce126dd376..2b2291c5acd9439591dfa232aa17a64bca656198 100644 (file)
@@ -149,7 +149,6 @@ wifi-ath9k-fix-potential-array-index-out-of-bounds-r.patch
 bpf-add-map-and-need_defer-parameters-to-.map_fd_put.patch
 scsi-libfc-don-t-schedule-abort-twice.patch
 scsi-libfc-fix-up-timeout-error-in-fc_fcp_rec_error.patch
-net-mvmdio-avoid-excessive-sleeps-in-polled-mode.patch
 bpf-set-uattr-batch.count-as-zero-before-batched-upd.patch
 arm-dts-rockchip-fix-rk3036-hdmi-ports-node.patch
 arm-dts-imx25-27-eukrea-fix-rtc-node-name.patch