diff options
Diffstat (limited to 'drivers/net/net_failover.c')
| -rw-r--r-- | drivers/net/net_failover.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c index 83f7420ddea5..7ae1856d1f18 100644 --- a/drivers/net/net_failover.c +++ b/drivers/net/net_failover.c @@ -115,7 +115,8 @@ static netdev_tx_t net_failover_start_xmit(struct sk_buff *skb,  }  static u16 net_failover_select_queue(struct net_device *dev, -				     struct sk_buff *skb, void *accel_priv, +				     struct sk_buff *skb, +				     struct net_device *sb_dev,  				     select_queue_fallback_t fallback)  {  	struct net_failover_info *nfo_info = netdev_priv(dev); @@ -128,9 +129,9 @@ static u16 net_failover_select_queue(struct net_device *dev,  		if (ops->ndo_select_queue)  			txq = ops->ndo_select_queue(primary_dev, skb, -						    accel_priv, fallback); +						    sb_dev, fallback);  		else -			txq = fallback(primary_dev, skb); +			txq = fallback(primary_dev, skb, NULL);  		qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping; @@ -219,14 +220,14 @@ static int net_failover_change_mtu(struct net_device *dev, int new_mtu)  	struct net_device *primary_dev, *standby_dev;  	int ret = 0; -	primary_dev = rcu_dereference(nfo_info->primary_dev); +	primary_dev = rtnl_dereference(nfo_info->primary_dev);  	if (primary_dev) {  		ret = dev_set_mtu(primary_dev, new_mtu);  		if (ret)  			return ret;  	} -	standby_dev = rcu_dereference(nfo_info->standby_dev); +	standby_dev = rtnl_dereference(nfo_info->standby_dev);  	if (standby_dev) {  		ret = dev_set_mtu(standby_dev, new_mtu);  		if (ret) { @@ -527,7 +528,7 @@ static int net_failover_slave_register(struct net_device *slave_dev,  	netif_addr_lock_bh(failover_dev);  	dev_uc_sync_multiple(slave_dev, failover_dev); -	dev_uc_sync_multiple(slave_dev, failover_dev); +	dev_mc_sync_multiple(slave_dev, failover_dev);  	netif_addr_unlock_bh(failover_dev);  	err = vlan_vids_add_by_dev(slave_dev, failover_dev); |