From fdede694c79e30557c0a00d5f5e9f607b16df3dd Mon Sep 17 00:00:00 2001 From: Ron Mercer Date: Wed, 17 Feb 2010 06:41:22 +0000 Subject: [PATCH] --- yaml --- r: 184283 b: refs/heads/master c: 801e9096c566d40d2e7c9903dc902fa01a5a0b36 h: refs/heads/master i: 184281: 08168a2a9bfffdf5fb74bc4b5ec13ab371c0bacb 184279: 9e927a3a1de6fc80e1e52e4b63fc8b097015c654 v: v3 --- [refs] | 2 +- trunk/drivers/net/qlge/qlge.h | 2 ++ trunk/drivers/net/qlge/qlge_main.c | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e031e318d5b8..fd1537196e81 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c0c56955e7325ba2f910c760111457adc21ef0d4 +refs/heads/master: 801e9096c566d40d2e7c9903dc902fa01a5a0b36 diff --git a/trunk/drivers/net/qlge/qlge.h b/trunk/drivers/net/qlge/qlge.h index 57d135e3bfaf..8b742b639ceb 100644 --- a/trunk/drivers/net/qlge/qlge.h +++ b/trunk/drivers/net/qlge/qlge.h @@ -2139,6 +2139,8 @@ struct ql_adapter { u16 device_id; struct timer_list timer; atomic_t lb_count; + /* Keep local copy of current mac address. */ + char current_mac_addr[6]; }; /* diff --git a/trunk/drivers/net/qlge/qlge_main.c b/trunk/drivers/net/qlge/qlge_main.c index 0541e777694d..c170349717c5 100644 --- a/trunk/drivers/net/qlge/qlge_main.c +++ b/trunk/drivers/net/qlge/qlge_main.c @@ -463,7 +463,7 @@ static int ql_set_mac_addr(struct ql_adapter *qdev, int set) char *addr; if (set) { - addr = &qdev->ndev->dev_addr[0]; + addr = &qdev->current_mac_addr[0]; netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev, "Set Mac addr %pM\n", addr); } else { @@ -4301,6 +4301,8 @@ static int qlge_set_mac_address(struct net_device *ndev, void *p) if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; memcpy(ndev->dev_addr, addr->sa_data, ndev->addr_len); + /* Update local copy of current mac address. */ + memcpy(qdev->current_mac_addr, ndev->dev_addr, ndev->addr_len); status = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK); if (status) @@ -4542,6 +4544,8 @@ static int __devinit ql_init_device(struct pci_dev *pdev, } memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len); + /* Keep local copy of current mac address. */ + memcpy(qdev->current_mac_addr, ndev->dev_addr, ndev->addr_len); /* Set up the default ring sizes. */ qdev->tx_ring_size = NUM_TX_RING_ENTRIES;