net: dsa: mv88e6xxx: add IEEE and IP mapping ops
All Marvell switch families except 88E6390 have direct registers in Global 1 for IEEE and IP priorities override mapping. The 88E6390 uses indirect tables instead. Add .ieee_pri_map and .ip_pri_map ops to distinct that and call them from a mv88e6xxx_pri_setup helper. Only non-6390 are concerned ATM. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
408d2debb0
commit
93e18d61bf
@@ -241,6 +241,64 @@ int mv88e6185_g1_ppu_disable(struct mv88e6xxx_chip *chip)
|
||||
return mv88e6185_g1_wait_ppu_disabled(chip);
|
||||
}
|
||||
|
||||
/* Offset 0x10: IP-PRI Mapping Register 0
|
||||
* Offset 0x11: IP-PRI Mapping Register 1
|
||||
* Offset 0x12: IP-PRI Mapping Register 2
|
||||
* Offset 0x13: IP-PRI Mapping Register 3
|
||||
* Offset 0x14: IP-PRI Mapping Register 4
|
||||
* Offset 0x15: IP-PRI Mapping Register 5
|
||||
* Offset 0x16: IP-PRI Mapping Register 6
|
||||
* Offset 0x17: IP-PRI Mapping Register 7
|
||||
*/
|
||||
|
||||
int mv88e6085_g1_ip_pri_map(struct mv88e6xxx_chip *chip)
|
||||
{
|
||||
int err;
|
||||
|
||||
/* Reset the IP TOS/DiffServ/Traffic priorities to defaults */
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_0, 0x0000);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_1, 0x0000);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_2, 0x5555);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_3, 0x5555);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_4, 0xaaaa);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_5, 0xaaaa);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_6, 0xffff);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IP_PRI_7, 0xffff);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Offset 0x18: IEEE-PRI Register */
|
||||
|
||||
int mv88e6085_g1_ieee_pri_map(struct mv88e6xxx_chip *chip)
|
||||
{
|
||||
/* Reset the IEEE Tag priorities to defaults */
|
||||
return mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IEEE_PRI, 0xfa41);
|
||||
}
|
||||
|
||||
/* Offset 0x1a: Monitor Control */
|
||||
/* Offset 0x1a: Monitor & MGMT Control on some devices */
|
||||
|
||||
|
Reference in New Issue
Block a user