lkml.org 
[lkml]   [2012]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 2/2] smsc95xx: allow to re-use MAC address already programmed
Date
From: Peter Meerwald <p.meerwald@bct-electronic.com>

patch adds a module parameter which allows to keep the MAC address already
set (e.g. by the boot loader) if it is valid (otherwise the MAC address is read
from an optional EEPROM or randomly generated)

tested on beagleboard-xm

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>

---
drivers/net/usb/smsc95xx.c | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index b7b2326..5545a60 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -67,6 +67,10 @@ static bool leds_off = false;
module_param(leds_off, bool, 0644);
MODULE_PARM_DESC(leds_off, "Turn off NIC LEDs");

+static bool keep_mac = false;
+module_param(keep_mac, bool, 0644);
+MODULE_PARM_DESC(keep_mac, "Keep MAC address set by boot loader if available");
+
static int smsc95xx_read_reg(struct usbnet *dev, u32 index, u32 *data)
{
u32 *buf = kmalloc(4, GFP_KERNEL);
@@ -607,6 +611,21 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)

static void smsc95xx_init_mac_address(struct usbnet *dev)
{
+ if (keep_mac) {
+ u32 addr_lo, addr_hi;
+ int ret = smsc95xx_read_reg(dev, ADDRL, &addr_lo);
+ if (ret < 0) {
+ netdev_warn(dev->net, "Failed to read ADDRL: %d\n", ret);
+ }
+ ret = smsc95xx_read_reg(dev, ADDRH, &addr_hi);
+
+ if (is_valid_ether_addr(dev->net->dev_addr)) {
+ /* MAC values are valid so use them */
+ netif_dbg(dev, ifup, dev->net, "MAC address already configured\n");
+ return;
+ }
+ }
+
/* try reading mac address from EEPROM */
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
dev->net->dev_addr) == 0) {
--
1.7.4.1


\
 
 \ /
  Last update: 2012-02-08 12:11    [W:0.043 / U:0.204 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site