> >>>         ds = dsa_switch_alloc(&mdiodev->dev, DSA_MAX_PORTS);
> >>>
> >>> It is allocating a switch with 12 ports. However only 4 of them have
> >>> names. So the core only creates slave devices for those 4.
> >>>
> >>> This is a useful test. Real hardware often has unused ports. A WiFi AP
> >>> with a 7 port switch which only uses 6 ports is often seen.
> >>
> >> The following patch should fix this:
> >>
> >>
> >> diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c
> >> index adf50fbc4c13..a06c29ec91f0 100644
> >> --- a/net/dsa/dsa2.c
> >> +++ b/net/dsa/dsa2.c
> >> @@ -262,13 +262,14 @@ static int dsa_port_setup(struct dsa_port *dp)
> >>
> >>         memset(&dp->devlink_port, 0, sizeof(dp->devlink_port));
> >>
> >> +       if (dp->type == DSA_PORT_TYPE_UNUSED)
> >> +               return 0;
> >> +
> >>         err = devlink_port_register(ds->devlink, &dp->devlink_port,
> >> dp->index);
> > 
> > Hi Florian, Jiri
> > 
> > Maybe it is better to add a devlink port type unused?
> 
> The port does not exist on the switch, so it should not even be
> registered IMHO.

Hi Florian

The ports do exist, when you called dsa_switch_alloc() you said the
switch has 12 ports.

       Andrew

Reply via email to