aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c')
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 0ea14c0a2e74..b0edae94d73d 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -3122,7 +3122,7 @@ static void ixgbevf_free_all_rx_resources(struct ixgbevf_adapter *adapter)
3122 * handler is registered with the OS, the watchdog timer is started, 3122 * handler is registered with the OS, the watchdog timer is started,
3123 * and the stack is notified that the interface is ready. 3123 * and the stack is notified that the interface is ready.
3124 **/ 3124 **/
3125static int ixgbevf_open(struct net_device *netdev) 3125int ixgbevf_open(struct net_device *netdev)
3126{ 3126{
3127 struct ixgbevf_adapter *adapter = netdev_priv(netdev); 3127 struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3128 struct ixgbe_hw *hw = &adapter->hw; 3128 struct ixgbe_hw *hw = &adapter->hw;
@@ -3205,7 +3205,7 @@ err_setup_reset:
3205 * needs to be disabled. A global MAC reset is issued to stop the 3205 * needs to be disabled. A global MAC reset is issued to stop the
3206 * hardware, and all transmit and receive resources are freed. 3206 * hardware, and all transmit and receive resources are freed.
3207 **/ 3207 **/
3208static int ixgbevf_close(struct net_device *netdev) 3208int ixgbevf_close(struct net_device *netdev)
3209{ 3209{
3210 struct ixgbevf_adapter *adapter = netdev_priv(netdev); 3210 struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3211 3211
@@ -3692,19 +3692,23 @@ static int ixgbevf_set_mac(struct net_device *netdev, void *p)
3692 struct ixgbevf_adapter *adapter = netdev_priv(netdev); 3692 struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3693 struct ixgbe_hw *hw = &adapter->hw; 3693 struct ixgbe_hw *hw = &adapter->hw;
3694 struct sockaddr *addr = p; 3694 struct sockaddr *addr = p;
3695 int err;
3695 3696
3696 if (!is_valid_ether_addr(addr->sa_data)) 3697 if (!is_valid_ether_addr(addr->sa_data))
3697 return -EADDRNOTAVAIL; 3698 return -EADDRNOTAVAIL;
3698 3699
3699 ether_addr_copy(netdev->dev_addr, addr->sa_data);
3700 ether_addr_copy(hw->mac.addr, addr->sa_data);
3701
3702 spin_lock_bh(&adapter->mbx_lock); 3700 spin_lock_bh(&adapter->mbx_lock);
3703 3701
3704 hw->mac.ops.set_rar(hw, 0, hw->mac.addr, 0); 3702 err = hw->mac.ops.set_rar(hw, 0, addr->sa_data, 0);
3705 3703
3706 spin_unlock_bh(&adapter->mbx_lock); 3704 spin_unlock_bh(&adapter->mbx_lock);
3707 3705
3706 if (err)
3707 return -EPERM;
3708
3709 ether_addr_copy(hw->mac.addr, addr->sa_data);
3710 ether_addr_copy(netdev->dev_addr, addr->sa_data);
3711
3708 return 0; 3712 return 0;
3709} 3713}
3710 3714