From 8d3a855b46d838e9b69ce07f8871ee15c2d63f8a Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 30 Jan 2006 11:37:57 -0800 Subject: [PATCH] --- yaml --- r: 19864 b: refs/heads/master c: a8ab1ec0c3ef4ce2033abe3441d032fe1490a71a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/sky2.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 65eb41884224..0e152d5ac282 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d28d4870279c5d184804b6ac1775b130972ffecd +refs/heads/master: a8ab1ec0c3ef4ce2033abe3441d032fe1490a71a diff --git a/trunk/drivers/net/sky2.c b/trunk/drivers/net/sky2.c index 12ff1c857bf9..6cd075e1f38a 100644 --- a/trunk/drivers/net/sky2.c +++ b/trunk/drivers/net/sky2.c @@ -2555,19 +2555,24 @@ static struct net_device_stats *sky2_get_stats(struct net_device *dev) static int sky2_set_mac_address(struct net_device *dev, void *p) { struct sky2_port *sky2 = netdev_priv(dev); - struct sockaddr *addr = p; + struct sky2_hw *hw = sky2->hw; + unsigned port = sky2->port; + const struct sockaddr *addr = p; if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); - memcpy_toio(sky2->hw->regs + B2_MAC_1 + sky2->port * 8, + memcpy_toio(hw->regs + B2_MAC_1 + port * 8, dev->dev_addr, ETH_ALEN); - memcpy_toio(sky2->hw->regs + B2_MAC_2 + sky2->port * 8, + memcpy_toio(hw->regs + B2_MAC_2 + port * 8, dev->dev_addr, ETH_ALEN); - if (netif_running(dev)) - sky2_phy_reinit(sky2); + /* virtual address for data */ + gma_set_addr(hw, port, GM_SRC_ADDR_2L, dev->dev_addr); + + /* physical address: used for pause frames */ + gma_set_addr(hw, port, GM_SRC_ADDR_1L, dev->dev_addr); return 0; }