net: dsa: introduce dsa_towards_port helper
Add a new helper returning the local port used to reach an arbitrary switch port in the fabric. Its only user at the moment is the dsa_upstream_port helper, which returns the local port reaching the dedicated CPU port, but it will be used in cross-chip FDB operations. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5420683ae3
commit
3b8fac5d90
|
@ -296,20 +296,23 @@ static inline u32 dsa_user_ports(struct dsa_switch *ds)
|
|||
return mask;
|
||||
}
|
||||
|
||||
/* Return the local port used to reach an arbitrary switch port */
|
||||
static inline unsigned int dsa_towards_port(struct dsa_switch *ds, int device,
|
||||
int port)
|
||||
{
|
||||
if (device == ds->index)
|
||||
return port;
|
||||
else
|
||||
return ds->rtable[device];
|
||||
}
|
||||
|
||||
/* Return the local port used to reach the dedicated CPU port */
|
||||
static inline u8 dsa_upstream_port(struct dsa_switch *ds)
|
||||
{
|
||||
struct dsa_switch_tree *dst = ds->dst;
|
||||
struct dsa_port *cpu_dp = dst->cpu_dp;
|
||||
|
||||
/*
|
||||
* If this is the root switch (i.e. the switch that connects
|
||||
* to the CPU), return the cpu port number on this switch.
|
||||
* Else return the (DSA) port number that connects to the
|
||||
* switch that is one hop closer to the cpu.
|
||||
*/
|
||||
if (dst->cpu_dp->ds == ds)
|
||||
return dst->cpu_dp->index;
|
||||
else
|
||||
return ds->rtable[dst->cpu_dp->ds->index];
|
||||
return dsa_towards_port(ds, cpu_dp->ds->index, cpu_dp->index);
|
||||
}
|
||||
|
||||
typedef int dsa_fdb_dump_cb_t(const unsigned char *addr, u16 vid,
|
||||
|
|
Loading…
Reference in New Issue