Commit 1a0d6ae5795c376bae6d012fb25e8341e4c6d5f2
Committed by
David S. Miller
1 parent
c8585bd89e
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
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 | /** |