Re: [RFC PATCH v3 net-next 09/10] net: dsa: ocelot: felix: add support for VSC75XX control over SPI
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
Date: 2021-08-15 23:15:09
Also in:
lkml, netdev
On Sun, Aug 15, 2021 at 01:41:49PM -0700, Colin Foster wrote:
I also came across some curious code in Seville where it is callocing a struct phy_device * array instead of struct lynx_pcs *. I'm not sure if that's technically a bug or if the thought is "a pointer array is a pointer array."
I won't comment on that, but a few things I spotted in the patch:
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c b/drivers/net/dsa/ocelot/felix_vsc9959.c index a84129d18007..d0b3f6be360f 100644 --- a/drivers/net/dsa/ocelot/felix_vsc9959.c +++ b/drivers/net/dsa/ocelot/felix_vsc9959.c@@ -1046,7 +1046,7 @@ static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot) int rc; felix->pcs = devm_kcalloc(dev, felix->info->num_ports, - sizeof(struct lynx_pcs *), + sizeof(struct phylink_pcs *), GFP_KERNEL); if (!felix->pcs) { dev_err(dev, "failed to allocate array for PCS PHYs\n");@@ -1095,8 +1095,8 @@ static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot) for (port = 0; port < felix->info->num_ports; port++) { struct ocelot_port *ocelot_port = ocelot->ports[port]; + struct phylink_pcs *phylink; struct mdio_device *pcs; - struct lynx_pcs *lynx;
Normally, "phylink" is used to refer to the main phylink data structure, so I'm not too thrilled to see it getting re-used for the PCS. However, as you have a variable called "pcs" already, I suppose you don't have much choice. That said, it would be nice to have consistent naming through at least a single file, and you do have "pcs" below to refer to this same thing. Maybe using plpcs or ppcs would suffice? Or maybe use the "long name" of phylink_pcs ?
quoted hunk ↗ jump to hunk
if (dsa_is_unused_port(felix->ds, port)) continue;@@ -1108,13 +1108,13 @@ static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot) if (IS_ERR(pcs)) continue; - lynx = lynx_pcs_create(pcs); + phylink = lynx_pcs_create(pcs); if (!lynx) {
I think you want to change this test.
quoted hunk ↗ jump to hunk
mdio_device_free(pcs); continue; } - felix->pcs[port] = lynx; + felix->pcs[port] = phylink; dev_info(dev, "Found PCS at internal MDIO address %d\n", port); }@@ -1128,7 +1128,7 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot) int port; for (port = 0; port < ocelot->num_phys_ports; port++) { - struct lynx_pcs *pcs = felix->pcs[port]; + struct phylink_pcs *pcs = felix->pcs[port]; if (!pcs) continue;diff --git a/drivers/net/dsa/ocelot/seville_vsc9953.c b/drivers/net/dsa/ocelot/seville_vsc9953.c index 540cf5bc9c54..8200cc5dd24d 100644 --- a/drivers/net/dsa/ocelot/seville_vsc9953.c +++ b/drivers/net/dsa/ocelot/seville_vsc9953.c@@ -1007,7 +1007,7 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot) int rc; felix->pcs = devm_kcalloc(dev, felix->info->num_ports, - sizeof(struct phy_device *), + sizeof(struct phylink_pcs *), GFP_KERNEL); if (!felix->pcs) { dev_err(dev, "failed to allocate array for PCS PHYs\n");@@ -1029,8 +1029,8 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot) for (port = 0; port < felix->info->num_ports; port++) { struct ocelot_port *ocelot_port = ocelot->ports[port]; int addr = port + 4; + struct phylink_pcs *phylink; struct mdio_device *pcs; - struct lynx_pcs *lynx; if (dsa_is_unused_port(felix->ds, port)) continue;@@ -1042,13 +1042,13 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot) if (IS_ERR(pcs)) continue; - lynx = lynx_pcs_create(pcs); + phylink = lynx_pcs_create(pcs); if (!lynx) {
Same here. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!