2024-06-11 13:55:39

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 00/12] net: dsa: lantiq_gswip: code improvements

This patchset for the lantiq_gswip driver is a collection of minor fixes
and coding improvements by Martin Blumenstingl without any real changes
in the actual functionality.

=== Changelog ===
From v4:
- merge dt-bindings patches to satisfy 'make dt_bindings_check' and add
some improvements suggested by Rob Herring

From v3:
- convert lantiq,gswip bindings to YAML schema
- Add Hauke's acked-by as mentioned in the cover letter in v1

From v2:
- removed unused variable max_ports in gswip_add_single_port_br()

From v1:
- signal that we only update example code in dt-bindings
- don't use the word 'fix' if not appropriate
- new patch: add terminating '\n' where missing
- renamed MAC_BRIDGE macros to make it obvious which register field is
used
- new patch: remove dead code from gswip_add_single_port_br()
- updated error message if FID not found in gswip_port_fdb()

Martin Blumenstingl (8):
net: dsa: lantiq_gswip: Only allow phy-mode = "internal" on the CPU
port
net: dsa: lantiq_gswip: Use dev_err_probe where appropriate
net: dsa: lantiq_gswip: Don't manually call gswip_port_enable()
net: dsa: lantiq_gswip: Use dsa_is_cpu_port() in
gswip_port_change_mtu()
net: dsa: lantiq_gswip: Change literal 6 to ETH_ALEN
net: dsa: lantiq_gswip: Consistently use macros for the mac bridge
table
net: dsa: lantiq_gswip: Update comments in gswip_port_vlan_filtering()
net: dsa: lantiq_gswip: Improve error message in gswip_port_fdb()

Martin Schiller (4):
dt-bindings: net: dsa: lantiq,gswip: convert to YAML schema
net: dsa: lantiq_gswip: add terminating \n where missing
net: dsa: lantiq_gswip: do also enable or disable cpu port
net: dsa: lantiq_gswip: Remove dead code from
gswip_add_single_port_br()

.../bindings/net/dsa/lantiq,gswip.yaml | 202 ++++++++++++++++++
.../bindings/net/dsa/lantiq-gswip.txt | 146 -------------
MAINTAINERS | 1 +
drivers/net/dsa/lantiq_gswip.c | 123 +++++------
4 files changed, 258 insertions(+), 214 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
delete mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt

--
2.39.2



2024-06-11 13:56:21

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 02/12] net: dsa: lantiq_gswip: Only allow phy-mode = "internal" on the CPU port

From: Martin Blumenstingl <[email protected]>

Add the CPU port to gswip_xrx200_phylink_get_caps() and
gswip_xrx300_phylink_get_caps(). It connects through a SoC-internal bus,
so the only allowed phy-mode is PHY_INTERFACE_MODE_INTERNAL.

Signed-off-by: Martin Blumenstingl <[email protected]>
Reviewed-by: Vladimir Oltean <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index a557049e34f5..b9c7076ce32f 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -1516,6 +1516,7 @@ static void gswip_xrx200_phylink_get_caps(struct dsa_switch *ds, int port,
case 2:
case 3:
case 4:
+ case 6:
__set_bit(PHY_INTERFACE_MODE_INTERNAL,
config->supported_interfaces);
break;
@@ -1547,6 +1548,7 @@ static void gswip_xrx300_phylink_get_caps(struct dsa_switch *ds, int port,
case 2:
case 3:
case 4:
+ case 6:
__set_bit(PHY_INTERFACE_MODE_INTERNAL,
config->supported_interfaces);
break;
--
2.39.2


2024-06-11 13:58:49

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 05/12] net: dsa: lantiq_gswip: Don't manually call gswip_port_enable()

From: Martin Blumenstingl <[email protected]>

We don't need to manually call gswip_port_enable() from within
gswip_setup() for the CPU port. DSA does this automatically for us.

Signed-off-by: Martin Blumenstingl <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index 37cc0247dc78..c1f9419af35f 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -898,8 +898,6 @@ static int gswip_setup(struct dsa_switch *ds)

ds->mtu_enforcement_ingress = true;

- gswip_port_enable(ds, cpu_port, NULL);
-
ds->configure_vlan_while_not_filtering = false;

return 0;
--
2.39.2


2024-06-11 13:59:02

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 10/12] net: dsa: lantiq_gswip: Remove dead code from gswip_add_single_port_br()

The port validation in gswip_add_single_port_br() is superfluous and
can be omitted.

Suggested-by: Vladimir Oltean <[email protected]>
Signed-off-by: Martin Schiller <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 6 ------
1 file changed, 6 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index cd88b00cfdc1..2bbc7dd45418 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -655,14 +655,8 @@ static int gswip_add_single_port_br(struct gswip_priv *priv, int port, bool add)
struct gswip_pce_table_entry vlan_active = {0,};
struct gswip_pce_table_entry vlan_mapping = {0,};
unsigned int cpu_port = priv->hw_info->cpu_port;
- unsigned int max_ports = priv->hw_info->max_ports;
int err;

- if (port >= max_ports) {
- dev_err(priv->dev, "single port for %i supported\n", port);
- return -EIO;
- }
-
vlan_active.index = port + 1;
vlan_active.table = GSWIP_TABLE_ACTIVE_VLAN;
vlan_active.key[0] = 0; /* vid */
--
2.39.2


2024-06-11 13:59:10

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 06/12] net: dsa: lantiq_gswip: do also enable or disable cpu port

