Skip to contentSkip to conversation

Blackfin EMAC driver: add function to change the MAC address

PATCH In review Bryan Wu 2 participants 3 messages Sep 16, 2007 – Sep 19, 2007

Subsystems (2)
lore
Share & tools
lore

Bryan Wu

author
#0 lore raw

PATCH 1/3 Blackfin EMAC driver: add function to change the MAC address

Quoted 1 line

From 157dfddae50708a716c2a42a314eccb9621d8793 Mon Sep 17 00:00:00 2001

From: Alex Landau <[email protected]>
Date: Sun, 5 Aug 2007 15:58:03 +0800
Subject: [PATCH] Blackfin Ethernet MAC driver: add function to change the MAC address

Alex Landau writes in the forums:
Previously, changing the MAC address (e.g. via ifconfig) resulted in a generic function to be called that only changed a variable in memory. This patch also updated the Blackfin MAC address registers to filter the correct new MAC.

---
 drivers/net/bfin_mac.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
drivers/net/bfin_mac.c +12 -1
index 2bb97d4..8d61ca9 100644
@@ -468,7 +468,7 @@ void setup_system_regs(struct net_device *dev)
 	bfin_write_DMA1_Y_MODIFY(0);
 }
 
-void setup_mac_addr(u8 * mac_addr)
+static void setup_mac_addr(u8 *mac_addr)
 {
 	u32 addr_low = le32_to_cpu(*(__le32 *) & mac_addr[0]);
 	u16 addr_hi = le16_to_cpu(*(__le16 *) & mac_addr[4]);
@@ -478,6 +478,16 @@ void setup_mac_addr(u8 * mac_addr)
 	bfin_write_EMAC_ADDRHI(addr_hi);
 }
 
+static int bf537mac_set_mac_address(struct net_device *dev, void *p)
+{
+	struct sockaddr *addr = p;
+	if (netif_running(dev))
+		return -EBUSY;
+	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+	setup_mac_addr(dev->dev_addr);
+	return 0;
+}
+
 static void adjust_tx_list(void)
 {
 	int timeout_cnt = MAX_TIMEOUT_CNT;
@@ -895,6 +905,7 @@ static int __init bf537mac_probe(struct net_device *dev)
 	dev->open = bf537mac_open;
 	dev->stop = bf537mac_close;
 	dev->hard_start_xmit = bf537mac_hard_start_xmit;
+	dev->set_mac_address = bf537mac_set_mac_address;
 	dev->tx_timeout = bf537mac_timeout;
 	dev->get_stats = bf537mac_query_statistics;
 	dev->set_multicast_list = bf537mac_set_multicast_list;
Signature · 1 line
1.5.2
#1 lore raw
Quoted 11 lines · Bryan Wu
Quoted 1 line

From 157dfddae50708a716c2a42a314eccb9621d8793 Mon Sep 17 00:00:00 2001

From: Alex Landau <[email protected]>
Date: Sun, 5 Aug 2007 15:58:03 +0800
Subject: [PATCH] Blackfin Ethernet MAC driver: add function to change the MAC address

Alex Landau writes in the forums:
Previously, changing the MAC address (e.g. via ifconfig) resulted in a generic function to be called that only changed a variable in memory. This patch also updated the Blackfin MAC address registers to filter the correct new MAC.

Quoted 3 lines

ACK patches 1-3... but can you regenerate them against netdev-2.6.git#upstream (or davem/net-2.6.24.git)?

author
#2 lore raw
Quoted 14 lines · Jeff Garzik
Quoted 1 line · Bryan Wu
Quoted 1 line

From 157dfddae50708a716c2a42a314eccb9621d8793 Mon Sep 17 00:00:00

2001

Quoted 3 lines

From: Alex Landau <[email protected]>
Date: Sun, 5 Aug 2007 15:58:03 +0800
Subject: [PATCH] Blackfin Ethernet MAC driver: add function to

change the MAC address

Quoted 4 lines

Alex Landau writes in the forums:
Previously, changing the MAC address (e.g. via ifconfig) resulted in a generic function to be called that only changed a variable

in

Quoted 1 line

memory. This patch also updated the Blackfin MAC address

registers

Quoted 8 lines
Quoted 5 lines

to filter the correct new MAC.

ACK patches 1-3... but can you regenerate them against netdev-2.6.git#upstream (or davem/net-2.6.24.git)?

Excellent, I will resend the patch against the netdev-2.6.git#upstream ASAP.

Thanks
-Bryan Wu

Quoted 1 line