Commit 1a0d6ae5795c376bae6d012fb25e8341e4c6d5f2

Authored by Danny Kukawka
Committed by David S. Miller
1 parent c8585bd89e

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: Danny Kukawka <danny.kukawka@bisect.de>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 3 changed files with 31 additions and 21 deletions Side-by-side Diff

drivers/net/ethernet/intel/igbvf/netdev.c
... ... @@ -2712,24 +2712,27 @@
2712 2712 dev_info(&pdev->dev,
2713 2713 "PF still in reset state, assigning new address."
2714 2714 " Is the PF interface up?\n");
2715   - dev_hw_addr_random(adapter->netdev, hw->mac.addr);
  2715 + eth_hw_addr_random(netdev);
  2716 + memcpy(adapter->hw.mac.addr, netdev->dev_addr,
  2717 + netdev->addr_len);
2716 2718 } else {
2717 2719 err = hw->mac.ops.read_mac_addr(hw);
2718 2720 if (err) {
2719 2721 dev_err(&pdev->dev, "Error reading MAC address\n");
2720 2722 goto err_hw_init;
2721 2723 }
  2724 + memcpy(netdev->dev_addr, adapter->hw.mac.addr,
  2725 + netdev->addr_len);
2722 2726 }
2723 2727  
2724   - memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
2725   - memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
2726   -
2727 2728 if (!is_valid_ether_addr(netdev->perm_addr)) {
2728 2729 dev_err(&pdev->dev, "Invalid MAC Address: %pM\n",
2729 2730 netdev->dev_addr);
2730 2731 err = -EIO;
2731 2732 goto err_hw_init;
2732 2733 }
  2734 +
  2735 + memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
2733 2736  
2734 2737 setup_timer(&adapter->watchdog_timer, &igbvf_watchdog,
2735 2738 (unsigned long) adapter);
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
... ... @@ -2199,13 +2199,17 @@
2199 2199 if (err) {
2200 2200 dev_info(&pdev->dev,
2201 2201 "PF still in reset state, assigning new address\n");
2202   - dev_hw_addr_random(adapter->netdev, hw->mac.addr);
  2202 + eth_hw_addr_random(adapter->netdev);
  2203 + memcpy(adapter->hw.mac.addr, adapter->netdev->dev_addr,
  2204 + adapter->netdev->addr_len);
2203 2205 } else {
2204 2206 err = hw->mac.ops.init_hw(hw);
2205 2207 if (err) {
2206 2208 pr_err("init_shared_code failed: %d\n", err);
2207 2209 goto out;
2208 2210 }
  2211 + memcpy(adapter->netdev->dev_addr, adapter->hw.mac.addr,
  2212 + adapter->netdev->addr_len);
2209 2213 }
2210 2214  
2211 2215 /* Enable dynamic interrupt throttling rates */
... ... @@ -2224,6 +2228,7 @@
2224 2228 adapter->flags |= IXGBE_FLAG_RX_CSUM_ENABLED;
2225 2229  
2226 2230 set_bit(__IXGBEVF_DOWN, &adapter->state);
  2231 + return 0;
2227 2232  
2228 2233 out:
2229 2234 return err;
2230 2235  
... ... @@ -3394,7 +3399,18 @@
3394 3399  
3395 3400 /* setup the private structure */
3396 3401 err = ixgbevf_sw_init(adapter);
  3402 + if (err)
  3403 + goto err_sw_init;
3397 3404  
  3405 + /* The HW MAC address was set and/or determined in sw_init */
  3406 + memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
  3407 +
  3408 + if (!is_valid_ether_addr(netdev->dev_addr)) {
  3409 + pr_err("invalid MAC address\n");
  3410 + err = -EIO;
  3411 + goto err_sw_init;
  3412 + }
  3413 +
3398 3414 netdev->hw_features = NETIF_F_SG |
3399 3415 NETIF_F_IP_CSUM |
3400 3416 NETIF_F_IPV6_CSUM |
... ... @@ -3417,16 +3433,6 @@
3417 3433 netdev->features |= NETIF_F_HIGHDMA;
3418 3434  
3419 3435 netdev->priv_flags |= IFF_UNICAST_FLT;
3420   -
3421   - /* The HW MAC address was set and/or determined in sw_init */
3422   - memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
3423   - memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
3424   -
3425   - if (!is_valid_ether_addr(netdev->dev_addr)) {
3426   - pr_err("invalid MAC address\n");
3427   - err = -EIO;
3428   - goto err_sw_init;
3429   - }
3430 3436  
3431 3437 init_timer(&adapter->watchdog_timer);
3432 3438 adapter->watchdog_timer.function = ixgbevf_watchdog;
include/linux/etherdevice.h
... ... @@ -140,17 +140,18 @@
140 140 }
141 141  
142 142 /**
143   - * dev_hw_addr_random - Create random MAC and set device flag
  143 + * eth_hw_addr_random - Generate software assigned random Ethernet and
  144 + * set device flag
144 145 * @dev: pointer to net_device structure
145   - * @hwaddr: Pointer to a six-byte array containing the Ethernet address
146 146 *
147   - * Generate random MAC to be used by a device and set addr_assign_type
148   - * so the state can be read by sysfs and be used by udev.
  147 + * Generate a random Ethernet address (MAC) to be used by a net device
  148 + * and set addr_assign_type so the state can be read by sysfs and be
  149 + * used by userspace.
149 150 */
150   -static inline void dev_hw_addr_random(struct net_device *dev, u8 *hwaddr)
  151 +static inline void eth_hw_addr_random(struct net_device *dev)
151 152 {
152 153 dev->addr_assign_type |= NET_ADDR_RANDOM;
153   - random_ether_addr(hwaddr);
  154 + random_ether_addr(dev->dev_addr);
154 155 }
155 156  
156 157 /**