Before commit 74be4babe72f ("net: dsa: do not enable or disable non user
ports"), gswip_port_enable/disable() were also executed for the cpu port
in gswip_setup() which disabled the cpu port during initialization.

Let's restore this by removing the dsa_is_user_port checks. Also, let's
clean up the gswip_port_enable() function so that we only have to check
for the cpu port once. The operation reordering done here is safe.

Signed-off-by: Martin Schiller <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 24 ++++++++----------------
1 file changed, 8 insertions(+), 16 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index c1f9419af35f..8ec329d0c136 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -695,13 +695,18 @@ static int gswip_port_enable(struct dsa_switch *ds, int port,
struct gswip_priv *priv = ds->priv;
int err;

- if (!dsa_is_user_port(ds, port))
- return 0;
-
if (!dsa_is_cpu_port(ds, port)) {
+ u32 mdio_phy = 0;
+
err = gswip_add_single_port_br(priv, port, true);
if (err)
return err;
+
+ if (phydev)
+ mdio_phy = phydev->mdio.addr & GSWIP_MDIO_PHY_ADDR_MASK;
+
+ gswip_mdio_mask(priv, GSWIP_MDIO_PHY_ADDR_MASK, mdio_phy,
+ GSWIP_MDIO_PHYp(port));
}

/* RMON Counter Enable for port */
@@ -714,16 +719,6 @@ static int gswip_port_enable(struct dsa_switch *ds, int port,
gswip_switch_mask(priv, 0, GSWIP_SDMA_PCTRL_EN,
GSWIP_SDMA_PCTRLp(port));

- if (!dsa_is_cpu_port(ds, port)) {
- u32 mdio_phy = 0;
-
- if (phydev)
- mdio_phy = phydev->mdio.addr & GSWIP_MDIO_PHY_ADDR_MASK;
-
- gswip_mdio_mask(priv, GSWIP_MDIO_PHY_ADDR_MASK, mdio_phy,
- GSWIP_MDIO_PHYp(port));
- }
-
return 0;
}

@@ -731,9 +726,6 @@ static void gswip_port_disable(struct dsa_switch *ds, int port)
{
struct gswip_priv *priv = ds->priv;

- if (!dsa_is_user_port(ds, port))
- return;
-
gswip_switch_mask(priv, GSWIP_FDMA_PCTRL_EN, 0,
GSWIP_FDMA_PCTRLp(port));
gswip_switch_mask(priv, GSWIP_SDMA_PCTRL_EN, 0,
--
2.39.2


2024-06-11 13:59:56

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 11/12] net: dsa: lantiq_gswip: Update comments in gswip_port_vlan_filtering()

From: Martin Blumenstingl <[email protected]>

Update the comments in gswip_port_vlan_filtering() so it's clear that
there are two separate cases, one for "tag based VLAN" and another one
for "port based VLAN".

Suggested-by: Martin Schiller <[email protected]>
Signed-off-by: Martin Blumenstingl <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index 2bbc7dd45418..ec52c62eadce 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -780,7 +780,7 @@ static int gswip_port_vlan_filtering(struct dsa_switch *ds, int port,
}

if (vlan_filtering) {
- /* Use port based VLAN tag */
+ /* Use tag based VLAN */
gswip_switch_mask(priv,
GSWIP_PCE_VCTRL_VSR,
GSWIP_PCE_VCTRL_UVR | GSWIP_PCE_VCTRL_VIMR |
@@ -789,7 +789,7 @@ static int gswip_port_vlan_filtering(struct dsa_switch *ds, int port,
gswip_switch_mask(priv, GSWIP_PCE_PCTRL_0_TVM, 0,
GSWIP_PCE_PCTRL_0p(port));
} else {
- /* Use port based VLAN tag */
+ /* Use port based VLAN */
gswip_switch_mask(priv,
GSWIP_PCE_VCTRL_UVR | GSWIP_PCE_VCTRL_VIMR |
GSWIP_PCE_VCTRL_VEMR,
--
2.39.2


2024-06-11 13:59:57

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 08/12] net: dsa: lantiq_gswip: Change literal 6 to ETH_ALEN

From: Martin Blumenstingl <[email protected]>

The addr variable in gswip_port_fdb_dump() stores a mac address. Use
ETH_ALEN to make this consistent across other drivers.

Signed-off-by: Martin Blumenstingl <[email protected]>
Reviewed-by: Vladimir Oltean <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index 58c069f964dd..525a62a21601 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -1413,7 +1413,7 @@ static int gswip_port_fdb_dump(struct dsa_switch *ds, int port,
{
struct gswip_priv *priv = ds->priv;
struct gswip_pce_table_entry mac_bridge = {0,};
- unsigned char addr[6];
+ unsigned char addr[ETH_ALEN];
int i;
int err;

--
2.39.2


2024-06-11 14:00:24

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 12/12] net: dsa: lantiq_gswip: Improve error message in gswip_port_fdb()

From: Martin Blumenstingl <[email protected]>

Print that no FID is found for bridge %s instead of the incorrect
message that the port is not part of a bridge.

Signed-off-by: Martin Blumenstingl <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index ec52c62eadce..fcd4505f4925 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -1370,7 +1370,8 @@ static int gswip_port_fdb(struct dsa_switch *ds, int port,
}

if (fid == -1) {
- dev_err(priv->dev, "Port not part of a bridge\n");
+ dev_err(priv->dev, "no FID found for bridge %s\n",
+ bridge->name);
return -EINVAL;
}

--
2.39.2


2024-06-11 14:04:57

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 01/12] dt-bindings: net: dsa: lantiq,gswip: convert to YAML schema

Convert the lantiq,gswip bindings to YAML format.

Also add this new file to the MAINTAINERS file.

Furthermore, the CPU port has to specify a phy-mode and either a phy or
a fixed-link. Since GSWIP is connected using a SoC internal protocol
there's no PHY involved. Add phy-mode = "internal" and a fixed-link to
the example code to describe the communication between the PMAC
(Ethernet controller) and GSWIP switch.

Signed-off-by: Martin Schiller <[email protected]>
---
.../bindings/net/dsa/lantiq,gswip.yaml | 202 ++++++++++++++++++
.../bindings/net/dsa/lantiq-gswip.txt | 146 -------------
MAINTAINERS | 1 +
3 files changed, 203 insertions(+), 146 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
delete mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt

diff --git a/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml b/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
new file mode 100644
index 000000000000..f3154b19af78
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
@@ -0,0 +1,202 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/dsa/lantiq,gswip.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Lantiq GSWIP Ethernet switches
+
+allOf:
+ - $ref: dsa.yaml#/$defs/ethernet-ports
+
+maintainers:
+ - Hauke Mehrtens <[email protected]>
+
+properties:
+ compatible:
+ enum:
+ - lantiq,xrx200-gswip
+ - lantiq,xrx300-gswip
+ - lantiq,xrx330-gswip
+
+ reg:
+ minItems: 3
+ maxItems: 3
+
+ reg-names:
+ items:
+ - const: switch
+ - const: mdio
+ - const: mii
+
+ mdio:
+ $ref: /schemas/net/mdio.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ compatible:
+ const: lantiq,xrx200-mdio
+
+ required:
+ - compatible
+
+ gphy-fw:
+ type: object
+ properties:
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+ compatible:
+ items:
+ - enum:
+ - lantiq,xrx200-gphy-fw
+ - lantiq,xrx300-gphy-fw
+ - lantiq,xrx330-gphy-fw
+ - const: lantiq,gphy-fw
+
+ lantiq,rcu:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: phandle to the RCU syscon
+
+ patternProperties:
+ "^gphy@[0-9a-f]{1,2}$":
+ type: object
+
+ additionalProperties: false
+
+ properties:
+ reg:
+ minimum: 0
+ maximum: 255
+ description:
+ Offset of the GPHY firmware register in the RCU register range
+
+ resets:
+ items:
+ - description: GPHY reset line
+
+ reset-names:
+ items:
+ - const: gphy
+
+ required:
+ - reg
+
+ required:
+ - compatible
+ - lantiq,rcu
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ switch@e108000 {
+ compatible = "lantiq,xrx200-gswip";
+ reg = <0xe108000 0x3100>, /* switch */
+ <0xe10b100 0xd8>, /* mdio */
+ <0xe10b1d8 0x130>; /* mii */
+ dsa,member = <0 0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ label = "lan3";
+ phy-mode = "rgmii";
+ phy-handle = <&phy0>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan4";
+ phy-mode = "rgmii";
+ phy-handle = <&phy1>;
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan2";
+ phy-mode = "internal";
+ phy-handle = <&phy11>;
+ };
+
+ port@4 {
+ reg = <4>;
+ label = "lan1";
+ phy-mode = "internal";
+ phy-handle = <&phy13>;
+ };
+
+ port@5 {
+ reg = <5>;
+ label = "wan";
+ phy-mode = "rgmii";
+ phy-handle = <&phy5>;
+ };
+
+ port@6 {
+ reg = <0x6>;
+ phy-mode = "internal";
+ ethernet = <&eth0>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "lantiq,xrx200-mdio";
+
+ phy0: ethernet-phy@0 {
+ reg = <0x0>;
+ };
+ phy1: ethernet-phy@1 {
+ reg = <0x1>;
+ };
+ phy5: ethernet-phy@5 {
+ reg = <0x5>;
+ };
+ phy11: ethernet-phy@11 {
+ reg = <0x11>;
+ };
+ phy13: ethernet-phy@13 {
+ reg = <0x13>;
+ };
+ };
+
+ gphy-fw {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "lantiq,xrx200-gphy-fw", "lantiq,gphy-fw";
+ lantiq,rcu = <&rcu0>;
+
+ gphy@20 {
+ reg = <0x20>;
+
+ resets = <&reset0 31 30>;
+ reset-names = "gphy";
+ };
+
+ gphy@68 {
+ reg = <0x68>;
+
+ resets = <&reset0 29 28>;
+ reset-names = "gphy";
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt b/Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt
deleted file mode 100644
index 8bb1eff21cb1..000000000000
--- a/Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-Lantiq GSWIP Ethernet switches
-==================================
-
-Required properties for GSWIP core:
-
-- compatible : "lantiq,xrx200-gswip" for the embedded GSWIP in the
- xRX200 SoC
- "lantiq,xrx300-gswip" for the embedded GSWIP in the
- xRX300 SoC
- "lantiq,xrx330-gswip" for the embedded GSWIP in the
- xRX330 SoC
-- reg : memory range of the GSWIP core registers
- : memory range of the GSWIP MDIO registers
- : memory range of the GSWIP MII registers
-
-See Documentation/devicetree/bindings/net/dsa/dsa.txt for a list of
-additional required and optional properties.
-
-
-Required properties for MDIO bus:
-- compatible : "lantiq,xrx200-mdio" for the MDIO bus inside the GSWIP
- core of the xRX200 SoC and the PHYs connected to it.
-
-See Documentation/devicetree/bindings/net/mdio.txt for a list of additional
-required and optional properties.
-
-
-Required properties for GPHY firmware loading:
-- compatible : "lantiq,xrx200-gphy-fw", "lantiq,gphy-fw"
- "lantiq,xrx300-gphy-fw", "lantiq,gphy-fw"
- "lantiq,xrx330-gphy-fw", "lantiq,gphy-fw"
- for the loading of the firmware into the embedded
- GPHY core of the SoC.
-- lantiq,rcu : reference to the rcu syscon
-
-The GPHY firmware loader has a list of GPHY entries, one for each
-embedded GPHY
-
-- reg : Offset of the GPHY firmware register in the RCU
- register range
-- resets : list of resets of the embedded GPHY
-- reset-names : list of names of the resets
-
-Example:
-
-Ethernet switch on the VRX200 SoC:
-
-switch@e108000 {
- #address-cells = <1>;
- #size-cells = <0>;
- compatible = "lantiq,xrx200-gswip";
- reg = < 0xe108000 0x3100 /* switch */
- 0xe10b100 0xd8 /* mdio */
- 0xe10b1d8 0x130 /* mii */
- >;
- dsa,member = <0 0>;
-
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-
- port@0 {
- reg = <0>;
- label = "lan3";
- phy-mode = "rgmii";
- phy-handle = <&phy0>;
- };
-
- port@1 {
- reg = <1>;
- label = "lan4";
- phy-mode = "rgmii";
- phy-handle = <&phy1>;
- };
-
- port@2 {
- reg = <2>;
- label = "lan2";
- phy-mode = "internal";
- phy-handle = <&phy11>;
- };
-
- port@4 {
- reg = <4>;
- label = "lan1";
- phy-mode = "internal";
- phy-handle = <&phy13>;
- };
-
- port@5 {
- reg = <5>;
- label = "wan";
- phy-mode = "rgmii";
- phy-handle = <&phy5>;
- };
-
- port@6 {
- reg = <0x6>;
- ethernet = <&eth0>;
- };
- };
-
- mdio {
- #address-cells = <1>;
- #size-cells = <0>;
- compatible = "lantiq,xrx200-mdio";
- reg = <0>;
-
- phy0: ethernet-phy@0 {
- reg = <0x0>;
- };
- phy1: ethernet-phy@1 {
- reg = <0x1>;
- };
- phy5: ethernet-phy@5 {
- reg = <0x5>;
- };
- phy11: ethernet-phy@11 {
- reg = <0x11>;
- };
- phy13: ethernet-phy@13 {
- reg = <0x13>;
- };
- };
-
- gphy-fw {
- compatible = "lantiq,xrx200-gphy-fw", "lantiq,gphy-fw";
- lantiq,rcu = <&rcu0>;
- #address-cells = <1>;
- #size-cells = <0>;
-
- gphy@20 {
- reg = <0x20>;
-
- resets = <&reset0 31 30>;
- reset-names = "gphy";
- };
-
- gphy@68 {
- reg = <0x68>;
-
- resets = <&reset0 29 28>;
- reset-names = "gphy";
- };
- };
-};
diff --git a/MAINTAINERS b/MAINTAINERS
index cd3277a98cfe..ca1050f6691b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12449,6 +12449,7 @@ LANTIQ / INTEL Ethernet drivers
M: Hauke Mehrtens <[email protected]>
L: [email protected]
S: Maintained
+F: Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
F: drivers/net/dsa/lantiq_gswip.c
F: drivers/net/dsa/lantiq_pce.h
F: drivers/net/ethernet/lantiq_xrx200.c
--
2.39.2


2024-06-11 14:05:47

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 03/12] net: dsa: lantiq_gswip: add terminating \n where missing

Some dev_err are missing the terminating \n. Let's add that.

Suggested-by: Vladimir Oltean <[email protected]>
Signed-off-by: Martin Schiller <[email protected]>
Reviewed-by: Andrew Lunn <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index b9c7076ce32f..fe64baf0d7f1 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -836,7 +836,7 @@ static int gswip_setup(struct dsa_switch *ds)

err = gswip_pce_load_microcode(priv);
if (err) {
- dev_err(priv->dev, "writing PCE microcode failed, %i", err);
+ dev_err(priv->dev, "writing PCE microcode failed, %i\n", err);
return err;
}

@@ -1792,7 +1792,7 @@ static u32 gswip_bcm_ram_entry_read(struct gswip_priv *priv, u32 table,
err = gswip_switch_r_timeout(priv, GSWIP_BM_RAM_CTRL,
GSWIP_BM_RAM_CTRL_BAS);
if (err) {
- dev_err(priv->dev, "timeout while reading table: %u, index: %u",
+ dev_err(priv->dev, "timeout while reading table: %u, index: %u\n",
table, index);
return 0;
}
@@ -2021,7 +2021,7 @@ static void gswip_gphy_fw_remove(struct gswip_priv *priv,

ret = regmap_write(priv->rcu_regmap, gphy_fw->fw_addr_offset, 0);
if (ret)
- dev_err(priv->dev, "can not reset GPHY FW pointer");
+ dev_err(priv->dev, "can not reset GPHY FW pointer\n");

clk_disable_unprepare(gphy_fw->clk_gate);

@@ -2050,7 +2050,7 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv,
priv->gphy_fw_name_cfg = &xrx200a2x_gphy_data;
break;
default:
- dev_err(dev, "unknown GSWIP version: 0x%x", version);
+ dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
return -ENOENT;
}
}
@@ -2060,7 +2060,7 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv,
priv->gphy_fw_name_cfg = match->data;

if (!priv->gphy_fw_name_cfg) {
- dev_err(dev, "GPHY compatible type not supported");
+ dev_err(dev, "GPHY compatible type not supported\n");
return -ENOENT;
}

@@ -2163,7 +2163,7 @@ static int gswip_probe(struct platform_device *pdev)
return -EINVAL;
break;
default:
- dev_err(dev, "unknown GSWIP version: 0x%x", version);
+ dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
return -ENOENT;
}

@@ -2191,7 +2191,7 @@ static int gswip_probe(struct platform_device *pdev)
goto gphy_fw_remove;
}
if (!dsa_is_cpu_port(priv->ds, priv->hw_info->cpu_port)) {
- dev_err(dev, "wrong CPU port defined, HW only supports port: %i",
+ dev_err(dev, "wrong CPU port defined, HW only supports port: %i\n",
priv->hw_info->cpu_port);
err = -EINVAL;
goto disable_switch;
--
2.39.2


2024-06-11 14:11:05

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 04/12] net: dsa: lantiq_gswip: Use dev_err_probe where appropriate

From: Martin Blumenstingl <[email protected]>

dev_err_probe() can be used to simplify the existing code. Also it means
we get rid of the following warning which is seen whenever the PMAC
(Ethernet controller which connects to GSWIP's CPU port) has not been
probed yet:
gswip 1e108000.switch: dsa switch register failed: -517

Signed-off-by: Martin Blumenstingl <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 53 ++++++++++++++++------------------
1 file changed, 25 insertions(+), 28 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index fe64baf0d7f1..37cc0247dc78 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -1931,11 +1931,9 @@ static int gswip_gphy_fw_load(struct gswip_priv *priv, struct gswip_gphy_fw *gph
msleep(200);

ret = request_firmware(&fw, gphy_fw->fw_name, dev);
- if (ret) {
- dev_err(dev, "failed to load firmware: %s, error: %i\n",
- gphy_fw->fw_name, ret);
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to load firmware: %s\n",
+ gphy_fw->fw_name);

/* GPHY cores need the firmware code in a persistent and contiguous
* memory area with a 16 kB boundary aligned start address.
@@ -1948,9 +1946,9 @@ static int gswip_gphy_fw_load(struct gswip_priv *priv, struct gswip_gphy_fw *gph
dev_addr = ALIGN(dma_addr, XRX200_GPHY_FW_ALIGN);
memcpy(fw_addr, fw->data, fw->size);
} else {
- dev_err(dev, "failed to alloc firmware memory\n");
release_firmware(fw);
- return -ENOMEM;
+ return dev_err_probe(dev, -ENOMEM,
+ "failed to alloc firmware memory\n");
}

release_firmware(fw);
@@ -1977,8 +1975,8 @@ static int gswip_gphy_fw_probe(struct gswip_priv *priv,

gphy_fw->clk_gate = devm_clk_get(dev, gphyname);
if (IS_ERR(gphy_fw->clk_gate)) {
- dev_err(dev, "Failed to lookup gate clock\n");
- return PTR_ERR(gphy_fw->clk_gate);
+ return dev_err_probe(dev, PTR_ERR(gphy_fw->clk_gate),
+ "Failed to lookup gate clock\n");
}

ret = of_property_read_u32(gphy_fw_np, "reg", &gphy_fw->fw_addr_offset);
@@ -1998,8 +1996,8 @@ static int gswip_gphy_fw_probe(struct gswip_priv *priv,
gphy_fw->fw_name = priv->gphy_fw_name_cfg->ge_firmware_name;
break;
default:
- dev_err(dev, "Unknown GPHY mode %d\n", gphy_mode);
- return -EINVAL;
+ return dev_err_probe(dev, -EINVAL, "Unknown GPHY mode %d\n",
+ gphy_mode);
}

gphy_fw->reset = of_reset_control_array_get_exclusive(gphy_fw_np);
@@ -2050,8 +2048,9 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv,
priv->gphy_fw_name_cfg = &xrx200a2x_gphy_data;
break;
default:
- dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
- return -ENOENT;
+ return dev_err_probe(dev, -ENOENT,
+ "unknown GSWIP version: 0x%x\n",
+ version);
}
}

@@ -2059,10 +2058,9 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv,
if (match && match->data)
priv->gphy_fw_name_cfg = match->data;

- if (!priv->gphy_fw_name_cfg) {
- dev_err(dev, "GPHY compatible type not supported\n");
- return -ENOENT;
- }
+ if (!priv->gphy_fw_name_cfg)
+ return dev_err_probe(dev, -ENOENT,
+ "GPHY compatible type not supported\n");

priv->num_gphy_fw = of_get_available_child_count(gphy_fw_list_np);
if (!priv->num_gphy_fw)
@@ -2163,8 +2161,8 @@ static int gswip_probe(struct platform_device *pdev)
return -EINVAL;
break;
default:
- dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
- return -ENOENT;
+ return dev_err_probe(dev, -ENOENT,
+ "unknown GSWIP version: 0x%x\n", version);
}

/* bring up the mdio bus */
@@ -2172,28 +2170,27 @@ static int gswip_probe(struct platform_device *pdev)
if (gphy_fw_np) {
err = gswip_gphy_fw_list(priv, gphy_fw_np, version);
of_node_put(gphy_fw_np);
- if (err) {
- dev_err(dev, "gphy fw probe failed\n");
- return err;
- }
+ if (err)
+ return dev_err_probe(dev, err,
+ "gphy fw probe failed\n");
}

/* bring up the mdio bus */
err = gswip_mdio(priv);
if (err) {
- dev_err(dev, "mdio probe failed\n");
+ dev_err_probe(dev, err, "mdio probe failed\n");
goto gphy_fw_remove;
}

err = dsa_register_switch(priv->ds);
if (err) {
- dev_err(dev, "dsa switch register failed: %i\n", err);
+ dev_err_probe(dev, err, "dsa switch registration failed\n");
goto gphy_fw_remove;
}
if (!dsa_is_cpu_port(priv->ds, priv->hw_info->cpu_port)) {
- dev_err(dev, "wrong CPU port defined, HW only supports port: %i\n",
- priv->hw_info->cpu_port);
- err = -EINVAL;
+ err = dev_err_probe(dev, -EINVAL,
+ "wrong CPU port defined, HW only supports port: %i\n",
+ priv->hw_info->cpu_port);
goto disable_switch;
}

--
2.39.2


2024-06-11 14:12:40

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 07/12] net: dsa: lantiq_gswip: Use dsa_is_cpu_port() in gswip_port_change_mtu()

From: Martin Blumenstingl <[email protected]>

Make the check for the CPU port in gswip_port_change_mtu() consistent
with other areas of the driver by using dsa_is_cpu_port().

Signed-off-by: Martin Blumenstingl <[email protected]>
Reviewed-by: Vladimir Oltean <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index 8ec329d0c136..58c069f964dd 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -1464,12 +1464,11 @@ static int gswip_port_max_mtu(struct dsa_switch *ds, int port)
static int gswip_port_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
{
struct gswip_priv *priv = ds->priv;
- int cpu_port = priv->hw_info->cpu_port;

/* CPU port always has maximum mtu of user ports, so use it to set
* switch frame size, including 8 byte special header.
*/
- if (port == cpu_port) {
+ if (dsa_is_cpu_port(ds, port)) {
new_mtu += 8;
gswip_switch_w(priv, VLAN_ETH_HLEN + new_mtu + ETH_FCS_LEN,
GSWIP_MAC_FLEN);
--
2.39.2


2024-06-11 14:23:46

by Martin Schiller

[permalink] [raw]
Subject: [PATCH net-next v5 09/12] net: dsa: lantiq_gswip: Consistently use macros for the mac bridge table

From: Martin Blumenstingl <[email protected]>

Only bits [5:0] in mac_bridge.key[3] are reserved for the FID.
Also, for dynamic (learned) entries, bits [7:4] in mac_bridge.val[0]
represents the port.

Introduce new macros GSWIP_TABLE_MAC_BRIDGE_KEY3_FID and
GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT macro and use it throughout the driver.
Also rename and update GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC to use the
BIT() macro. This makes the driver code easier to understand.

Signed-off-by: Martin Blumenstingl <[email protected]>
Signed-off-by: Martin Schiller <[email protected]>
Acked-by: Hauke Mehrtens <[email protected]>
---
drivers/net/dsa/lantiq_gswip.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c
index 525a62a21601..cd88b00cfdc1 100644
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
@@ -236,7 +236,9 @@
#define GSWIP_TABLE_ACTIVE_VLAN 0x01
#define GSWIP_TABLE_VLAN_MAPPING 0x02
#define GSWIP_TABLE_MAC_BRIDGE 0x0b
-#define GSWIP_TABLE_MAC_BRIDGE_STATIC 0x01 /* Static not, aging entry */
+#define GSWIP_TABLE_MAC_BRIDGE_KEY3_FID GENMASK(5, 0) /* Filtering identifier */
+#define GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT GENMASK(7, 4) /* Port on learned entries */
+#define GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC BIT(0) /* Static, non-aging entry */

#define XRX200_GPHY_FW_ALIGN (16 * 1024)

@@ -1304,10 +1306,11 @@ static void gswip_port_fast_age(struct dsa_switch *ds, int port)
if (!mac_bridge.valid)
continue;

- if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_STATIC)
+ if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC)
continue;

- if (((mac_bridge.val[0] & GENMASK(7, 4)) >> 4) != port)
+ if (port != FIELD_GET(GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT,
+ mac_bridge.val[0]))
continue;

mac_bridge.valid = false;
@@ -1382,9 +1385,9 @@ static int gswip_port_fdb(struct dsa_switch *ds, int port,
mac_bridge.key[0] = addr[5] | (addr[4] << 8);
mac_bridge.key[1] = addr[3] | (addr[2] << 8);
mac_bridge.key[2] = addr[1] | (addr[0] << 8);
- mac_bridge.key[3] = fid;
+ mac_bridge.key[3] = FIELD_PREP(GSWIP_TABLE_MAC_BRIDGE_KEY3_FID, fid);
mac_bridge.val[0] = add ? BIT(port) : 0; /* port map */
- mac_bridge.val[1] = GSWIP_TABLE_MAC_BRIDGE_STATIC;
+ mac_bridge.val[1] = GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC;
mac_bridge.valid = add;

err = gswip_pce_table_entry_write(priv, &mac_bridge);
@@ -1438,14 +1441,15 @@ static int gswip_port_fdb_dump(struct dsa_switch *ds, int port,
addr[2] = (mac_bridge.key[1] >> 8) & 0xff;
addr[1] = mac_bridge.key[2] & 0xff;
addr[0] = (mac_bridge.key[2] >> 8) & 0xff;
- if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_STATIC) {
+ if (mac_bridge.val[1] & GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC) {
if (mac_bridge.val[0] & BIT(port)) {
err = cb(addr, 0, true, data);
if (err)
return err;
}
} else {
- if (((mac_bridge.val[0] & GENMASK(7, 4)) >> 4) == port) {
+ if (port == FIELD_GET(GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT,
+ mac_bridge.val[0])) {
err = cb(addr, 0, false, data);
if (err)
return err;
--
2.39.2


2024-06-11 20:30:58

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH net-next v5 01/12] dt-bindings: net: dsa: lantiq,gswip: convert to YAML schema


On Tue, 11 Jun 2024 15:54:23 +0200, Martin Schiller wrote:
> Convert the lantiq,gswip bindings to YAML format.
>
> Also add this new file to the MAINTAINERS file.
>
> Furthermore, the CPU port has to specify a phy-mode and either a phy or
> a fixed-link. Since GSWIP is connected using a SoC internal protocol
> there's no PHY involved. Add phy-mode = "internal" and a fixed-link to
> the example code to describe the communication between the PMAC
> (Ethernet controller) and GSWIP switch.
>
> Signed-off-by: Martin Schiller <[email protected]>
> ---
> .../bindings/net/dsa/lantiq,gswip.yaml | 202 ++++++++++++++++++
> .../bindings/net/dsa/lantiq-gswip.txt | 146 -------------
> MAINTAINERS | 1 +
> 3 files changed, 203 insertions(+), 146 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq,gswip.yaml
> delete mode 100644 Documentation/devicetree/bindings/net/dsa/lantiq-gswip.txt
>

Reviewed-by: Rob Herring (Arm) <[email protected]>


2024-06-12 02:00:55

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH net-next v5 00/12] net: dsa: lantiq_gswip: code improvements

On Tue, 11 Jun 2024 15:54:22 +0200 Martin Schiller wrote:
> This patchset for the lantiq_gswip driver is a collection of minor fixes
> and coding improvements by Martin Blumenstingl without any real changes
> in the actual functionality.

For future reference:
https://www.kernel.org/doc/html/next/process/maintainer-netdev.html#tl-dr

2024-06-12 12:51:13

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 00/12] net: dsa: lantiq_gswip: code improvements

On 2024-06-12 04:00, Jakub Kicinski wrote:
> On Tue, 11 Jun 2024 15:54:22 +0200 Martin Schiller wrote:
>> This patchset for the lantiq_gswip driver is a collection of minor
>> fixes
>> and coding improvements by Martin Blumenstingl without any real
>> changes
>> in the actual functionality.
>
> For future reference:
> https://www.kernel.org/doc/html/next/process/maintainer-netdev.html#tl-dr

I think you refer to "don’t repost your patches within one 24h period".

Sorry for that.

2024-06-13 11:51:19

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 12/12] net: dsa: lantiq_gswip: Improve error message in gswip_port_fdb()

On Tue, Jun 11, 2024 at 03:54:34PM +0200, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> Print that no FID is found for bridge %s instead of the incorrect
> message that the port is not part of a bridge.
>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---

This needs your Signed-off-by tag as well. Anyway, if there is no other
reason to resend, maybe you can post it here as a reply and the
maintainers can pick it up while applying.

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 11:52:05

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 03/12] net: dsa: lantiq_gswip: add terminating \n where missing

On Tue, Jun 11, 2024 at 03:54:25PM +0200, Martin Schiller wrote:
> Some dev_err are missing the terminating \n. Let's add that.
>
> Suggested-by: Vladimir Oltean <[email protected]>
> Signed-off-by: Martin Schiller <[email protected]>
> Reviewed-by: Andrew Lunn <[email protected]>
> ---

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 11:53:46

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 01/12] dt-bindings: net: dsa: lantiq,gswip: convert to YAML schema

On Tue, Jun 11, 2024 at 03:54:23PM +0200, Martin Schiller wrote:
> Convert the lantiq,gswip bindings to YAML format.
>
> Also add this new file to the MAINTAINERS file.
>
> Furthermore, the CPU port has to specify a phy-mode and either a phy or
> a fixed-link. Since GSWIP is connected using a SoC internal protocol
> there's no PHY involved. Add phy-mode = "internal" and a fixed-link to
> the example code to describe the communication between the PMAC
> (Ethernet controller) and GSWIP switch.
>
> Signed-off-by: Martin Schiller <[email protected]>
> ---

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 11:53:48

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 02/12] net: dsa: lantiq_gswip: Only allow phy-mode = "internal" on the CPU port

On Tue, Jun 11, 2024 at 03:54:24PM +0200, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> Add the CPU port to gswip_xrx200_phylink_get_caps() and
> gswip_xrx300_phylink_get_caps(). It connects through a SoC-internal bus,
> so the only allowed phy-mode is PHY_INTERFACE_MODE_INTERNAL.
>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Reviewed-by: Vladimir Oltean <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---

Similar thing with the sign off here, and there are a few other patches
on which I'm not going to comment on individually.

2024-06-13 11:57:40

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 04/12] net: dsa: lantiq_gswip: Use dev_err_probe where appropriate

On Tue, Jun 11, 2024 at 03:54:26PM +0200, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> dev_err_probe() can be used to simplify the existing code. Also it means
> we get rid of the following warning which is seen whenever the PMAC
> (Ethernet controller which connects to GSWIP's CPU port) has not been
> probed yet:
> gswip 1e108000.switch: dsa switch register failed: -517
>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---

Needs your sign off.

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 11:59:13

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 05/12] net: dsa: lantiq_gswip: Don't manually call gswip_port_enable()

On Tue, Jun 11, 2024 at 03:54:27PM +0200, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> We don't need to manually call gswip_port_enable() from within
> gswip_setup() for the CPU port. DSA does this automatically for us.
>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---

Needs your sign off.

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 12:02:48

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 06/12] net: dsa: lantiq_gswip: do also enable or disable cpu port

On Tue, Jun 11, 2024 at 03:54:28PM +0200, Martin Schiller wrote:
> Before commit 74be4babe72f ("net: dsa: do not enable or disable non user
> ports"), gswip_port_enable/disable() were also executed for the cpu port
> in gswip_setup() which disabled the cpu port during initialization.
>
> Let's restore this by removing the dsa_is_user_port checks. Also, let's
> clean up the gswip_port_enable() function so that we only have to check
> for the cpu port once. The operation reordering done here is safe.
>
> Signed-off-by: Martin Schiller <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 12:05:56

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 09/12] net: dsa: lantiq_gswip: Consistently use macros for the mac bridge table

On Tue, Jun 11, 2024 at 03:54:31PM +0200, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> Only bits [5:0] in mac_bridge.key[3] are reserved for the FID.
> Also, for dynamic (learned) entries, bits [7:4] in mac_bridge.val[0]
> represents the port.
>
> Introduce new macros GSWIP_TABLE_MAC_BRIDGE_KEY3_FID and
> GSWIP_TABLE_MAC_BRIDGE_VAL0_PORT macro and use it throughout the driver.
> Also rename and update GSWIP_TABLE_MAC_BRIDGE_VAL1_STATIC to use the
> BIT() macro. This makes the driver code easier to understand.
>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Signed-off-by: Martin Schiller <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 12:06:37

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 10/12] net: dsa: lantiq_gswip: Remove dead code from gswip_add_single_port_br()

On Tue, Jun 11, 2024 at 03:54:32PM +0200, Martin Schiller wrote:
> The port validation in gswip_add_single_port_br() is superfluous and
> can be omitted.
>
> Suggested-by: Vladimir Oltean <[email protected]>
> Signed-off-by: Martin Schiller <[email protected]>
> ---

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 12:28:15

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net-next v5 11/12] net: dsa: lantiq_gswip: Update comments in gswip_port_vlan_filtering()

On Tue, Jun 11, 2024 at 03:54:33PM +0200, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> Update the comments in gswip_port_vlan_filtering() so it's clear that
> there are two separate cases, one for "tag based VLAN" and another one
> for "port based VLAN".
>
> Suggested-by: Martin Schiller <[email protected]>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---

Needs your sign off.

Reviewed-by: Vladimir Oltean <[email protected]>

2024-06-13 12:32:30

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 12/12] net: dsa: lantiq_gswip: Improve error message in gswip_port_fdb()

On 2024-06-13 13:48, Vladimir Oltean wrote:
> On Tue, Jun 11, 2024 at 03:54:34PM +0200, Martin Schiller wrote:
>> From: Martin Blumenstingl <[email protected]>
>>
>> Print that no FID is found for bridge %s instead of the incorrect
>> message that the port is not part of a bridge.
>>
>> Signed-off-by: Martin Blumenstingl
>> <[email protected]>
>> Acked-by: Hauke Mehrtens <[email protected]>
>> ---
>
> This needs your Signed-off-by tag as well. Anyway, if there is no other
> reason to resend, maybe you can post it here as a reply and the
> maintainers can pick it up while applying.
>
> Reviewed-by: Vladimir Oltean <[email protected]>

Thank you for pointing this out to me.

Signed-off-by: Martin Schiller <[email protected]>

2024-06-13 12:32:42

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 02/12] net: dsa: lantiq_gswip: Only allow phy-mode = "internal" on the CPU port

