lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 26 Mar 2016 21:59:40 -0400 From: Vivien Didelot <vivien.didelot@...oirfairelinux.com> To: netdev@...r.kernel.org Cc: linux-kernel@...r.kernel.org, kernel@...oirfairelinux.com, "David S. Miller" <davem@...emloft.net>, Andrew Lunn <andrew@...n.ch>, Patrick Uiterwijk <patrick@...terwijk.org>, Guenter Roeck <linux@...ck-us.net>, Vivien Didelot <vivien.didelot@...oirfairelinux.com> Subject: [PATCH net-next 4/7] net: dsa: mv88e6xxx: fix ATU FID access for 6185 The 6185 family does not have a ATU FID register. It splits it in the ATU Control register and the ATU Operation. Add 6185 support for FID (a.k.a. DBNum) in ATU commands. Signed-off-by: Vivien Didelot <vivien.didelot@...oirfairelinux.com> --- drivers/net/dsa/mv88e6xxx.c | 14 ++++++++++++++ drivers/net/dsa/mv88e6xxx.h | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/mv88e6xxx.c b/drivers/net/dsa/mv88e6xxx.c index df3f219..4b3c466 100644 --- a/drivers/net/dsa/mv88e6xxx.c +++ b/drivers/net/dsa/mv88e6xxx.c @@ -961,6 +961,20 @@ static int _mv88e6xxx_atu_cmd(struct dsa_switch *ds, u16 fid, u16 cmd) ret = _mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_ATU_FID, fid); if (ret < 0) return ret; + } else if (mv88e6xxx_6185_family(ds)) { + /* ATU DBNum[7:4] are located in ATU Control 15:12 */ + ret = _mv88e6xxx_reg_read(ds, REG_GLOBAL, GLOBAL_ATU_CONTROL); + if (ret < 0) + return ret; + + ret = _mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_ATU_CONTROL, + (ret & 0xfff) | + ((fid << 8) & 0xf000)); + if (ret < 0) + return ret; + + /* ATU DBNum[3:0] are located in ATU Operation 3:0 */ + cmd |= fid & 0xf; } else { return -EOPNOTSUPP; } diff --git a/drivers/net/dsa/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx.h index febab76..94d3cb3 100644 --- a/drivers/net/dsa/mv88e6xxx.h +++ b/drivers/net/dsa/mv88e6xxx.h @@ -366,7 +366,7 @@ struct mv88e6xxx_switch_id { }; struct mv88e6xxx_atu_entry { - u16 fid; + u16 fid; /* 8-bit DBNum in 88E6185 family */ u8 state; bool trunk; u16 portv_trunkid; -- 2.7.4
Powered by blists - more mailing lists