aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/macvlan.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-05-24 00:32:30 -0400
committerDavid S. Miller <davem@davemloft.net>2014-05-24 00:32:30 -0400
commit54e5c4def0614ab540fbdf68e45342a4af141702 (patch)
tree95a2f61c72336932e83d9e4180cd9739106d624b /drivers/net/macvlan.c
parentbe65de7174123e02477bd488db1a657caf0f9947 (diff)
parent1ee1ceafb572f1a925809168267a7962a4289de8 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/bonding/bond_alb.c drivers/net/ethernet/altera/altera_msgdma.c drivers/net/ethernet/altera/altera_sgdma.c net/ipv6/xfrm6_output.c Several cases of overlapping changes. The xfrm6_output.c has a bug fix which overlaps the renaming of skb->local_df to skb->ignore_df. In the Altera TSE driver cases, the register access cleanups in net-next overlapped with bug fixes done in net. Similarly a bug fix to send ALB packets in the bonding driver using the right source address overlaps with cleanups in net-next. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/macvlan.c')
-rw-r--r--drivers/net/macvlan.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index f4701da19a02..a665e902b989 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -528,8 +528,10 @@ static void macvlan_change_rx_flags(struct net_device *dev, int change)
528 struct macvlan_dev *vlan = netdev_priv(dev); 528 struct macvlan_dev *vlan = netdev_priv(dev);
529 struct net_device *lowerdev = vlan->lowerdev; 529 struct net_device *lowerdev = vlan->lowerdev;
530 530
531 if (change & IFF_ALLMULTI) 531 if (dev->flags & IFF_UP) {
532 dev_set_allmulti(lowerdev, dev->flags & IFF_ALLMULTI ? 1 : -1); 532 if (change & IFF_ALLMULTI)
533 dev_set_allmulti(lowerdev, dev->flags & IFF_ALLMULTI ? 1 : -1);
534 }
533} 535}
534 536
535static void macvlan_set_mac_lists(struct net_device *dev) 537static void macvlan_set_mac_lists(struct net_device *dev)
@@ -585,6 +587,11 @@ static struct lock_class_key macvlan_netdev_addr_lock_key;
585#define MACVLAN_STATE_MASK \ 587#define MACVLAN_STATE_MASK \
586 ((1<<__LINK_STATE_NOCARRIER) | (1<<__LINK_STATE_DORMANT)) 588 ((1<<__LINK_STATE_NOCARRIER) | (1<<__LINK_STATE_DORMANT))
587 589
590static int macvlan_get_nest_level(struct net_device *dev)
591{
592 return ((struct macvlan_dev *)netdev_priv(dev))->nest_level;
593}
594
588static void macvlan_set_lockdep_class_one(struct net_device *dev, 595static void macvlan_set_lockdep_class_one(struct net_device *dev,
589 struct netdev_queue *txq, 596 struct netdev_queue *txq,
590 void *_unused) 597 void *_unused)
@@ -595,8 +602,9 @@ static void macvlan_set_lockdep_class_one(struct net_device *dev,
595 602
596static void macvlan_set_lockdep_class(struct net_device *dev) 603static void macvlan_set_lockdep_class(struct net_device *dev)
597{ 604{
598 lockdep_set_class(&dev->addr_list_lock, 605 lockdep_set_class_and_subclass(&dev->addr_list_lock,
599 &macvlan_netdev_addr_lock_key); 606 &macvlan_netdev_addr_lock_key,
607 macvlan_get_nest_level(dev));
600 netdev_for_each_tx_queue(dev, macvlan_set_lockdep_class_one, NULL); 608 netdev_for_each_tx_queue(dev, macvlan_set_lockdep_class_one, NULL);
601} 609}
602 610
@@ -790,6 +798,7 @@ static const struct net_device_ops macvlan_netdev_ops = {
790 .ndo_fdb_add = macvlan_fdb_add, 798 .ndo_fdb_add = macvlan_fdb_add,
791 .ndo_fdb_del = macvlan_fdb_del, 799 .ndo_fdb_del = macvlan_fdb_del,
792 .ndo_fdb_dump = ndo_dflt_fdb_dump, 800 .ndo_fdb_dump = ndo_dflt_fdb_dump,
801 .ndo_get_lock_subclass = macvlan_get_nest_level,
793}; 802};
794 803
795void macvlan_common_setup(struct net_device *dev) 804void macvlan_common_setup(struct net_device *dev)
@@ -922,6 +931,7 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
922 vlan->dev = dev; 931 vlan->dev = dev;
923 vlan->port = port; 932 vlan->port = port;
924 vlan->set_features = MACVLAN_FEATURES; 933 vlan->set_features = MACVLAN_FEATURES;
934 vlan->nest_level = dev_get_nest_level(lowerdev, netif_is_macvlan) + 1;
925 935
926 vlan->mode = MACVLAN_MODE_VEPA; 936 vlan->mode = MACVLAN_MODE_VEPA;
927 if (data && data[IFLA_MACVLAN_MODE]) 937 if (data && data[IFLA_MACVLAN_MODE])