From: Richard Mortimer <richm@oldelvet.org.uk>
To: sparclinux@vger.kernel.org
Subject: [PATCH v3] cassini: Use local-mac-address prom property for
Date: Thu, 06 Jan 2011 14:34:15 +0000 [thread overview]
Message-ID: <1294324455.6193.70.camel@duncow> (raw)
From 603b3377a6857448006c886f10c607d07c102b64 Mon Sep 17 00:00:00 2001
From: Richard Mortimer <richm@oldelvet.org.uk>
Date: Thu, 6 Jan 2011 00:08:54 +0000
Subject: [PATCH] cassini: Use local-mac-address prom property for Cassini MAC address
Fallback on the local-mac-address prom property if the Cassini device
does not have an address programmed in the VPD ROM. This uses the same
technique as implemented by the sungem driver.
The problem was reported by Frans van Berckel using Debian kernel 2.6.34-7
on Sun Fire V440. udev was assigning a new eth<n> device name on each reboot
because the cassini driver was using a random MAC address.
Fix tested on 2.6.34-7 and 2.6.37 Sun Fire V440. Compile tested against
2.6.36 davem/sparc-2.6.git
Reported-by: Frans van Berckel <fberckel@xs4all.nl>
Tested-by: Frans van Berckel <fberckel@xs4all.nl>
Reviewed-by: Julian Calaby <julian.calaby@gmail.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Richard Mortimer <richm@oldelvet.org.uk>
---
drivers/net/cassini.c | 16 ++++++++++++++++
drivers/net/cassini.h | 3 +++
2 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/drivers/net/cassini.c b/drivers/net/cassini.c
index d6b6d6a..e259c18 100644
--- a/drivers/net/cassini.c
+++ b/drivers/net/cassini.c
@@ -3203,6 +3203,10 @@ static int cas_get_vpd_info(struct cas *cp, unsigned char *dev_addr,
int phy_type = CAS_PHY_MII_MDIO0; /* default phy type */
int mac_off = 0;
+#if defined(CONFIG_OF)
+ const unsigned char *addr;
+#endif
+
/* give us access to the PROM */
writel(BIM_LOCAL_DEV_PROM | BIM_LOCAL_DEV_PAD,
cp->regs + REG_BIM_LOCAL_DEV_EN);
@@ -3350,6 +3354,14 @@ use_random_mac_addr:
if (found & VPD_FOUND_MAC)
goto done;
+#if defined(CONFIG_OF)
+ addr = of_get_property(cp->of_node, "local-mac-address", NULL);
+ if (addr != NULL) {
+ memcpy(dev_addr, addr, 6);
+ goto done;
+ }
+#endif
+
/* Sun MAC prefix then 3 random bytes. */
pr_info("MAC address not found in ROM VPD\n");
dev_addr[0] = 0x08;
@@ -5019,6 +5031,10 @@ static int __devinit cas_init_one(struct pci_dev *pdev,
cp->msg_enable = (cassini_debug < 0) ? CAS_DEF_MSG_ENABLE :
cassini_debug;
+#if defined(CONFIG_OF)
+ cp->of_node = pci_device_to_OF_node(pdev);
+#endif
+
cp->link_transition = LINK_TRANSITION_UNKNOWN;
cp->link_transition_jiffies_valid = 0;
diff --git a/drivers/net/cassini.h b/drivers/net/cassini.h
index dbc4787..faf4746 100644
--- a/drivers/net/cassini.h
+++ b/drivers/net/cassini.h
@@ -2868,6 +2868,9 @@ struct cas {
dma_addr_t block_dvma, tx_tiny_dvma[N_TX_RINGS];
struct pci_dev *pdev;
struct net_device *dev;
+#if defined(CONFIG_OF)
+ struct device_node *of_node;
+#endif
/* Firmware Info */
u16 fw_load_addr;
--
1.4.4.4
next reply other threads:[~2011-01-06 14:34 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-06 14:34 Richard Mortimer [this message]
2011-01-06 19:51 ` [PATCH v3] cassini: Use local-mac-address prom property for David Miller
2011-01-14 11:39 ` [PATCH v3] cassini: Use local-mac-address prom property for Cassini Richard Mortimer
2011-01-14 20:40 ` [PATCH v3] cassini: Use local-mac-address prom property for David Miller
2011-01-14 20:40 ` [PATCH v3] cassini: Use local-mac-address prom property for Cassini MAC address David Miller
2011-01-15 8:47 ` [PATCH v3] cassini: Use local-mac-address prom property for Richard Mortimer
2011-01-15 8:47 ` [PATCH v3] cassini: Use local-mac-address prom property for Cassini MAC address Richard Mortimer
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=1294324455.6193.70.camel@duncow \
--to=richm@oldelvet.org.uk \
--cc=sparclinux@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.