* [PATCH net-next 0/5] net: stmmac: provide platform select_pcs method
@ 2024-06-10 14:40 Russell King (Oracle)
2024-06-10 14:40 ` [PATCH net-next 1/5] net: stmmac: add select_pcs() platform method Russell King (Oracle)
` (4 more replies)
0 siblings, 5 replies; 16+ messages in thread
From: Russell King (Oracle) @ 2024-06-10 14:40 UTC (permalink / raw)
To: Serge Semin
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Hi,
This series adds a select_pcs() method to the stmmac platform data to
allow platforms that need to provide their own PCSes to do so, moving
the decision making into platform code.
This avoids questions such as "what should the priority of XPCS vs
some other platform PCS be?" and when we provide a PCS for the
internal PCS, how that interacts with both the XPCS and platform
provided PCS.
Note that if a platform implements the select_pcs() method, then the
return values are:
- a phylink_pcs pointer - the PCS to be used.
- NULL - no phylink_pcs to be used.
Otherwise (if not implemented or returns an error-pointer), then
allow the the stmmac internal PCS to be used if appropriate (once
that patch set is merged.)
Patch 1 introduces the new method.
Patch 2 converts Intel mGBE to use this to provide the XPCS and
removes the XPCS decision making from core code.
Patch 3 provides an implementation for rzn1 to return its PCS.
Patch 4 does the same for socfpga.
Patch 5 removes the core code returning priv->hw->phylink_pcs.
No functional change is anticipated. Once this has been merged, it
will be expected that platforms should populate all three PCS
methods or none of the PCS methods.
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 11 +++++++++++
drivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c | 7 +++++++
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 7 +++++++
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 10 +++++++---
include/linux/stmmac.h | 4 +++-
5 files changed, 35 insertions(+), 4 deletions(-)
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH net-next 1/5] net: stmmac: add select_pcs() platform method
2024-06-10 14:40 [PATCH net-next 0/5] net: stmmac: provide platform select_pcs method Russell King (Oracle)
@ 2024-06-10 14:40 ` Russell King (Oracle)
2024-06-11 7:36 ` Romain Gantois
2024-06-10 14:40 ` [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation Russell King (Oracle)
` (3 subsequent siblings)
4 siblings, 1 reply; 16+ messages in thread
From: Russell King (Oracle) @ 2024-06-10 14:40 UTC (permalink / raw)
To: Serge Semin
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Allow platform drivers to provide their logic to select an appropriate
PCS.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 7 +++++++
include/linux/stmmac.h | 4 +++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index bbedf2a8c60f..302aa4080de3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -949,6 +949,13 @@ static struct phylink_pcs *stmmac_mac_select_pcs(struct phylink_config *config,
phy_interface_t interface)
{
struct stmmac_priv *priv = netdev_priv(to_net_dev(config->dev));
+ struct phylink_pcs *pcs;
+
+ if (priv->plat->select_pcs) {
+ pcs = priv->plat->select_pcs(priv, interface);
+ if (!IS_ERR(pcs))
+ return pcs;
+ }
if (priv->hw->xpcs)
return &priv->hw->xpcs->pcs;
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 8f0f156d50d3..9c54f82901a1 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -13,7 +13,7 @@
#define __STMMAC_PLATFORM_DATA
#include <linux/platform_device.h>
-#include <linux/phy.h>
+#include <linux/phylink.h>
#define MTL_MAX_RX_QUEUES 8
#define MTL_MAX_TX_QUEUES 8
@@ -271,6 +271,8 @@ struct plat_stmmacenet_data {
void (*dump_debug_regs)(void *priv);
int (*pcs_init)(struct stmmac_priv *priv);
void (*pcs_exit)(struct stmmac_priv *priv);
+ struct phylink_pcs *(*select_pcs)(struct stmmac_priv *priv,
+ phy_interface_t interface);
void *bsp_priv;
struct clk *stmmac_clk;
struct clk *pclk;
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
2024-06-10 14:40 [PATCH net-next 0/5] net: stmmac: provide platform select_pcs method Russell King (Oracle)
2024-06-10 14:40 ` [PATCH net-next 1/5] net: stmmac: add select_pcs() platform method Russell King (Oracle)
@ 2024-06-10 14:40 ` Russell King (Oracle)
2024-06-11 7:40 ` Romain Gantois
` (3 more replies)
2024-06-10 14:40 ` [PATCH net-next 3/5] net: stmmac: dwmac-rzn1: provide " Russell King (Oracle)
` (2 subsequent siblings)
4 siblings, 4 replies; 16+ messages in thread
From: Russell King (Oracle) @ 2024-06-10 14:40 UTC (permalink / raw)
To: Serge Semin
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Move the code returning the XPCS into dwmac-intel, which is the only
user of XPCS. Fill in the select_pcs() implementation only when we are
going to setup the XPCS, thus when it should be present.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 11 +++++++++++
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 ---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
index 56649edb18cd..227e1f6490f8 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
@@ -443,6 +443,16 @@ static void common_default_data(struct plat_stmmacenet_data *plat)
plat->rx_queues_cfg[0].pkt_route = 0x0;
}
+static struct phylink_pcs *intel_mgbe_select_pcs(struct stmmac_priv *priv,
+ phy_interface_t interface)
+{
+ /* plat->mdio_bus_data->has_xpcs has been set true, so there
+ * should always be an XPCS. The original code would always
+ * return this if present.
+ */
+ return &priv->hw->xpcs->pcs;
+}
+
static int intel_mgbe_common_data(struct pci_dev *pdev,
struct plat_stmmacenet_data *plat)
{
@@ -587,6 +597,7 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
plat->mdio_bus_data->has_xpcs = true;
plat->mdio_bus_data->default_an_inband = true;
+ plat->select_pcs = intel_mgbe_select_pcs,
}
/* Ensure mdio bus scan skips intel serdes and pcs-xpcs */
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 302aa4080de3..e9e2a95c91a3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -957,9 +957,6 @@ static struct phylink_pcs *stmmac_mac_select_pcs(struct phylink_config *config,
return pcs;
}
- if (priv->hw->xpcs)
- return &priv->hw->xpcs->pcs;
-
return priv->hw->phylink_pcs;
}
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 3/5] net: stmmac: dwmac-rzn1: provide select_pcs() implementation
2024-06-10 14:40 [PATCH net-next 0/5] net: stmmac: provide platform select_pcs method Russell King (Oracle)
2024-06-10 14:40 ` [PATCH net-next 1/5] net: stmmac: add select_pcs() platform method Russell King (Oracle)
2024-06-10 14:40 ` [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation Russell King (Oracle)
@ 2024-06-10 14:40 ` Russell King (Oracle)
2024-06-11 7:41 ` Romain Gantois
2024-06-10 14:40 ` [PATCH net-next 4/5] net: stmmac: dwmac-socfpga: " Russell King (Oracle)
2024-06-10 14:40 ` [PATCH net-next 5/5] net: stmmac: clean up stmmac_mac_select_pcs() Russell King (Oracle)
4 siblings, 1 reply; 16+ messages in thread
From: Russell King (Oracle) @ 2024-06-10 14:40 UTC (permalink / raw)
To: Serge Semin
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Provide a .select_pcs() implementation which returns the phylink PCS
that was created in the .pcs_init() method.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c
index 848cf3c01f4a..59a7bd560f96 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rzn1.c
@@ -39,6 +39,12 @@ static void rzn1_dwmac_pcs_exit(struct stmmac_priv *priv)
miic_destroy(priv->hw->phylink_pcs);
}
+static struct phylink_pcs *rzn1_dwmac_select_pcs(struct stmmac_priv *priv,
+ phy_interface_t interface)
+{
+ return priv->hw->phylink_pcs;
+}
+
static int rzn1_dwmac_probe(struct platform_device *pdev)
{
struct plat_stmmacenet_data *plat_dat;
@@ -57,6 +63,7 @@ static int rzn1_dwmac_probe(struct platform_device *pdev)
plat_dat->bsp_priv = plat_dat;
plat_dat->pcs_init = rzn1_dwmac_pcs_init;
plat_dat->pcs_exit = rzn1_dwmac_pcs_exit;
+ plat_dat->select_pcs = rzn1_dwmac_select_pcs;
ret = stmmac_dvr_probe(dev, plat_dat, &stmmac_res);
if (ret)
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 4/5] net: stmmac: dwmac-socfpga: provide select_pcs() implementation
2024-06-10 14:40 [PATCH net-next 0/5] net: stmmac: provide platform select_pcs method Russell King (Oracle)
` (2 preceding siblings ...)
2024-06-10 14:40 ` [PATCH net-next 3/5] net: stmmac: dwmac-rzn1: provide " Russell King (Oracle)
@ 2024-06-10 14:40 ` Russell King (Oracle)
2024-06-11 7:45 ` Romain Gantois
2024-06-10 14:40 ` [PATCH net-next 5/5] net: stmmac: clean up stmmac_mac_select_pcs() Russell King (Oracle)
4 siblings, 1 reply; 16+ messages in thread
From: Russell King (Oracle) @ 2024-06-10 14:40 UTC (permalink / raw)
To: Serge Semin
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Provide a .select_pcs() implementation which returns the phylink PCS
that was created in the .pcs_init() method.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
index b3d45f9dfb55..fdb4c773ec98 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
@@ -429,6 +429,12 @@ static void socfpga_dwmac_pcs_exit(struct stmmac_priv *priv)
lynx_pcs_destroy(priv->hw->phylink_pcs);
}
+static struct phylink_pcs *socfpga_dwmac_select_pcs(struct stmmac_priv *priv,
+ phy_interface_t interface)
+{
+ return priv->hw->phylink_pcs;
+}
+
static int socfpga_dwmac_probe(struct platform_device *pdev)
{
struct plat_stmmacenet_data *plat_dat;
@@ -478,6 +484,7 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)
plat_dat->fix_mac_speed = socfpga_dwmac_fix_mac_speed;
plat_dat->pcs_init = socfpga_dwmac_pcs_init;
plat_dat->pcs_exit = socfpga_dwmac_pcs_exit;
+ plat_dat->select_pcs = socfpga_dwmac_select_pcs;
ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
if (ret)
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 5/5] net: stmmac: clean up stmmac_mac_select_pcs()
2024-06-10 14:40 [PATCH net-next 0/5] net: stmmac: provide platform select_pcs method Russell King (Oracle)
` (3 preceding siblings ...)
2024-06-10 14:40 ` [PATCH net-next 4/5] net: stmmac: dwmac-socfpga: " Russell King (Oracle)
@ 2024-06-10 14:40 ` Russell King (Oracle)
2024-06-11 7:46 ` Romain Gantois
4 siblings, 1 reply; 16+ messages in thread
From: Russell King (Oracle) @ 2024-06-10 14:40 UTC (permalink / raw)
To: Serge Semin
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Since all platform providers of PCS now populate the select_pcs()
method, there is no need for the common code to look at
priv->hw->phylink_pcs, so remove it.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index e9e2a95c91a3..5ddbb0d44373 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -957,7 +957,7 @@ static struct phylink_pcs *stmmac_mac_select_pcs(struct phylink_config *config,
return pcs;
}
- return priv->hw->phylink_pcs;
+ return NULL;
}
static void stmmac_mac_config(struct phylink_config *config, unsigned int mode,
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 1/5] net: stmmac: add select_pcs() platform method
2024-06-10 14:40 ` [PATCH net-next 1/5] net: stmmac: add select_pcs() platform method Russell King (Oracle)
@ 2024-06-11 7:36 ` Romain Gantois
0 siblings, 0 replies; 16+ messages in thread
From: Romain Gantois @ 2024-06-11 7:36 UTC (permalink / raw)
To: Serge Semin, Russell King (Oracle)
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni
On lundi 10 juin 2024 16:40:33 UTC+2 Russell King (Oracle) wrote:
> Allow platform drivers to provide their logic to select an appropriate
> PCS.
>
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tested-by: Romain Gantois <romain.gantois@bootlin.com>
Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
Thanks,
--
Romain Gantois, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
2024-06-10 14:40 ` [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation Russell King (Oracle)
@ 2024-06-11 7:40 ` Romain Gantois
2024-06-13 10:33 ` Russell King (Oracle)
2024-06-11 11:10 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 1 reply; 16+ messages in thread
From: Romain Gantois @ 2024-06-11 7:40 UTC (permalink / raw)
To: Serge Semin, Russell King (Oracle)
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni
On lundi 10 juin 2024 16:40:39 UTC+2 Russell King (Oracle) wrote:
> Move the code returning the XPCS into dwmac-intel, which is the only
> user of XPCS. Fill in the select_pcs() implementation only when we are
> going to setup the XPCS, thus when it should be present.
>
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
--
Romain Gantois, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 3/5] net: stmmac: dwmac-rzn1: provide select_pcs() implementation
2024-06-10 14:40 ` [PATCH net-next 3/5] net: stmmac: dwmac-rzn1: provide " Russell King (Oracle)
@ 2024-06-11 7:41 ` Romain Gantois
0 siblings, 0 replies; 16+ messages in thread
From: Romain Gantois @ 2024-06-11 7:41 UTC (permalink / raw)
To: Serge Semin, Russell King (Oracle)
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni
On lundi 10 juin 2024 16:40:44 UTC+2 Russell King (Oracle) wrote:
> Provide a .select_pcs() implementation which returns the phylink PCS
> that was created in the .pcs_init() method.
>
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tested-by: Romain Gantois <romain.gantois@bootlin.com>
Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
--
Romain Gantois, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 4/5] net: stmmac: dwmac-socfpga: provide select_pcs() implementation
2024-06-10 14:40 ` [PATCH net-next 4/5] net: stmmac: dwmac-socfpga: " Russell King (Oracle)
@ 2024-06-11 7:45 ` Romain Gantois
0 siblings, 0 replies; 16+ messages in thread
From: Romain Gantois @ 2024-06-11 7:45 UTC (permalink / raw)
To: Serge Semin, Russell King (Oracle)
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni
On lundi 10 juin 2024 16:40:49 UTC+2 Russell King (Oracle) wrote:
> Provide a .select_pcs() implementation which returns the phylink PCS
> that was created in the .pcs_init() method.
>
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
--
Romain Gantois, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 5/5] net: stmmac: clean up stmmac_mac_select_pcs()
2024-06-10 14:40 ` [PATCH net-next 5/5] net: stmmac: clean up stmmac_mac_select_pcs() Russell King (Oracle)
@ 2024-06-11 7:46 ` Romain Gantois
0 siblings, 0 replies; 16+ messages in thread
From: Romain Gantois @ 2024-06-11 7:46 UTC (permalink / raw)
To: Serge Semin, Russell King (Oracle)
Cc: Alexandre Torgue, Andrew Halaney, David S. Miller, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni
On lundi 10 juin 2024 16:40:54 UTC+2 Russell King (Oracle) wrote:
> Since all platform providers of PCS now populate the select_pcs()
> method, there is no need for the common code to look at
> priv->hw->phylink_pcs, so remove it.
>
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
--
Romain Gantois, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
2024-06-10 14:40 ` [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation Russell King (Oracle)
2024-06-11 7:40 ` Romain Gantois
@ 2024-06-11 11:10 ` kernel test robot
2024-06-11 14:32 ` kernel test robot
2024-06-11 15:41 ` kernel test robot
3 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2024-06-11 11:10 UTC (permalink / raw)
To: Russell King (Oracle), Serge Semin
Cc: llvm, oe-kbuild-all, Alexandre Torgue, Andrew Halaney,
Eric Dumazet, Jakub Kicinski, Jose Abreu, linux-arm-kernel,
linux-stm32, Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Hi Russell,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Russell-King-Oracle/net-stmmac-dwmac-intel-provide-a-select_pcs-implementation/20240610-224406
base: net-next/main
patch link: https://lore.kernel.org/r/E1sGgCN-00Fact-0x%40rmk-PC.armlinux.org.uk
patch subject: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
config: x86_64-randconfig-013-20240611 (https://download.01.org/0day-ci/archive/20240611/202406111944.wTZ4iEdx-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240611/202406111944.wTZ4iEdx-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406111944.wTZ4iEdx-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:600:43: error: expected ';' after expression
600 | plat->select_pcs = intel_mgbe_select_pcs,
| ^
| ;
1 error generated.
vim +600 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
455
456 static int intel_mgbe_common_data(struct pci_dev *pdev,
457 struct plat_stmmacenet_data *plat)
458 {
459 struct fwnode_handle *fwnode;
460 char clk_name[20];
461 int ret;
462 int i;
463
464 plat->pdev = pdev;
465 plat->phy_addr = -1;
466 plat->clk_csr = 5;
467 plat->has_gmac = 0;
468 plat->has_gmac4 = 1;
469 plat->force_sf_dma_mode = 0;
470 plat->flags |= (STMMAC_FLAG_TSO_EN | STMMAC_FLAG_SPH_DISABLE);
471
472 /* Multiplying factor to the clk_eee_i clock time
473 * period to make it closer to 100 ns. This value
474 * should be programmed such that the clk_eee_time_period *
475 * (MULT_FACT_100NS + 1) should be within 80 ns to 120 ns
476 * clk_eee frequency is 19.2Mhz
477 * clk_eee_time_period is 52ns
478 * 52ns * (1 + 1) = 104ns
479 * MULT_FACT_100NS = 1
480 */
481 plat->mult_fact_100ns = 1;
482
483 plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
484
485 for (i = 0; i < plat->rx_queues_to_use; i++) {
486 plat->rx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
487 plat->rx_queues_cfg[i].chan = i;
488
489 /* Disable Priority config by default */
490 plat->rx_queues_cfg[i].use_prio = false;
491
492 /* Disable RX queues routing by default */
493 plat->rx_queues_cfg[i].pkt_route = 0x0;
494 }
495
496 for (i = 0; i < plat->tx_queues_to_use; i++) {
497 plat->tx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
498
499 /* Disable Priority config by default */
500 plat->tx_queues_cfg[i].use_prio = false;
501 /* Default TX Q0 to use TSO and rest TXQ for TBS */
502 if (i > 0)
503 plat->tx_queues_cfg[i].tbs_en = 1;
504 }
505
506 /* FIFO size is 4096 bytes for 1 tx/rx queue */
507 plat->tx_fifo_size = plat->tx_queues_to_use * 4096;
508 plat->rx_fifo_size = plat->rx_queues_to_use * 4096;
509
510 plat->tx_sched_algorithm = MTL_TX_ALGORITHM_WRR;
511 plat->tx_queues_cfg[0].weight = 0x09;
512 plat->tx_queues_cfg[1].weight = 0x0A;
513 plat->tx_queues_cfg[2].weight = 0x0B;
514 plat->tx_queues_cfg[3].weight = 0x0C;
515 plat->tx_queues_cfg[4].weight = 0x0D;
516 plat->tx_queues_cfg[5].weight = 0x0E;
517 plat->tx_queues_cfg[6].weight = 0x0F;
518 plat->tx_queues_cfg[7].weight = 0x10;
519
520 plat->dma_cfg->pbl = 32;
521 plat->dma_cfg->pblx8 = true;
522 plat->dma_cfg->fixed_burst = 0;
523 plat->dma_cfg->mixed_burst = 0;
524 plat->dma_cfg->aal = 0;
525 plat->dma_cfg->dche = true;
526
527 plat->axi = devm_kzalloc(&pdev->dev, sizeof(*plat->axi),
528 GFP_KERNEL);
529 if (!plat->axi)
530 return -ENOMEM;
531
532 plat->axi->axi_lpi_en = 0;
533 plat->axi->axi_xit_frm = 0;
534 plat->axi->axi_wr_osr_lmt = 1;
535 plat->axi->axi_rd_osr_lmt = 1;
536 plat->axi->axi_blen[0] = 4;
537 plat->axi->axi_blen[1] = 8;
538 plat->axi->axi_blen[2] = 16;
539
540 plat->ptp_max_adj = plat->clk_ptp_rate;
541 plat->eee_usecs_rate = plat->clk_ptp_rate;
542
543 /* Set system clock */
544 sprintf(clk_name, "%s-%s", "stmmac", pci_name(pdev));
545
546 plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev,
547 clk_name, NULL, 0,
548 plat->clk_ptp_rate);
549
550 if (IS_ERR(plat->stmmac_clk)) {
551 dev_warn(&pdev->dev, "Fail to register stmmac-clk\n");
552 plat->stmmac_clk = NULL;
553 }
554
555 ret = clk_prepare_enable(plat->stmmac_clk);
556 if (ret) {
557 clk_unregister_fixed_rate(plat->stmmac_clk);
558 return ret;
559 }
560
561 plat->ptp_clk_freq_config = intel_mgbe_ptp_clk_freq_config;
562
563 /* Set default value for multicast hash bins */
564 plat->multicast_filter_bins = HASH_TABLE_SIZE;
565
566 /* Set default value for unicast filter entries */
567 plat->unicast_filter_entries = 1;
568
569 /* Set the maxmtu to a default of JUMBO_LEN */
570 plat->maxmtu = JUMBO_LEN;
571
572 plat->flags |= STMMAC_FLAG_VLAN_FAIL_Q_EN;
573
574 /* Use the last Rx queue */
575 plat->vlan_fail_q = plat->rx_queues_to_use - 1;
576
577 /* For fixed-link setup, we allow phy-mode setting */
578 fwnode = dev_fwnode(&pdev->dev);
579 if (fwnode) {
580 int phy_mode;
581
582 /* "phy-mode" setting is optional. If it is set,
583 * we allow either sgmii or 1000base-x for now.
584 */
585 phy_mode = fwnode_get_phy_mode(fwnode);
586 if (phy_mode >= 0) {
587 if (phy_mode == PHY_INTERFACE_MODE_SGMII ||
588 phy_mode == PHY_INTERFACE_MODE_1000BASEX)
589 plat->phy_interface = phy_mode;
590 else
591 dev_warn(&pdev->dev, "Invalid phy-mode\n");
592 }
593 }
594
595 /* Intel mgbe SGMII interface uses pcs-xcps */
596 if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
597 plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
598 plat->mdio_bus_data->has_xpcs = true;
599 plat->mdio_bus_data->default_an_inband = true;
> 600 plat->select_pcs = intel_mgbe_select_pcs,
601 }
602
603 /* Ensure mdio bus scan skips intel serdes and pcs-xpcs */
604 plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR;
605 plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR;
606
607 plat->int_snapshot_num = AUX_SNAPSHOT1;
608
609 plat->crosststamp = intel_crosststamp;
610 plat->flags &= ~STMMAC_FLAG_INT_SNAPSHOT_EN;
611
612 /* Setup MSI vector offset specific to Intel mGbE controller */
613 plat->msi_mac_vec = 29;
614 plat->msi_lpi_vec = 28;
615 plat->msi_sfty_ce_vec = 27;
616 plat->msi_sfty_ue_vec = 26;
617 plat->msi_rx_base_vec = 0;
618 plat->msi_tx_base_vec = 1;
619
620 return 0;
621 }
622
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
2024-06-10 14:40 ` [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation Russell King (Oracle)
2024-06-11 7:40 ` Romain Gantois
2024-06-11 11:10 ` kernel test robot
@ 2024-06-11 14:32 ` kernel test robot
2024-06-11 15:41 ` kernel test robot
3 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2024-06-11 14:32 UTC (permalink / raw)
To: Russell King (Oracle), Serge Semin
Cc: llvm, oe-kbuild-all, Alexandre Torgue, Andrew Halaney,
Eric Dumazet, Jakub Kicinski, Jose Abreu, linux-arm-kernel,
linux-stm32, Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Hi Russell,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Russell-King-Oracle/net-stmmac-add-select_pcs-platform-method/20240611-024301
base: net-next/main
patch link: https://lore.kernel.org/r/E1sGgCN-00Fact-0x%40rmk-PC.armlinux.org.uk
patch subject: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20240611/202406112254.uL3WgEt1-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240611/202406112254.uL3WgEt1-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406112254.uL3WgEt1-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:600:43: error: expected ';' after expression
600 | plat->select_pcs = intel_mgbe_select_pcs,
| ^
| ;
1 error generated.
vim +600 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
455
456 static int intel_mgbe_common_data(struct pci_dev *pdev,
457 struct plat_stmmacenet_data *plat)
458 {
459 struct fwnode_handle *fwnode;
460 char clk_name[20];
461 int ret;
462 int i;
463
464 plat->pdev = pdev;
465 plat->phy_addr = -1;
466 plat->clk_csr = 5;
467 plat->has_gmac = 0;
468 plat->has_gmac4 = 1;
469 plat->force_sf_dma_mode = 0;
470 plat->flags |= (STMMAC_FLAG_TSO_EN | STMMAC_FLAG_SPH_DISABLE);
471
472 /* Multiplying factor to the clk_eee_i clock time
473 * period to make it closer to 100 ns. This value
474 * should be programmed such that the clk_eee_time_period *
475 * (MULT_FACT_100NS + 1) should be within 80 ns to 120 ns
476 * clk_eee frequency is 19.2Mhz
477 * clk_eee_time_period is 52ns
478 * 52ns * (1 + 1) = 104ns
479 * MULT_FACT_100NS = 1
480 */
481 plat->mult_fact_100ns = 1;
482
483 plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
484
485 for (i = 0; i < plat->rx_queues_to_use; i++) {
486 plat->rx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
487 plat->rx_queues_cfg[i].chan = i;
488
489 /* Disable Priority config by default */
490 plat->rx_queues_cfg[i].use_prio = false;
491
492 /* Disable RX queues routing by default */
493 plat->rx_queues_cfg[i].pkt_route = 0x0;
494 }
495
496 for (i = 0; i < plat->tx_queues_to_use; i++) {
497 plat->tx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
498
499 /* Disable Priority config by default */
500 plat->tx_queues_cfg[i].use_prio = false;
501 /* Default TX Q0 to use TSO and rest TXQ for TBS */
502 if (i > 0)
503 plat->tx_queues_cfg[i].tbs_en = 1;
504 }
505
506 /* FIFO size is 4096 bytes for 1 tx/rx queue */
507 plat->tx_fifo_size = plat->tx_queues_to_use * 4096;
508 plat->rx_fifo_size = plat->rx_queues_to_use * 4096;
509
510 plat->tx_sched_algorithm = MTL_TX_ALGORITHM_WRR;
511 plat->tx_queues_cfg[0].weight = 0x09;
512 plat->tx_queues_cfg[1].weight = 0x0A;
513 plat->tx_queues_cfg[2].weight = 0x0B;
514 plat->tx_queues_cfg[3].weight = 0x0C;
515 plat->tx_queues_cfg[4].weight = 0x0D;
516 plat->tx_queues_cfg[5].weight = 0x0E;
517 plat->tx_queues_cfg[6].weight = 0x0F;
518 plat->tx_queues_cfg[7].weight = 0x10;
519
520 plat->dma_cfg->pbl = 32;
521 plat->dma_cfg->pblx8 = true;
522 plat->dma_cfg->fixed_burst = 0;
523 plat->dma_cfg->mixed_burst = 0;
524 plat->dma_cfg->aal = 0;
525 plat->dma_cfg->dche = true;
526
527 plat->axi = devm_kzalloc(&pdev->dev, sizeof(*plat->axi),
528 GFP_KERNEL);
529 if (!plat->axi)
530 return -ENOMEM;
531
532 plat->axi->axi_lpi_en = 0;
533 plat->axi->axi_xit_frm = 0;
534 plat->axi->axi_wr_osr_lmt = 1;
535 plat->axi->axi_rd_osr_lmt = 1;
536 plat->axi->axi_blen[0] = 4;
537 plat->axi->axi_blen[1] = 8;
538 plat->axi->axi_blen[2] = 16;
539
540 plat->ptp_max_adj = plat->clk_ptp_rate;
541 plat->eee_usecs_rate = plat->clk_ptp_rate;
542
543 /* Set system clock */
544 sprintf(clk_name, "%s-%s", "stmmac", pci_name(pdev));
545
546 plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev,
547 clk_name, NULL, 0,
548 plat->clk_ptp_rate);
549
550 if (IS_ERR(plat->stmmac_clk)) {
551 dev_warn(&pdev->dev, "Fail to register stmmac-clk\n");
552 plat->stmmac_clk = NULL;
553 }
554
555 ret = clk_prepare_enable(plat->stmmac_clk);
556 if (ret) {
557 clk_unregister_fixed_rate(plat->stmmac_clk);
558 return ret;
559 }
560
561 plat->ptp_clk_freq_config = intel_mgbe_ptp_clk_freq_config;
562
563 /* Set default value for multicast hash bins */
564 plat->multicast_filter_bins = HASH_TABLE_SIZE;
565
566 /* Set default value for unicast filter entries */
567 plat->unicast_filter_entries = 1;
568
569 /* Set the maxmtu to a default of JUMBO_LEN */
570 plat->maxmtu = JUMBO_LEN;
571
572 plat->flags |= STMMAC_FLAG_VLAN_FAIL_Q_EN;
573
574 /* Use the last Rx queue */
575 plat->vlan_fail_q = plat->rx_queues_to_use - 1;
576
577 /* For fixed-link setup, we allow phy-mode setting */
578 fwnode = dev_fwnode(&pdev->dev);
579 if (fwnode) {
580 int phy_mode;
581
582 /* "phy-mode" setting is optional. If it is set,
583 * we allow either sgmii or 1000base-x for now.
584 */
585 phy_mode = fwnode_get_phy_mode(fwnode);
586 if (phy_mode >= 0) {
587 if (phy_mode == PHY_INTERFACE_MODE_SGMII ||
588 phy_mode == PHY_INTERFACE_MODE_1000BASEX)
589 plat->phy_interface = phy_mode;
590 else
591 dev_warn(&pdev->dev, "Invalid phy-mode\n");
592 }
593 }
594
595 /* Intel mgbe SGMII interface uses pcs-xcps */
596 if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
597 plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
598 plat->mdio_bus_data->has_xpcs = true;
599 plat->mdio_bus_data->default_an_inband = true;
> 600 plat->select_pcs = intel_mgbe_select_pcs,
601 }
602
603 /* Ensure mdio bus scan skips intel serdes and pcs-xpcs */
604 plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR;
605 plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR;
606
607 plat->int_snapshot_num = AUX_SNAPSHOT1;
608
609 plat->crosststamp = intel_crosststamp;
610 plat->flags &= ~STMMAC_FLAG_INT_SNAPSHOT_EN;
611
612 /* Setup MSI vector offset specific to Intel mGbE controller */
613 plat->msi_mac_vec = 29;
614 plat->msi_lpi_vec = 28;
615 plat->msi_sfty_ce_vec = 27;
616 plat->msi_sfty_ue_vec = 26;
617 plat->msi_rx_base_vec = 0;
618 plat->msi_tx_base_vec = 1;
619
620 return 0;
621 }
622
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
2024-06-10 14:40 ` [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation Russell King (Oracle)
` (2 preceding siblings ...)
2024-06-11 14:32 ` kernel test robot
@ 2024-06-11 15:41 ` kernel test robot
2024-06-11 17:19 ` Andy Shevchenko
3 siblings, 1 reply; 16+ messages in thread
From: kernel test robot @ 2024-06-11 15:41 UTC (permalink / raw)
To: Russell King (Oracle), Serge Semin
Cc: oe-kbuild-all, Alexandre Torgue, Andrew Halaney, Eric Dumazet,
Jakub Kicinski, Jose Abreu, linux-arm-kernel, linux-stm32,
Maxime Coquelin, netdev, Paolo Abeni, Romain Gantois
Hi Russell,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Russell-King-Oracle/net-stmmac-add-select_pcs-platform-method/20240611-024301
base: net-next/main
patch link: https://lore.kernel.org/r/E1sGgCN-00Fact-0x%40rmk-PC.armlinux.org.uk
patch subject: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
config: x86_64-rhel-8.3-kunit (https://download.01.org/0day-ci/archive/20240611/202406112331.DvtIlhjT-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240611/202406112331.DvtIlhjT-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406112331.DvtIlhjT-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c: In function 'intel_mgbe_common_data':
>> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:601:9: error: expected expression before '}' token
601 | }
| ^
vim +601 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
178a34a9b7ccb3 Russell King (Oracle 2024-06-10 455)
58da0cfa6cf120 Voon Weifeng 2020-03-31 456 static int intel_mgbe_common_data(struct pci_dev *pdev,
58da0cfa6cf120 Voon Weifeng 2020-03-31 457 struct plat_stmmacenet_data *plat)
58da0cfa6cf120 Voon Weifeng 2020-03-31 458 {
72edaf39fc6511 Ong Boon Leong 2022-06-15 459 struct fwnode_handle *fwnode;
8eb37ab7cc045e Wong Vee Khee 2021-03-05 460 char clk_name[20];
09f012e64e4b81 Andy Shevchenko 2020-04-30 461 int ret;
58da0cfa6cf120 Voon Weifeng 2020-03-31 462 int i;
58da0cfa6cf120 Voon Weifeng 2020-03-31 463
20e07e2c3cf310 Wong Vee Khee 2021-02-17 464 plat->pdev = pdev;
bff6f1db91e330 Voon Weifeng 2020-11-06 465 plat->phy_addr = -1;
58da0cfa6cf120 Voon Weifeng 2020-03-31 466 plat->clk_csr = 5;
58da0cfa6cf120 Voon Weifeng 2020-03-31 467 plat->has_gmac = 0;
58da0cfa6cf120 Voon Weifeng 2020-03-31 468 plat->has_gmac4 = 1;
58da0cfa6cf120 Voon Weifeng 2020-03-31 469 plat->force_sf_dma_mode = 0;
68861a3bcc1caf Bartosz Golaszewski 2023-07-10 470 plat->flags |= (STMMAC_FLAG_TSO_EN | STMMAC_FLAG_SPH_DISABLE);
58da0cfa6cf120 Voon Weifeng 2020-03-31 471
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 472 /* Multiplying factor to the clk_eee_i clock time
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 473 * period to make it closer to 100 ns. This value
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 474 * should be programmed such that the clk_eee_time_period *
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 475 * (MULT_FACT_100NS + 1) should be within 80 ns to 120 ns
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 476 * clk_eee frequency is 19.2Mhz
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 477 * clk_eee_time_period is 52ns
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 478 * 52ns * (1 + 1) = 104ns
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 479 * MULT_FACT_100NS = 1
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 480 */
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 481 plat->mult_fact_100ns = 1;
e80fe71b3ffe1e Michael Sit Wei Hong 2021-05-17 482
58da0cfa6cf120 Voon Weifeng 2020-03-31 483 plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
58da0cfa6cf120 Voon Weifeng 2020-03-31 484
58da0cfa6cf120 Voon Weifeng 2020-03-31 485 for (i = 0; i < plat->rx_queues_to_use; i++) {
58da0cfa6cf120 Voon Weifeng 2020-03-31 486 plat->rx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
58da0cfa6cf120 Voon Weifeng 2020-03-31 487 plat->rx_queues_cfg[i].chan = i;
58da0cfa6cf120 Voon Weifeng 2020-03-31 488
58da0cfa6cf120 Voon Weifeng 2020-03-31 489 /* Disable Priority config by default */
58da0cfa6cf120 Voon Weifeng 2020-03-31 490 plat->rx_queues_cfg[i].use_prio = false;
58da0cfa6cf120 Voon Weifeng 2020-03-31 491
58da0cfa6cf120 Voon Weifeng 2020-03-31 492 /* Disable RX queues routing by default */
58da0cfa6cf120 Voon Weifeng 2020-03-31 493 plat->rx_queues_cfg[i].pkt_route = 0x0;
58da0cfa6cf120 Voon Weifeng 2020-03-31 494 }
58da0cfa6cf120 Voon Weifeng 2020-03-31 495
58da0cfa6cf120 Voon Weifeng 2020-03-31 496 for (i = 0; i < plat->tx_queues_to_use; i++) {
58da0cfa6cf120 Voon Weifeng 2020-03-31 497 plat->tx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
58da0cfa6cf120 Voon Weifeng 2020-03-31 498
58da0cfa6cf120 Voon Weifeng 2020-03-31 499 /* Disable Priority config by default */
58da0cfa6cf120 Voon Weifeng 2020-03-31 500 plat->tx_queues_cfg[i].use_prio = false;
17cb00704c217d Ong Boon Leong 2021-04-21 501 /* Default TX Q0 to use TSO and rest TXQ for TBS */
17cb00704c217d Ong Boon Leong 2021-04-21 502 if (i > 0)
17cb00704c217d Ong Boon Leong 2021-04-21 503 plat->tx_queues_cfg[i].tbs_en = 1;
58da0cfa6cf120 Voon Weifeng 2020-03-31 504 }
58da0cfa6cf120 Voon Weifeng 2020-03-31 505
58da0cfa6cf120 Voon Weifeng 2020-03-31 506 /* FIFO size is 4096 bytes for 1 tx/rx queue */
58da0cfa6cf120 Voon Weifeng 2020-03-31 507 plat->tx_fifo_size = plat->tx_queues_to_use * 4096;
58da0cfa6cf120 Voon Weifeng 2020-03-31 508 plat->rx_fifo_size = plat->rx_queues_to_use * 4096;
58da0cfa6cf120 Voon Weifeng 2020-03-31 509
58da0cfa6cf120 Voon Weifeng 2020-03-31 510 plat->tx_sched_algorithm = MTL_TX_ALGORITHM_WRR;
58da0cfa6cf120 Voon Weifeng 2020-03-31 511 plat->tx_queues_cfg[0].weight = 0x09;
58da0cfa6cf120 Voon Weifeng 2020-03-31 512 plat->tx_queues_cfg[1].weight = 0x0A;
58da0cfa6cf120 Voon Weifeng 2020-03-31 513 plat->tx_queues_cfg[2].weight = 0x0B;
58da0cfa6cf120 Voon Weifeng 2020-03-31 514 plat->tx_queues_cfg[3].weight = 0x0C;
58da0cfa6cf120 Voon Weifeng 2020-03-31 515 plat->tx_queues_cfg[4].weight = 0x0D;
58da0cfa6cf120 Voon Weifeng 2020-03-31 516 plat->tx_queues_cfg[5].weight = 0x0E;
58da0cfa6cf120 Voon Weifeng 2020-03-31 517 plat->tx_queues_cfg[6].weight = 0x0F;
58da0cfa6cf120 Voon Weifeng 2020-03-31 518 plat->tx_queues_cfg[7].weight = 0x10;
58da0cfa6cf120 Voon Weifeng 2020-03-31 519
58da0cfa6cf120 Voon Weifeng 2020-03-31 520 plat->dma_cfg->pbl = 32;
58da0cfa6cf120 Voon Weifeng 2020-03-31 521 plat->dma_cfg->pblx8 = true;
58da0cfa6cf120 Voon Weifeng 2020-03-31 522 plat->dma_cfg->fixed_burst = 0;
58da0cfa6cf120 Voon Weifeng 2020-03-31 523 plat->dma_cfg->mixed_burst = 0;
58da0cfa6cf120 Voon Weifeng 2020-03-31 524 plat->dma_cfg->aal = 0;
676b7ec67d79ae Mohammad Athari Bin Ismail 2021-04-22 525 plat->dma_cfg->dche = true;
58da0cfa6cf120 Voon Weifeng 2020-03-31 526
58da0cfa6cf120 Voon Weifeng 2020-03-31 527 plat->axi = devm_kzalloc(&pdev->dev, sizeof(*plat->axi),
58da0cfa6cf120 Voon Weifeng 2020-03-31 528 GFP_KERNEL);
58da0cfa6cf120 Voon Weifeng 2020-03-31 529 if (!plat->axi)
58da0cfa6cf120 Voon Weifeng 2020-03-31 530 return -ENOMEM;
58da0cfa6cf120 Voon Weifeng 2020-03-31 531
58da0cfa6cf120 Voon Weifeng 2020-03-31 532 plat->axi->axi_lpi_en = 0;
58da0cfa6cf120 Voon Weifeng 2020-03-31 533 plat->axi->axi_xit_frm = 0;
58da0cfa6cf120 Voon Weifeng 2020-03-31 534 plat->axi->axi_wr_osr_lmt = 1;
58da0cfa6cf120 Voon Weifeng 2020-03-31 535 plat->axi->axi_rd_osr_lmt = 1;
58da0cfa6cf120 Voon Weifeng 2020-03-31 536 plat->axi->axi_blen[0] = 4;
58da0cfa6cf120 Voon Weifeng 2020-03-31 537 plat->axi->axi_blen[1] = 8;
58da0cfa6cf120 Voon Weifeng 2020-03-31 538 plat->axi->axi_blen[2] = 16;
58da0cfa6cf120 Voon Weifeng 2020-03-31 539
58da0cfa6cf120 Voon Weifeng 2020-03-31 540 plat->ptp_max_adj = plat->clk_ptp_rate;
b4c5f83ae3f3e2 Rusaimi Amira Ruslan 2020-09-28 541 plat->eee_usecs_rate = plat->clk_ptp_rate;
58da0cfa6cf120 Voon Weifeng 2020-03-31 542
58da0cfa6cf120 Voon Weifeng 2020-03-31 543 /* Set system clock */
8eb37ab7cc045e Wong Vee Khee 2021-03-05 544 sprintf(clk_name, "%s-%s", "stmmac", pci_name(pdev));
8eb37ab7cc045e Wong Vee Khee 2021-03-05 545
58da0cfa6cf120 Voon Weifeng 2020-03-31 546 plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev,
8eb37ab7cc045e Wong Vee Khee 2021-03-05 547 clk_name, NULL, 0,
58da0cfa6cf120 Voon Weifeng 2020-03-31 548 plat->clk_ptp_rate);
58da0cfa6cf120 Voon Weifeng 2020-03-31 549
58da0cfa6cf120 Voon Weifeng 2020-03-31 550 if (IS_ERR(plat->stmmac_clk)) {
58da0cfa6cf120 Voon Weifeng 2020-03-31 551 dev_warn(&pdev->dev, "Fail to register stmmac-clk\n");
58da0cfa6cf120 Voon Weifeng 2020-03-31 552 plat->stmmac_clk = NULL;
58da0cfa6cf120 Voon Weifeng 2020-03-31 553 }
09f012e64e4b81 Andy Shevchenko 2020-04-30 554
09f012e64e4b81 Andy Shevchenko 2020-04-30 555 ret = clk_prepare_enable(plat->stmmac_clk);
09f012e64e4b81 Andy Shevchenko 2020-04-30 556 if (ret) {
09f012e64e4b81 Andy Shevchenko 2020-04-30 557 clk_unregister_fixed_rate(plat->stmmac_clk);
09f012e64e4b81 Andy Shevchenko 2020-04-30 558 return ret;
09f012e64e4b81 Andy Shevchenko 2020-04-30 559 }
58da0cfa6cf120 Voon Weifeng 2020-03-31 560
76da35dc99afb4 Wong, Vee Khee 2021-03-17 561 plat->ptp_clk_freq_config = intel_mgbe_ptp_clk_freq_config;
76da35dc99afb4 Wong, Vee Khee 2021-03-17 562
58da0cfa6cf120 Voon Weifeng 2020-03-31 563 /* Set default value for multicast hash bins */
58da0cfa6cf120 Voon Weifeng 2020-03-31 564 plat->multicast_filter_bins = HASH_TABLE_SIZE;
58da0cfa6cf120 Voon Weifeng 2020-03-31 565
58da0cfa6cf120 Voon Weifeng 2020-03-31 566 /* Set default value for unicast filter entries */
58da0cfa6cf120 Voon Weifeng 2020-03-31 567 plat->unicast_filter_entries = 1;
58da0cfa6cf120 Voon Weifeng 2020-03-31 568
58da0cfa6cf120 Voon Weifeng 2020-03-31 569 /* Set the maxmtu to a default of JUMBO_LEN */
58da0cfa6cf120 Voon Weifeng 2020-03-31 570 plat->maxmtu = JUMBO_LEN;
58da0cfa6cf120 Voon Weifeng 2020-03-31 571
fc02152bdbb28b Bartosz Golaszewski 2023-07-10 572 plat->flags |= STMMAC_FLAG_VLAN_FAIL_Q_EN;
e0f9956a3862b3 Chuah, Kim Tatt 2020-09-25 573
e0f9956a3862b3 Chuah, Kim Tatt 2020-09-25 574 /* Use the last Rx queue */
e0f9956a3862b3 Chuah, Kim Tatt 2020-09-25 575 plat->vlan_fail_q = plat->rx_queues_to_use - 1;
e0f9956a3862b3 Chuah, Kim Tatt 2020-09-25 576
72edaf39fc6511 Ong Boon Leong 2022-06-15 577 /* For fixed-link setup, we allow phy-mode setting */
72edaf39fc6511 Ong Boon Leong 2022-06-15 578 fwnode = dev_fwnode(&pdev->dev);
72edaf39fc6511 Ong Boon Leong 2022-06-15 579 if (fwnode) {
72edaf39fc6511 Ong Boon Leong 2022-06-15 580 int phy_mode;
72edaf39fc6511 Ong Boon Leong 2022-06-15 581
72edaf39fc6511 Ong Boon Leong 2022-06-15 582 /* "phy-mode" setting is optional. If it is set,
72edaf39fc6511 Ong Boon Leong 2022-06-15 583 * we allow either sgmii or 1000base-x for now.
72edaf39fc6511 Ong Boon Leong 2022-06-15 584 */
72edaf39fc6511 Ong Boon Leong 2022-06-15 585 phy_mode = fwnode_get_phy_mode(fwnode);
72edaf39fc6511 Ong Boon Leong 2022-06-15 586 if (phy_mode >= 0) {
72edaf39fc6511 Ong Boon Leong 2022-06-15 587 if (phy_mode == PHY_INTERFACE_MODE_SGMII ||
72edaf39fc6511 Ong Boon Leong 2022-06-15 588 phy_mode == PHY_INTERFACE_MODE_1000BASEX)
72edaf39fc6511 Ong Boon Leong 2022-06-15 589 plat->phy_interface = phy_mode;
72edaf39fc6511 Ong Boon Leong 2022-06-15 590 else
72edaf39fc6511 Ong Boon Leong 2022-06-15 591 dev_warn(&pdev->dev, "Invalid phy-mode\n");
72edaf39fc6511 Ong Boon Leong 2022-06-15 592 }
72edaf39fc6511 Ong Boon Leong 2022-06-15 593 }
72edaf39fc6511 Ong Boon Leong 2022-06-15 594
7310fe538ea5c9 Ong Boon Leong 2021-03-15 595 /* Intel mgbe SGMII interface uses pcs-xcps */
c82386310d9572 Ong Boon Leong 2022-06-15 596 if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
c82386310d9572 Ong Boon Leong 2022-06-15 597 plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
7310fe538ea5c9 Ong Boon Leong 2021-03-15 598 plat->mdio_bus_data->has_xpcs = true;
83f55b01dd9030 Russell King (Oracle 2024-05-29 599) plat->mdio_bus_data->default_an_inband = true;
178a34a9b7ccb3 Russell King (Oracle 2024-06-10 600) plat->select_pcs = intel_mgbe_select_pcs,
7310fe538ea5c9 Ong Boon Leong 2021-03-15 @601 }
7310fe538ea5c9 Ong Boon Leong 2021-03-15 602
7310fe538ea5c9 Ong Boon Leong 2021-03-15 603 /* Ensure mdio bus scan skips intel serdes and pcs-xpcs */
7310fe538ea5c9 Ong Boon Leong 2021-03-15 604 plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR;
7310fe538ea5c9 Ong Boon Leong 2021-03-15 605 plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR;
7310fe538ea5c9 Ong Boon Leong 2021-03-15 606
341f67e424e572 Tan Tee Min 2021-03-23 607 plat->int_snapshot_num = AUX_SNAPSHOT1;
341f67e424e572 Tan Tee Min 2021-03-23 608
341f67e424e572 Tan Tee Min 2021-03-23 609 plat->crosststamp = intel_crosststamp;
621ba7ad7891b3 Bartosz Golaszewski 2023-07-10 610 plat->flags &= ~STMMAC_FLAG_INT_SNAPSHOT_EN;
341f67e424e572 Tan Tee Min 2021-03-23 611
b42446b9b37ba4 Ong Boon Leong 2021-03-26 612 /* Setup MSI vector offset specific to Intel mGbE controller */
b42446b9b37ba4 Ong Boon Leong 2021-03-26 613 plat->msi_mac_vec = 29;
b42446b9b37ba4 Ong Boon Leong 2021-03-26 614 plat->msi_lpi_vec = 28;
b42446b9b37ba4 Ong Boon Leong 2021-03-26 615 plat->msi_sfty_ce_vec = 27;
b42446b9b37ba4 Ong Boon Leong 2021-03-26 616 plat->msi_sfty_ue_vec = 26;
b42446b9b37ba4 Ong Boon Leong 2021-03-26 617 plat->msi_rx_base_vec = 0;
b42446b9b37ba4 Ong Boon Leong 2021-03-26 618 plat->msi_tx_base_vec = 1;
b42446b9b37ba4 Ong Boon Leong 2021-03-26 619
58da0cfa6cf120 Voon Weifeng 2020-03-31 620 return 0;
58da0cfa6cf120 Voon Weifeng 2020-03-31 621 }
58da0cfa6cf120 Voon Weifeng 2020-03-31 622
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
2024-06-11 15:41 ` kernel test robot
@ 2024-06-11 17:19 ` Andy Shevchenko
0 siblings, 0 replies; 16+ messages in thread
From: Andy Shevchenko @ 2024-06-11 17:19 UTC (permalink / raw)
To: kernel test robot
Cc: Russell King (Oracle), Serge Semin, oe-kbuild-all,
Alexandre Torgue, Andrew Halaney, Eric Dumazet, Jakub Kicinski,
Jose Abreu, linux-arm-kernel, linux-stm32, Maxime Coquelin,
netdev, Paolo Abeni, Romain Gantois
Tue, Jun 11, 2024 at 11:41:38PM +0800, kernel test robot kirjoitti:
> Hi Russell,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on net-next/main]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Russell-King-Oracle/net-stmmac-add-select_pcs-platform-method/20240611-024301
> base: net-next/main
> patch link: https://lore.kernel.org/r/E1sGgCN-00Fact-0x%40rmk-PC.armlinux.org.uk
> patch subject: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
> config: x86_64-rhel-8.3-kunit (https://download.01.org/0day-ci/archive/20240611/202406112331.DvtIlhjT-lkp@intel.com/config)
> compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240611/202406112331.DvtIlhjT-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202406112331.DvtIlhjT-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c: In function 'intel_mgbe_common_data':
> >> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:601:9: error: expected expression before '}' token
> 601 | }
> | ^
>
...
> 7310fe538ea5c9 Ong Boon Leong 2021-03-15 595 /* Intel mgbe SGMII interface uses pcs-xcps */
> c82386310d9572 Ong Boon Leong 2022-06-15 596 if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
> c82386310d9572 Ong Boon Leong 2022-06-15 597 plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
> 7310fe538ea5c9 Ong Boon Leong 2021-03-15 598 plat->mdio_bus_data->has_xpcs = true;
> 83f55b01dd9030 Russell King (Oracle 2024-05-29 599) plat->mdio_bus_data->default_an_inband = true;
> 178a34a9b7ccb3 Russell King (Oracle 2024-06-10 600) plat->select_pcs = intel_mgbe_select_pcs,
Yeah, compiler wants semicolon here.
> 7310fe538ea5c9 Ong Boon Leong 2021-03-15 @601 }
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation
2024-06-11 7:40 ` Romain Gantois
@ 2024-06-13 10:33 ` Russell King (Oracle)
0 siblings, 0 replies; 16+ messages in thread
From: Russell King (Oracle) @ 2024-06-13 10:33 UTC (permalink / raw)
To: Romain Gantois
Cc: Serge Semin, Alexandre Torgue, Andrew Halaney, David S. Miller,
Eric Dumazet, Jakub Kicinski, Jose Abreu, linux-arm-kernel,
linux-stm32, Maxime Coquelin, netdev, Paolo Abeni
On Tue, Jun 11, 2024 at 09:40:51AM +0200, Romain Gantois wrote:
> On lundi 10 juin 2024 16:40:39 UTC+2 Russell King (Oracle) wrote:
> > Move the code returning the XPCS into dwmac-intel, which is the only
> > user of XPCS. Fill in the select_pcs() implementation only when we are
> > going to setup the XPCS, thus when it should be present.
> >
> > Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
>
> Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
I'll drop this r-b because changes have been necessary. Added all the
others.
Thanks.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-06-13 10:34 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-10 14:40 [PATCH net-next 0/5] net: stmmac: provide platform select_pcs method Russell King (Oracle)
2024-06-10 14:40 ` [PATCH net-next 1/5] net: stmmac: add select_pcs() platform method Russell King (Oracle)
2024-06-11 7:36 ` Romain Gantois
2024-06-10 14:40 ` [PATCH net-next 2/5] net: stmmac: dwmac-intel: provide a select_pcs() implementation Russell King (Oracle)
2024-06-11 7:40 ` Romain Gantois
2024-06-13 10:33 ` Russell King (Oracle)
2024-06-11 11:10 ` kernel test robot
2024-06-11 14:32 ` kernel test robot
2024-06-11 15:41 ` kernel test robot
2024-06-11 17:19 ` Andy Shevchenko
2024-06-10 14:40 ` [PATCH net-next 3/5] net: stmmac: dwmac-rzn1: provide " Russell King (Oracle)
2024-06-11 7:41 ` Romain Gantois
2024-06-10 14:40 ` [PATCH net-next 4/5] net: stmmac: dwmac-socfpga: " Russell King (Oracle)
2024-06-11 7:45 ` Romain Gantois
2024-06-10 14:40 ` [PATCH net-next 5/5] net: stmmac: clean up stmmac_mac_select_pcs() Russell King (Oracle)
2024-06-11 7:46 ` Romain Gantois
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).