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>
This commit is contained in:
		
					parent
					
						
							
								c8585bd89e
							
						
					
				
			
			
				commit
				
					
						1a0d6ae579
					
				
			
		
					 3 changed files with 31 additions and 21 deletions
				
			
		| 
						 | 
					@ -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,
 | 
				
			||||||
		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)
 | 
				
			||||||
	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)
 | 
				
			||||||
	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,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* 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,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	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)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue