aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/team/team.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 89853c31e7f4..9b94f53a9d4b 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1188,10 +1188,11 @@ static int team_set_mac_address(struct net_device *dev, void *p)
1188{ 1188{
1189 struct team *team = netdev_priv(dev); 1189 struct team *team = netdev_priv(dev);
1190 struct team_port *port; 1190 struct team_port *port;
1191 struct sockaddr *addr = p; 1191 int err;
1192 1192
1193 dev->addr_assign_type &= ~NET_ADDR_RANDOM; 1193 err = eth_mac_addr(dev, p);
1194 memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); 1194 if (err)
1195 return err;
1195 rcu_read_lock(); 1196 rcu_read_lock();
1196 list_for_each_entry_rcu(port, &team->port_list, list) 1197 list_for_each_entry_rcu(port, &team->port_list, list)
1197 if (team->ops.port_change_mac) 1198 if (team->ops.port_change_mac)
@@ -1393,7 +1394,7 @@ static void team_setup(struct net_device *dev)
1393 * bring us to promisc mode in case a unicast addr is added. 1394 * bring us to promisc mode in case a unicast addr is added.
1394 * Let this up to underlay drivers. 1395 * Let this up to underlay drivers.
1395 */ 1396 */
1396 dev->priv_flags |= IFF_UNICAST_FLT; 1397 dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE;
1397 1398
1398 dev->features |= NETIF_F_LLTX; 1399 dev->features |= NETIF_F_LLTX;
1399 dev->features |= NETIF_F_GRO; 1400 dev->features |= NETIF_F_GRO;