From: Pawel Dembicki <paweldembicki@gmail.com>
To: netdev@vger.kernel.org
Cc: linus.walleij@linaro.org,
Pawel Dembicki <paweldembicki@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Claudiu Manoil <claudiu.manoil@nxp.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
UNGLinuxDriver@microchip.com, linux-kernel@vger.kernel.org
Subject: [PATCH net-next v4 01/15] net: dsa: vsc73xx: use read_poll_timeout instead delay loop
Date: Tue, 13 Feb 2024 23:03:14 +0100 [thread overview]
Message-ID: <20240213220331.239031-2-paweldembicki@gmail.com> (raw)
In-Reply-To: <20240213220331.239031-1-paweldembicki@gmail.com>
This commit switches delay loop to read_poll_timeout macro during
Arbiter empty check in adjust link function.
As Russel King suggested:
"This [change] avoids the issue that on the last iteration, the code reads
the register, test it, find the condition that's being waiting for is
false, _then_ waits and end up printing the error message - that last
wait is rather useless, and as the arbiter state isn't checked after
waiting, it could be that we had success during the last wait."
It also remove one short msleep delay.
Suggested-by: Russell King <linux@armlinux.org.uk>
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v4:
- Resend patch
v3:
- Add "Reviewed-by" to commit message only
v2:
- introduced patch
drivers/net/dsa/vitesse-vsc73xx-core.c | 25 +++++++++++--------------
1 file changed, 11 insertions(+), 14 deletions(-)
diff --git a/drivers/net/dsa/vitesse-vsc73xx-core.c b/drivers/net/dsa/vitesse-vsc73xx-core.c
index ae70eac3be28..8b2219404601 100644
--- a/drivers/net/dsa/vitesse-vsc73xx-core.c
+++ b/drivers/net/dsa/vitesse-vsc73xx-core.c
@@ -779,7 +779,7 @@ static void vsc73xx_adjust_link(struct dsa_switch *ds, int port,
* after a PHY or the CPU port comes up or down.
*/
if (!phydev->link) {
- int maxloop = 10;
+ int ret, err;
dev_dbg(vsc->dev, "port %d: went down\n",
port);
@@ -794,19 +794,16 @@ static void vsc73xx_adjust_link(struct dsa_switch *ds, int port,
VSC73XX_ARBDISC, BIT(port), BIT(port));
/* Wait until queue is empty */
- vsc73xx_read(vsc, VSC73XX_BLOCK_ARBITER, 0,
- VSC73XX_ARBEMPTY, &val);
- while (!(val & BIT(port))) {
- msleep(1);
- vsc73xx_read(vsc, VSC73XX_BLOCK_ARBITER, 0,
- VSC73XX_ARBEMPTY, &val);
- if (--maxloop == 0) {
- dev_err(vsc->dev,
- "timeout waiting for block arbiter\n");
- /* Continue anyway */
- break;
- }
- }
+ ret = read_poll_timeout(vsc73xx_read, err,
+ err < 0 || (val & BIT(port)),
+ 1000, 10000, false,
+ vsc, VSC73XX_BLOCK_ARBITER, 0,
+ VSC73XX_ARBEMPTY, &val);
+ if (ret)
+ dev_err(vsc->dev,
+ "timeout waiting for block arbiter\n");
+ else if (err < 0)
+ dev_err(vsc->dev, "error reading arbiter\n");
/* Put this port into reset */
vsc73xx_write(vsc, VSC73XX_BLOCK_MAC, port, VSC73XX_MAC_CFG,
--
2.34.1
next prev parent reply other threads:[~2024-02-13 22:04 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-13 22:03 [PATCH net-next v4 00/15] net: dsa: vsc73xx: Make vsc73xx usable Pawel Dembicki
2024-02-13 22:03 ` Pawel Dembicki [this message]
2024-02-13 23:07 ` [PATCH net-next v4 01/15] net: dsa: vsc73xx: use read_poll_timeout instead delay loop Linus Walleij
2024-02-13 23:16 ` Florian Fainelli
2024-02-14 23:46 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 02/15] net: dsa: vsc73xx: convert to PHYLINK Pawel Dembicki
2024-02-13 23:19 ` Florian Fainelli
2024-02-14 12:56 ` Paweł Dembicki
2024-02-15 0:04 ` Vladimir Oltean
2024-02-20 12:28 ` Paweł Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 03/15] net: dsa: vsc73xx: use macros for rgmii recognition Pawel Dembicki
2024-02-13 23:07 ` Linus Walleij
2024-02-13 23:12 ` Florian Fainelli
2024-02-15 0:08 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 04/15] net: dsa: vsc73xx: Add define for max num of ports Pawel Dembicki
2024-02-13 23:08 ` Linus Walleij
2024-02-13 23:20 ` Florian Fainelli
2024-02-15 0:09 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 05/15] net: dsa: vsc73xx: add structure descriptions Pawel Dembicki
2024-02-13 23:08 ` Linus Walleij
2024-02-13 23:20 ` Florian Fainelli
2024-02-15 0:18 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 06/15] net: dsa: vsc73xx: add port_stp_state_set function Pawel Dembicki
2024-02-15 15:31 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 07/15] net: dsa: vsc73xx: Add vlan filtering Pawel Dembicki
2024-02-13 23:14 ` Linus Walleij
2024-02-15 17:22 ` Vladimir Oltean
2024-02-20 12:06 ` Paweł Dembicki
2024-02-16 13:21 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 08/15] net: dsa: tag_sja1105: absorb logic for not overwriting precise info into dsa_8021q_rcv() Pawel Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 09/15] net: dsa: tag_sja1105: absorb entire sja1105_vlan_rcv() " Pawel Dembicki
2024-02-14 17:04 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 10/15] net: dsa: tag_sja1105: prefer precise source port info on SJA1110 too Pawel Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 11/15] net: dsa: tag_sja1105: refactor skb->dev assignment to dsa_tag_8021q_find_user() Pawel Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 12/15] net: dsa: vsc73xx: introduce tag 8021q for vsc73xx Pawel Dembicki
2024-02-15 17:39 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 13/15] net: dsa: vsc73xx: Implement vsc73xx 8021q tagger Pawel Dembicki
2024-02-15 18:09 ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 14/15] net: dsa: Define max num of bridges in tag8021q implementation Pawel Dembicki
2024-02-13 23:15 ` Florian Fainelli
2024-02-13 22:03 ` [PATCH net-next v4 15/15] net: dsa: vsc73xx: Add bridge support Pawel Dembicki
2024-02-15 18:13 ` Vladimir Oltean
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240213220331.239031-2-paweldembicki@gmail.com \
--to=paweldembicki@gmail.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andrew@lunn.ch \
--cc=claudiu.manoil@nxp.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).