Re: [PATCH net-next 0/4] net: dsa: b53: Clean up CPU/IMP ports
From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-09-17 12:21:25
quoted
That DSA_PORT_TYPE_UNUSED would probably require investigating DSA & b53 behaviour *and* discussing it with DSA maintainer to make sure we don't abuse that.How absent are these ports in hardware? For DSA_PORT_TYPE_UNUSED we do register a devlink port, but if those ports are really not present in hardware, I'm thinking maybe the easiest way would be to supply a ds->disabled_port_mask before dsa_register_switch(), and DSA will simply skip those ports when allocating the dp, the devlink_port etc. So you will literally have nothing for them.
The basic idea seems O.K, we just need to be careful.
We have code like:
static inline bool dsa_is_dsa_port(struct dsa_switch *ds, int p)
{
return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_DSA;
}
static inline bool dsa_is_user_port(struct dsa_switch *ds, int p)
{
return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_USER;
}
dsa_to_port(ds, p) will return NULL, and then bad things will happen.
Maybe it would be safer to add DSA_PORT_TYPE_PHANTOM and do allocate
the dp?
Andrew