* [PATCH v4 net] net: stmmac: dwmac4: extend timeout for VLAN Tag register busy bit check
@ 2024-09-24 20:54 Shenwei Wang
2024-10-01 20:08 ` Serge Semin
2024-10-04 14:23 ` Jakub Kicinski
0 siblings, 2 replies; 3+ messages in thread
From: Shenwei Wang @ 2024-09-24 20:54 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Maxime Coquelin, horms
Cc: Alexandre Torgue, Jose Abreu, Ong Boon Leong, Wong Vee Khee,
Chuah Kim Tatt, netdev, linux-stm32, linux-arm-kernel, imx,
linux-imx, Serge Semin, Shenwei Wang, Andrew Lunn
Increase the timeout for checking the busy bit of the VLAN Tag register
from 10µs to 500ms. This change is necessary to accommodate scenarios
where Energy Efficient Ethernet (EEE) is enabled.
Overnight testing revealed that when EEE is active, the busy bit can
remain set for up to approximately 300ms. The new 500ms timeout provides
a safety margin.
Fixes: ed64639bc1e0 ("net: stmmac: Add support for VLAN Rx filtering")
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
---
Changes in V4:
- fixed the comments and R-b.
Changes in V3:
- re-org the error-check flow per Serge's review.
Changes in v2:
- replace the udelay with readl_poll_timeout per Simon's review.
---
.../net/ethernet/stmicro/stmmac/dwmac4_core.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
index a1858f083eef..e65a65666cc1 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
@@ -14,6 +14,7 @@
#include <linux/slab.h>
#include <linux/ethtool.h>
#include <linux/io.h>
+#include <linux/iopoll.h>
#include "stmmac.h"
#include "stmmac_pcs.h"
#include "dwmac4.h"
@@ -471,7 +472,7 @@ static int dwmac4_write_vlan_filter(struct net_device *dev,
u8 index, u32 data)
{
void __iomem *ioaddr = (void __iomem *)dev->base_addr;
- int i, timeout = 10;
+ int ret;
u32 val;
if (index >= hw->num_vlan)
@@ -487,16 +488,15 @@ static int dwmac4_write_vlan_filter(struct net_device *dev,
writel(val, ioaddr + GMAC_VLAN_TAG);
- for (i = 0; i < timeout; i++) {
- val = readl(ioaddr + GMAC_VLAN_TAG);
- if (!(val & GMAC_VLAN_TAG_CTRL_OB))
- return 0;
- udelay(1);
+ ret = readl_poll_timeout(ioaddr + GMAC_VLAN_TAG, val,
+ !(val & GMAC_VLAN_TAG_CTRL_OB),
+ 1000, 500000);
+ if (ret) {
+ netdev_err(dev, "Timeout accessing MAC_VLAN_Tag_Filter\n");
+ return -EBUSY;
}
- netdev_err(dev, "Timeout accessing MAC_VLAN_Tag_Filter\n");
-
- return -EBUSY;
+ return 0;
}
static int dwmac4_add_hw_vlan_rx_fltr(struct net_device *dev,
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v4 net] net: stmmac: dwmac4: extend timeout for VLAN Tag register busy bit check
2024-09-24 20:54 [PATCH v4 net] net: stmmac: dwmac4: extend timeout for VLAN Tag register busy bit check Shenwei Wang
@ 2024-10-01 20:08 ` Serge Semin
2024-10-04 14:23 ` Jakub Kicinski
1 sibling, 0 replies; 3+ messages in thread
From: Serge Semin @ 2024-10-01 20:08 UTC (permalink / raw)
To: Shenwei Wang
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Maxime Coquelin, horms, Alexandre Torgue, Jose Abreu,
Ong Boon Leong, Wong Vee Khee, Chuah Kim Tatt, netdev,
linux-stm32, linux-arm-kernel, imx, linux-imx, Andrew Lunn
On Tue, Sep 24, 2024 at 03:54:24PM GMT, Shenwei Wang wrote:
> Increase the timeout for checking the busy bit of the VLAN Tag register
> from 10µs to 500ms. This change is necessary to accommodate scenarios
> where Energy Efficient Ethernet (EEE) is enabled.
>
> Overnight testing revealed that when EEE is active, the busy bit can
> remain set for up to approximately 300ms. The new 500ms timeout provides
> a safety margin.
>
> Fixes: ed64639bc1e0 ("net: stmmac: Add support for VLAN Rx filtering")
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
Looking good now. Thanks!
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
-Serge(y)
> ---
> Changes in V4:
> - fixed the comments and R-b.
>
> Changes in V3:
> - re-org the error-check flow per Serge's review.
>
> Changes in v2:
> - replace the udelay with readl_poll_timeout per Simon's review.
>
> ---
> .../net/ethernet/stmicro/stmmac/dwmac4_core.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> index a1858f083eef..e65a65666cc1 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> @@ -14,6 +14,7 @@
> #include <linux/slab.h>
> #include <linux/ethtool.h>
> #include <linux/io.h>
> +#include <linux/iopoll.h>
> #include "stmmac.h"
> #include "stmmac_pcs.h"
> #include "dwmac4.h"
> @@ -471,7 +472,7 @@ static int dwmac4_write_vlan_filter(struct net_device *dev,
> u8 index, u32 data)
> {
> void __iomem *ioaddr = (void __iomem *)dev->base_addr;
> - int i, timeout = 10;
> + int ret;
> u32 val;
>
> if (index >= hw->num_vlan)
> @@ -487,16 +488,15 @@ static int dwmac4_write_vlan_filter(struct net_device *dev,
>
> writel(val, ioaddr + GMAC_VLAN_TAG);
>
> - for (i = 0; i < timeout; i++) {
> - val = readl(ioaddr + GMAC_VLAN_TAG);
> - if (!(val & GMAC_VLAN_TAG_CTRL_OB))
> - return 0;
> - udelay(1);
> + ret = readl_poll_timeout(ioaddr + GMAC_VLAN_TAG, val,
> + !(val & GMAC_VLAN_TAG_CTRL_OB),
> + 1000, 500000);
> + if (ret) {
> + netdev_err(dev, "Timeout accessing MAC_VLAN_Tag_Filter\n");
> + return -EBUSY;
> }
>
> - netdev_err(dev, "Timeout accessing MAC_VLAN_Tag_Filter\n");
> -
> - return -EBUSY;
> + return 0;
> }
>
> static int dwmac4_add_hw_vlan_rx_fltr(struct net_device *dev,
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v4 net] net: stmmac: dwmac4: extend timeout for VLAN Tag register busy bit check
2024-09-24 20:54 [PATCH v4 net] net: stmmac: dwmac4: extend timeout for VLAN Tag register busy bit check Shenwei Wang
2024-10-01 20:08 ` Serge Semin
@ 2024-10-04 14:23 ` Jakub Kicinski
1 sibling, 0 replies; 3+ messages in thread
From: Jakub Kicinski @ 2024-10-04 14:23 UTC (permalink / raw)
To: Shenwei Wang
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, Maxime Coquelin,
horms, Alexandre Torgue, Jose Abreu, Ong Boon Leong,
Wong Vee Khee, Chuah Kim Tatt, netdev, linux-stm32,
linux-arm-kernel, imx, linux-imx, Serge Semin, Andrew Lunn
On Tue, 24 Sep 2024 15:54:24 -0500 Shenwei Wang wrote:
> Increase the timeout for checking the busy bit of the VLAN Tag register
> from 10µs to 500ms. This change is necessary to accommodate scenarios
> where Energy Efficient Ethernet (EEE) is enabled.
>
> Overnight testing revealed that when EEE is active, the busy bit can
> remain set for up to approximately 300ms. The new 500ms timeout provides
> a safety margin.
>
> Fixes: ed64639bc1e0 ("net: stmmac: Add support for VLAN Rx filtering")
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
FTR this was merged to net as commit 4c1b56671b6.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-10-04 14:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-24 20:54 [PATCH v4 net] net: stmmac: dwmac4: extend timeout for VLAN Tag register busy bit check Shenwei Wang
2024-10-01 20:08 ` Serge Semin
2024-10-04 14:23 ` Jakub Kicinski
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).