提交 1a0d6ae5 编写于 作者: D Danny Kukawka 提交者: David S. Miller

rename dev_hw_addr_random and remove redundant second

Renamed dev_hw_addr_random to eth_hw_addr_random() to reflect that
this function only assign a random ethernet address (MAC). Removed
the second parameter (u8 *hwaddr), it's redundant since the also
given net_device already contains net_device->dev_addr.
Set it directly.

Adapt igbvf and ixgbevf to the changed function.

Small fix for ixgbevf_probe(): if ixgbevf_sw_init() fails
(which means the device got no dev_addr) handle the error and
jump to err_sw_init as already done by igbvf in similar case.
Signed-off-by: NDanny Kukawka <danny.kukawka@bisect.de>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 c8585bd8
...@@ -2712,18 +2712,19 @@ static int __devinit igbvf_probe(struct pci_dev *pdev, ...@@ -2712,18 +2712,19 @@ static int __devinit igbvf_probe(struct pci_dev *pdev,
dev_info(&pdev->dev, dev_info(&pdev->dev,
"PF still in reset state, assigning new address." "PF still in reset state, assigning new address."
" Is the PF interface up?\n"); " 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 { } else {
err = hw->mac.ops.read_mac_addr(hw); err = hw->mac.ops.read_mac_addr(hw);
if (err) { if (err) {
dev_err(&pdev->dev, "Error reading MAC address\n"); dev_err(&pdev->dev, "Error reading MAC address\n");
goto err_hw_init; 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)) { if (!is_valid_ether_addr(netdev->perm_addr)) {
dev_err(&pdev->dev, "Invalid MAC Address: %pM\n", dev_err(&pdev->dev, "Invalid MAC Address: %pM\n",
netdev->dev_addr); netdev->dev_addr);
...@@ -2731,6 +2732,8 @@ static int __devinit igbvf_probe(struct pci_dev *pdev, ...@@ -2731,6 +2732,8 @@ static int __devinit igbvf_probe(struct pci_dev *pdev,
goto err_hw_init; goto err_hw_init;
} }
memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
setup_timer(&adapter->watchdog_timer, &igbvf_watchdog, setup_timer(&adapter->watchdog_timer, &igbvf_watchdog,
(unsigned long) adapter); (unsigned long) adapter);
......
...@@ -2199,13 +2199,17 @@ static int __devinit ixgbevf_sw_init(struct ixgbevf_adapter *adapter) ...@@ -2199,13 +2199,17 @@ static int __devinit ixgbevf_sw_init(struct ixgbevf_adapter *adapter)
if (err) { if (err) {
dev_info(&pdev->dev, dev_info(&pdev->dev,
"PF still in reset state, assigning new address\n"); "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 { } else {
err = hw->mac.ops.init_hw(hw); err = hw->mac.ops.init_hw(hw);
if (err) { if (err) {
pr_err("init_shared_code failed: %d\n", err); pr_err("init_shared_code failed: %d\n", err);
goto out; goto out;
} }
memcpy(adapter->netdev->dev_addr, adapter->hw.mac.addr,
adapter->netdev->addr_len);
} }
/* Enable dynamic interrupt throttling rates */ /* Enable dynamic interrupt throttling rates */
...@@ -2224,6 +2228,7 @@ static int __devinit ixgbevf_sw_init(struct ixgbevf_adapter *adapter) ...@@ -2224,6 +2228,7 @@ static int __devinit ixgbevf_sw_init(struct ixgbevf_adapter *adapter)
adapter->flags |= IXGBE_FLAG_RX_CSUM_ENABLED; adapter->flags |= IXGBE_FLAG_RX_CSUM_ENABLED;
set_bit(__IXGBEVF_DOWN, &adapter->state); set_bit(__IXGBEVF_DOWN, &adapter->state);
return 0;
out: out:
return err; return err;
...@@ -3394,6 +3399,17 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev, ...@@ -3394,6 +3399,17 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev,
/* setup the private structure */ /* setup the private structure */
err = ixgbevf_sw_init(adapter); 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 | netdev->hw_features = NETIF_F_SG |
NETIF_F_IP_CSUM | NETIF_F_IP_CSUM |
...@@ -3418,16 +3434,6 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev, ...@@ -3418,16 +3434,6 @@ static int __devinit ixgbevf_probe(struct pci_dev *pdev,
netdev->priv_flags |= IFF_UNICAST_FLT; 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); init_timer(&adapter->watchdog_timer);
adapter->watchdog_timer.function = ixgbevf_watchdog; adapter->watchdog_timer.function = ixgbevf_watchdog;
adapter->watchdog_timer.data = (unsigned long)adapter; adapter->watchdog_timer.data = (unsigned long)adapter;
......
...@@ -140,17 +140,18 @@ static inline void random_ether_addr(u8 *addr) ...@@ -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 * @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 * Generate a random Ethernet address (MAC) to be used by a net device
* so the state can be read by sysfs and be used by udev. * 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; dev->addr_assign_type |= NET_ADDR_RANDOM;
random_ether_addr(hwaddr); random_ether_addr(dev->dev_addr);
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册