On 2024-06-13 13:50, Vladimir Oltean wrote:
> On Tue, Jun 11, 2024 at 03:54:24PM +0200, Martin Schiller wrote:
>> From: Martin Blumenstingl <[email protected]>
>>
>> Add the CPU port to gswip_xrx200_phylink_get_caps() and
>> gswip_xrx300_phylink_get_caps(). It connects through a SoC-internal
>> bus,
>> so the only allowed phy-mode is PHY_INTERFACE_MODE_INTERNAL.
>>
>> Signed-off-by: Martin Blumenstingl
>> <[email protected]>
>> Reviewed-by: Vladimir Oltean <[email protected]>
>> Acked-by: Hauke Mehrtens <[email protected]>
>> ---
>
> Similar thing with the sign off here, and there are a few other patches
> on which I'm not going to comment on individually.

Signed-off-by: Martin Schiller <[email protected]>

2024-06-13 12:33:12

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 04/12] net: dsa: lantiq_gswip: Use dev_err_probe where appropriate

On 2024-06-13 13:51, Vladimir Oltean wrote:
> On Tue, Jun 11, 2024 at 03:54:26PM +0200, Martin Schiller wrote:
>> From: Martin Blumenstingl <[email protected]>
>>
>> dev_err_probe() can be used to simplify the existing code. Also it
>> means
>> we get rid of the following warning which is seen whenever the PMAC
>> (Ethernet controller which connects to GSWIP's CPU port) has not been
>> probed yet:
>> gswip 1e108000.switch: dsa switch register failed: -517
>>
>> Signed-off-by: Martin Blumenstingl
>> <[email protected]>
>> Acked-by: Hauke Mehrtens <[email protected]>
>> ---
>
> Needs your sign off.
>
> Reviewed-by: Vladimir Oltean <[email protected]>

Signed-off-by: Martin Schiller <[email protected]>

2024-06-13 12:34:04

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 05/12] net: dsa: lantiq_gswip: Don't manually call gswip_port_enable()

On 2024-06-13 13:52, Vladimir Oltean wrote:
> On Tue, Jun 11, 2024 at 03:54:27PM +0200, Martin Schiller wrote:
>> From: Martin Blumenstingl <[email protected]>
>>
>> We don't need to manually call gswip_port_enable() from within
>> gswip_setup() for the CPU port. DSA does this automatically for us.
>>
>> Signed-off-by: Martin Blumenstingl
>> <[email protected]>
>> Acked-by: Hauke Mehrtens <[email protected]>
>> ---
>
> Needs your sign off.
>
> Reviewed-by: Vladimir Oltean <[email protected]>

Signed-off-by: Martin Schiller <[email protected]>

2024-06-13 12:35:02

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 07/12] net: dsa: lantiq_gswip: Use dsa_is_cpu_port() in gswip_port_change_mtu()

On 2024-06-11 15:54, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> Make the check for the CPU port in gswip_port_change_mtu() consistent
> with other areas of the driver by using dsa_is_cpu_port().
>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Reviewed-by: Vladimir Oltean <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---
> drivers/net/dsa/lantiq_gswip.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/net/dsa/lantiq_gswip.c
> b/drivers/net/dsa/lantiq_gswip.c
> index 8ec329d0c136..58c069f964dd 100644
> --- a/drivers/net/dsa/lantiq_gswip.c
> +++ b/drivers/net/dsa/lantiq_gswip.c
> @@ -1464,12 +1464,11 @@ static int gswip_port_max_mtu(struct
> dsa_switch *ds, int port)
> static int gswip_port_change_mtu(struct dsa_switch *ds, int port, int
> new_mtu)
> {
> struct gswip_priv *priv = ds->priv;
> - int cpu_port = priv->hw_info->cpu_port;
>
> /* CPU port always has maximum mtu of user ports, so use it to set
> * switch frame size, including 8 byte special header.
> */
> - if (port == cpu_port) {
> + if (dsa_is_cpu_port(ds, port)) {
> new_mtu += 8;
> gswip_switch_w(priv, VLAN_ETH_HLEN + new_mtu + ETH_FCS_LEN,
> GSWIP_MAC_FLEN);

Signed-off-by: Martin Schiller <[email protected]>

2024-06-13 12:36:17

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 08/12] net: dsa: lantiq_gswip: Change literal 6 to ETH_ALEN

On 2024-06-11 15:54, Martin Schiller wrote:
> From: Martin Blumenstingl <[email protected]>
>
> The addr variable in gswip_port_fdb_dump() stores a mac address. Use
> ETH_ALEN to make this consistent across other drivers.
>
> Signed-off-by: Martin Blumenstingl <[email protected]>
> Reviewed-by: Vladimir Oltean <[email protected]>
> Acked-by: Hauke Mehrtens <[email protected]>
> ---
> drivers/net/dsa/lantiq_gswip.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/dsa/lantiq_gswip.c
> b/drivers/net/dsa/lantiq_gswip.c
> index 58c069f964dd..525a62a21601 100644
> --- a/drivers/net/dsa/lantiq_gswip.c
> +++ b/drivers/net/dsa/lantiq_gswip.c
> @@ -1413,7 +1413,7 @@ static int gswip_port_fdb_dump(struct dsa_switch
> *ds, int port,
> {
> struct gswip_priv *priv = ds->priv;
> struct gswip_pce_table_entry mac_bridge = {0,};
> - unsigned char addr[6];
> + unsigned char addr[ETH_ALEN];
> int i;
> int err;

Signed-off-by: Martin Schiller <[email protected]>

2024-06-13 12:38:34

by Martin Schiller

[permalink] [raw]
Subject: Re: [PATCH net-next v5 11/12] net: dsa: lantiq_gswip: Update comments in gswip_port_vlan_filtering()

On 2024-06-13 14:02, Vladimir Oltean wrote:
> On Tue, Jun 11, 2024 at 03:54:33PM +0200, Martin Schiller wrote:
>> From: Martin Blumenstingl <[email protected]>
>>
>> Update the comments in gswip_port_vlan_filtering() so it's clear that
>> there are two separate cases, one for "tag based VLAN" and another one
>> for "port based VLAN".
>>
>> Suggested-by: Martin Schiller <[email protected]>
>> Signed-off-by: Martin Blumenstingl
>> <[email protected]>
>> Acked-by: Hauke Mehrtens <[email protected]>
>> ---
>
> Needs your sign off.
>
> Reviewed-by: Vladimir Oltean <[email protected]>

Signed-off-by: Martin Schiller <[email protected]>

2024-06-14 00:21:20

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH net-next v5 00/12] net: dsa: lantiq_gswip: code improvements

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <[email protected]>:

On Tue, 11 Jun 2024 15:54:22 +0200 you wrote:
> This patchset for the lantiq_gswip driver is a collection of minor fixes
> and coding improvements by Martin Blumenstingl without any real changes
> in the actual functionality.
>
> === Changelog ===
> From v4:
> - merge dt-bindings patches to satisfy 'make dt_bindings_check' and add
> some improvements suggested by Rob Herring
>
> [...]

Here is the summary with links:
- [net-next,v5,01/12] dt-bindings: net: dsa: lantiq,gswip: convert to YAML schema
https://git.kernel.org/netdev/net-next/c/c7f75954212b
- [net-next,v5,02/12] net: dsa: lantiq_gswip: Only allow phy-mode = "internal" on the CPU port
https://git.kernel.org/netdev/net-next/c/b98f122ebdac
- [net-next,v5,03/12] net: dsa: lantiq_gswip: add terminating \n where missing
https://git.kernel.org/netdev/net-next/c/dd6d364e1895
- [net-next,v5,04/12] net: dsa: lantiq_gswip: Use dev_err_probe where appropriate
https://git.kernel.org/netdev/net-next/c/1763b155da02
- [net-next,v5,05/12] net: dsa: lantiq_gswip: Don't manually call gswip_port_enable()
https://git.kernel.org/netdev/net-next/c/f5ebf9ab6094
- [net-next,v5,06/12] net: dsa: lantiq_gswip: do also enable or disable cpu port
https://git.kernel.org/netdev/net-next/c/86b9ea6412af
- [net-next,v5,07/12] net: dsa: lantiq_gswip: Use dsa_is_cpu_port() in gswip_port_change_mtu()
https://git.kernel.org/netdev/net-next/c/7168ec1b0669
- [net-next,v5,08/12] net: dsa: lantiq_gswip: Change literal 6 to ETH_ALEN
https://git.kernel.org/netdev/net-next/c/c927b6e47b5c
- [net-next,v5,09/12] net: dsa: lantiq_gswip: Consistently use macros for the mac bridge table
https://git.kernel.org/netdev/net-next/c/e6c34597f89a
- [net-next,v5,10/12] net: dsa: lantiq_gswip: Remove dead code from gswip_add_single_port_br()
https://git.kernel.org/netdev/net-next/c/b068706b7831
- [net-next,v5,11/12] net: dsa: lantiq_gswip: Update comments in gswip_port_vlan_filtering()
https://git.kernel.org/netdev/net-next/c/e19fbe3996aa
- [net-next,v5,12/12] net: dsa: lantiq_gswip: Improve error message in gswip_port_fdb()
https://git.kernel.org/netdev/net-next/c/3b0a95ed7782

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html