From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
To: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel@savoirfairelinux.com,
"David S. Miller" <davem@davemloft.net>,
Florian Fainelli <f.fainelli@gmail.com>,
Andrew Lunn <andrew@lunn.ch>,
David Laight <David.Laight@ACULAB.COM>,
Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Subject: [PATCH net-next v3 2/5] net: dsa: mv88e6060: fix switch MAC address
Date: Fri, 13 Oct 2017 14:18:06 -0400 [thread overview]
Message-ID: <20171013181809.14627-3-vivien.didelot@savoirfairelinux.com> (raw)
In-Reply-To: <20171013181809.14627-1-vivien.didelot@savoirfairelinux.com>
The 88E6060 Ethernet switch always transmits the multicast bit of the
switch MAC address as a zero. It re-uses the corresponding bit 8 of the
register "Switch MAC Address Register Bytes 0 & 1" for "DiffAddr".
If the "DiffAddr" bit is 0, then all ports transmit the same source
address. If it is set to 1, then bit 2:0 are used for the port number.
The mv88e6060 driver is currently wrongly shifting the MAC address byte
0 by 9. To fix this, shift it by 8 as usual and clear its bit 0.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
drivers/net/dsa/mv88e6060.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dsa/mv88e6060.c b/drivers/net/dsa/mv88e6060.c
index 621cdc46ad81..d64be2b83d3c 100644
--- a/drivers/net/dsa/mv88e6060.c
+++ b/drivers/net/dsa/mv88e6060.c
@@ -214,8 +214,14 @@ static int mv88e6060_setup(struct dsa_switch *ds)
static int mv88e6060_set_addr(struct dsa_switch *ds, u8 *addr)
{
- /* Use the same MAC Address as FD Pause frames for all ports */
- REG_WRITE(REG_GLOBAL, GLOBAL_MAC_01, (addr[0] << 9) | addr[1]);
+ u16 val = addr[0] << 8 | addr[1];
+
+ /* The multicast bit is always transmitted as a zero, so the switch uses
+ * bit 8 for "DiffAddr", where 0 means all ports transmit the same SA.
+ */
+ val &= 0xfeff;
+
+ REG_WRITE(REG_GLOBAL, GLOBAL_MAC_01, val);
REG_WRITE(REG_GLOBAL, GLOBAL_MAC_23, (addr[2] << 8) | addr[3]);
REG_WRITE(REG_GLOBAL, GLOBAL_MAC_45, (addr[4] << 8) | addr[5]);
--
2.14.2
next prev parent reply other threads:[~2017-10-13 18:18 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-13 18:18 [PATCH net-next v3 0/5] net: dsa: remove .set_addr Vivien Didelot
2017-10-13 18:18 ` [PATCH net-next v3 1/5] net: dsa: mv88e6xxx: setup random mac address Vivien Didelot
2017-10-13 18:18 ` Vivien Didelot [this message]
2017-10-13 18:18 ` [PATCH net-next v3 3/5] net: dsa: mv88e6060: " Vivien Didelot
2017-10-16 9:05 ` David Laight
2017-10-13 18:18 ` [PATCH net-next v3 4/5] net: dsa: dsa_loop: remove .set_addr Vivien Didelot
2017-10-13 18:18 ` [PATCH net-next v3 5/5] net: dsa: " Vivien Didelot
2017-10-15 1:30 ` [PATCH net-next v3 0/5] " David Miller
2017-10-16 15:23 ` Rodney Cummings
2017-10-16 16:09 ` Andrew Lunn
2017-10-16 16:28 ` Rodney Cummings
2017-10-16 16:47 ` Andrew Lunn
2017-10-16 16:52 ` Rodney Cummings
2017-10-16 16:57 ` Andrew Lunn
2017-10-16 18:14 ` Rodney Cummings
2017-10-16 16:30 ` David Laight
2017-10-16 16:44 ` Andrew Lunn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171013181809.14627-3-vivien.didelot@savoirfairelinux.com \
--to=vivien.didelot@savoirfairelinux.com \
--cc=David.Laight@ACULAB.COM \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=kernel@savoirfairelinux.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox