net: devlink: Add unused port flavour
Not all ports of a switch need to be used, particularly in embedded systems. Add a port flavour for ports which physically exist in the switch, but are not connected to the front panel etc, and so are unused. By having unused ports present in devlink, it gives a more accurate representation of the hardware. It also allows regions to be associated to such ports, so allowing, for example, to determine unused ports are correctly powered off, or to compare probable reset defaults of unused ports to used ports experiences issues. Actually registering unused ports and setting the flavour to unused is optional. The DSA core will register all such switch ports, but such ports are expected to be limited in number. Bigger ASICs may decide not to list unused ports. v2: Expand the description about why it is useful Reviewed-by: Vladimir Oltean <olteanv@gmail.com> Tested-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
321e921daa
commit
cf1166349c
|
@ -197,6 +197,9 @@ enum devlink_port_flavour {
|
|||
* port that faces the PCI VF.
|
||||
*/
|
||||
DEVLINK_PORT_FLAVOUR_VIRTUAL, /* Any virtual port facing the user. */
|
||||
DEVLINK_PORT_FLAVOUR_UNUSED, /* Port which exists in the switch, but
|
||||
* is not used in any way.
|
||||
*/
|
||||
};
|
||||
|
||||
enum devlink_param_cmode {
|
||||
|
|
|
@ -7612,7 +7612,8 @@ static bool devlink_port_type_should_warn(struct devlink_port *devlink_port)
|
|||
{
|
||||
/* Ignore CPU and DSA flavours. */
|
||||
return devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_CPU &&
|
||||
devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_DSA;
|
||||
devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_DSA &&
|
||||
devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_UNUSED;
|
||||
}
|
||||
|
||||
#define DEVLINK_PORT_TYPE_WARN_TIMEOUT (HZ * 3600)
|
||||
|
@ -7897,6 +7898,7 @@ static int __devlink_port_phys_port_name_get(struct devlink_port *devlink_port,
|
|||
break;
|
||||
case DEVLINK_PORT_FLAVOUR_CPU:
|
||||
case DEVLINK_PORT_FLAVOUR_DSA:
|
||||
case DEVLINK_PORT_FLAVOUR_UNUSED:
|
||||
/* As CPU and DSA ports do not have a netdevice associated
|
||||
* case should not ever happen.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue