dsa: mv88e6xxx: Set DSA mode based on chip abilities
Older devices only support a single DSA frame format, where as newer devices have two. Take this into account when configuring a DSA port. The port needs to be in plain old DSA mode, since this is a DSA link, where as the newer format can be used for the CPU port. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
60045cbfc0
commit
6083ce715f
|
@ -1987,12 +1987,15 @@ static int mv88e6xxx_setup_port(struct dsa_switch *ds, int port)
|
|||
reg |= PORT_CONTROL_EGRESS_ADD_TAG;
|
||||
}
|
||||
}
|
||||
if (mv88e6xxx_6352_family(ds) || mv88e6xxx_6351_family(ds) ||
|
||||
mv88e6xxx_6165_family(ds) || mv88e6xxx_6097_family(ds) ||
|
||||
mv88e6xxx_6095_family(ds) || mv88e6xxx_6065_family(ds) ||
|
||||
mv88e6xxx_6320_family(ds)) {
|
||||
if (dsa_is_dsa_port(ds, port))
|
||||
if (dsa_is_dsa_port(ds, port)) {
|
||||
if (mv88e6xxx_6095_family(ds) || mv88e6xxx_6185_family(ds))
|
||||
reg |= PORT_CONTROL_DSA_TAG;
|
||||
if (mv88e6xxx_6352_family(ds) || mv88e6xxx_6351_family(ds) ||
|
||||
mv88e6xxx_6165_family(ds) || mv88e6xxx_6097_family(ds) ||
|
||||
mv88e6xxx_6320_family(ds)) {
|
||||
reg |= PORT_CONTROL_FRAME_MODE_DSA;
|
||||
}
|
||||
|
||||
if (port == dsa_upstream_port(ds))
|
||||
reg |= PORT_CONTROL_FORWARD_UNKNOWN |
|
||||
PORT_CONTROL_FORWARD_UNKNOWN_MC;
|
||||
|
|
Loading…
Reference in New Issue