Messages in this thread | | | Date | Tue, 5 Jul 2022 20:12:26 +0200 | From | Horatiu Vultur <> | Subject | Re: [PATCH net v2] net: lan966x: hardcode the number of external ports |
| |
The 07/04/2022 17:36, Michael Walle wrote: > > Instead of counting the child nodes in the device tree, hardcode the > number of ports in the driver itself. The counting won't work at all > if an ethernet port is marked as disabled, e.g. because it is not > connected on the board at all. > > It turns out that the LAN9662 and LAN9668 use the same switching IP > with the same synthesis parameters. The only difference is that the > output ports are not connected. Thus, we can just hardcode the > number of physical ports to 8. > > Fixes: db8bcaad5393 ("net: lan966x: add the basic lan966x driver") > Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Horatiu Vultur <horatiu.vultur@microchip.com>
> --- > changes since v1: > - add fixes tag since the fix is simple > - switch from new specific compatible to "just use 8 for all" > > drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 8 ++------ > drivers/net/ethernet/microchip/lan966x/lan966x_main.h | 1 + > 2 files changed, 3 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c > index 5784c4161e5e..1d6e3b641b2e 100644 > --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c > +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c > @@ -994,7 +994,7 @@ static int lan966x_probe(struct platform_device *pdev) > struct fwnode_handle *ports, *portnp; > struct lan966x *lan966x; > u8 mac_addr[ETH_ALEN]; > - int err, i; > + int err; > > lan966x = devm_kzalloc(&pdev->dev, sizeof(*lan966x), GFP_KERNEL); > if (!lan966x) > @@ -1025,11 +1025,7 @@ static int lan966x_probe(struct platform_device *pdev) > if (err) > return dev_err_probe(&pdev->dev, err, "Reset failed"); > > - i = 0; > - fwnode_for_each_available_child_node(ports, portnp) > - ++i; > - > - lan966x->num_phys_ports = i; > + lan966x->num_phys_ports = NUM_PHYS_PORTS; > lan966x->ports = devm_kcalloc(&pdev->dev, lan966x->num_phys_ports, > sizeof(struct lan966x_port *), > GFP_KERNEL); > diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h > index 3b86ddddc756..2787055c1847 100644 > --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h > +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h > @@ -34,6 +34,7 @@ > /* Reserved amount for (SRC, PRIO) at index 8*SRC + PRIO */ > #define QSYS_Q_RSRV 95 > > +#define NUM_PHYS_PORTS 8 > #define CPU_PORT 8 > > /* Reserved PGIDs */ > -- > 2.30.2 >
-- /Horatiu
| |