diff options
author | David S. Miller <davem@davemloft.net> | 2018-01-17 00:00:25 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-17 00:10:42 -0500 |
commit | c02b3741eb99a1ec733e6134c53ba59e43e19e97 (patch) | |
tree | ff7dd96c32dec2abe530e7101378443dabcb8962 /drivers/net/ethernet/ibm/ibmvnic.c | |
parent | 7018d1b3f20fb4308ed9bc577160cb8ffb79b62a (diff) | |
parent | 8cbab92dff778e516064c13113ca15d4869ec883 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Overlapping changes all over.
The mini-qdisc bits were a little bit tricky, however.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/ibm/ibmvnic.c')
-rw-r--r-- | drivers/net/ethernet/ibm/ibmvnic.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 461014b7ccdd..736df59c16f5 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c | |||
@@ -757,6 +757,12 @@ static int ibmvnic_login(struct net_device *netdev) | |||
757 | } | 757 | } |
758 | } while (adapter->renegotiate); | 758 | } while (adapter->renegotiate); |
759 | 759 | ||
760 | /* handle pending MAC address changes after successful login */ | ||
761 | if (adapter->mac_change_pending) { | ||
762 | __ibmvnic_set_mac(netdev, &adapter->desired.mac); | ||
763 | adapter->mac_change_pending = false; | ||
764 | } | ||
765 | |||
760 | return 0; | 766 | return 0; |
761 | } | 767 | } |
762 | 768 | ||
@@ -994,11 +1000,6 @@ static int ibmvnic_open(struct net_device *netdev) | |||
994 | 1000 | ||
995 | mutex_lock(&adapter->reset_lock); | 1001 | mutex_lock(&adapter->reset_lock); |
996 | 1002 | ||
997 | if (adapter->mac_change_pending) { | ||
998 | __ibmvnic_set_mac(netdev, &adapter->desired.mac); | ||
999 | adapter->mac_change_pending = false; | ||
1000 | } | ||
1001 | |||
1002 | if (adapter->state != VNIC_CLOSED) { | 1003 | if (adapter->state != VNIC_CLOSED) { |
1003 | rc = ibmvnic_login(netdev); | 1004 | rc = ibmvnic_login(netdev); |
1004 | if (rc) { | 1005 | if (rc) { |
@@ -1532,7 +1533,7 @@ static int ibmvnic_set_mac(struct net_device *netdev, void *p) | |||
1532 | struct ibmvnic_adapter *adapter = netdev_priv(netdev); | 1533 | struct ibmvnic_adapter *adapter = netdev_priv(netdev); |
1533 | struct sockaddr *addr = p; | 1534 | struct sockaddr *addr = p; |
1534 | 1535 | ||
1535 | if (adapter->state != VNIC_OPEN) { | 1536 | if (adapter->state == VNIC_PROBED) { |
1536 | memcpy(&adapter->desired.mac, addr, sizeof(struct sockaddr)); | 1537 | memcpy(&adapter->desired.mac, addr, sizeof(struct sockaddr)); |
1537 | adapter->mac_change_pending = true; | 1538 | adapter->mac_change_pending = true; |
1538 | return 0; | 1539 | return 0; |