Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 290089
b: refs/heads/master
c: 1a0d6ae
h: refs/heads/master
i:
  290087: 6c75193
v: v3
  • Loading branch information
Danny Kukawka authored and David S. Miller committed Feb 13, 2012
1 parent 637a299 commit 7a351c9
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c8585bd89e2e3c87eab6ca711e09b3af20fd469b
refs/heads/master: 1a0d6ae5795c376bae6d012fb25e8341e4c6d5f2
11 changes: 7 additions & 4 deletions trunk/drivers/net/ethernet/intel/igbvf/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -2712,25 +2712,28 @@ static int __devinit igbvf_probe(struct pci_dev *pdev,
dev_info(&pdev->dev,
"PF still in reset state, assigning new address."
" Is the PF interface up?\n");
dev_hw_addr_random(adapter->netdev, hw->mac.addr);
eth_hw_addr_random(netdev);
memcpy(adapter->hw.mac.addr, netdev->dev_addr,
netdev->addr_len);
} else {
err = hw->mac.ops.read_mac_addr(hw);
if (err) {
dev_err(&pdev->dev, "Error reading MAC address\n");
goto err_hw_init;
}
memcpy(netdev->dev_addr, adapter->hw.mac.addr,
netdev->addr_len);
}

memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);

if (!is_valid_ether_addr(netdev->perm_addr)) {
dev_err(&pdev->dev, "Invalid MAC Address: %pM\n",
netdev->dev_addr);
err = -EIO;
goto err_hw_init;
}

memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);

setup_timer(&adapter->watchdog_timer, &igbvf_watchdog,
(unsigned long) adapter);

Expand Down
28 changes: 17 additions & 11 deletions trunk/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2199,13 +2199,17 @@ static int __devinit ixgbevf_sw_init(struct ixgbevf_adapter *adapter)
if (err) {
dev_info(&pdev->dev,
"PF still in reset state, assigning new address\n");
dev_hw_addr_random(adapter->netdev, hw->mac.addr);
eth_hw_addr_random(adapter->netdev);
memcpy(adapter->hw.mac.addr, adapter->netdev->dev_addr,
adapter->netdev->addr_len);
} else {
err = hw->mac.ops.init_hw(hw);
if (err) {
pr_err("init_shared_code failed: %d\n", err);
goto out;
}
memcpy(adapter->netdev->dev_addr, adapter->hw.mac.addr,
adapter->netdev->addr_len);
}

/* Enable dynamic interrupt throttling rates */
Expand All @@ -2224,6 +2228,7 @@ static int __devinit ixgbevf_sw_init(struct ixgbevf_adapter *adapter)
adapter->flags |= IXGBE_FLAG_RX_CSUM_ENABLED;

set_bit(__IXGBEVF_DOWN, &adapter->state);
return 0;

out:
return err;
Expand Down Expand Up @@ -3394,6 +3399,17 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev,

/* setup the private structure */
err = ixgbevf_sw_init(adapter);
if (err)
goto err_sw_init;

/* The HW MAC address was set and/or determined in sw_init */
memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);

if (!is_valid_ether_addr(netdev->dev_addr)) {
pr_err("invalid MAC address\n");
err = -EIO;
goto err_sw_init;
}

netdev->hw_features = NETIF_F_SG |
NETIF_F_IP_CSUM |
Expand All @@ -3418,16 +3434,6 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev,

netdev->priv_flags |= IFF_UNICAST_FLT;

/* The HW MAC address was set and/or determined in sw_init */
memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);

if (!is_valid_ether_addr(netdev->dev_addr)) {
pr_err("invalid MAC address\n");
err = -EIO;
goto err_sw_init;
}

init_timer(&adapter->watchdog_timer);
adapter->watchdog_timer.function = ixgbevf_watchdog;
adapter->watchdog_timer.data = (unsigned long)adapter;
Expand Down
13 changes: 7 additions & 6 deletions trunk/include/linux/etherdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,17 +140,18 @@ static inline void random_ether_addr(u8 *addr)
}

/**
* dev_hw_addr_random - Create random MAC and set device flag
* eth_hw_addr_random - Generate software assigned random Ethernet and
* set device flag
* @dev: pointer to net_device structure
* @hwaddr: Pointer to a six-byte array containing the Ethernet address
*
* Generate random MAC to be used by a device and set addr_assign_type
* so the state can be read by sysfs and be used by udev.
* Generate a random Ethernet address (MAC) to be used by a net device
* and set addr_assign_type so the state can be read by sysfs and be
* used by userspace.
*/
static inline void dev_hw_addr_random(struct net_device *dev, u8 *hwaddr)
static inline void eth_hw_addr_random(struct net_device *dev)
{
dev->addr_assign_type |= NET_ADDR_RANDOM;
random_ether_addr(hwaddr);
random_ether_addr(dev->dev_addr);
}

/**
Expand Down

0 comments on commit 7a351c9

Please sign in to comment.