|
@@ -820,13 +820,11 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
|
|
if (lowerdev == NULL)
|
|
if (lowerdev == NULL)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
- /* When creating macvlans on top of other macvlans - use
|
|
|
|
|
|
+ /* When creating macvlans or macvtaps on top of other macvlans - use
|
|
* the real device as the lowerdev.
|
|
* the real device as the lowerdev.
|
|
*/
|
|
*/
|
|
- if (lowerdev->rtnl_link_ops == dev->rtnl_link_ops) {
|
|
|
|
- struct macvlan_dev *lowervlan = netdev_priv(lowerdev);
|
|
|
|
- lowerdev = lowervlan->lowerdev;
|
|
|
|
- }
|
|
|
|
|
|
+ if (netif_is_macvlan(lowerdev))
|
|
|
|
+ lowerdev = macvlan_dev_real_dev(lowerdev);
|
|
|
|
|
|
if (!tb[IFLA_MTU])
|
|
if (!tb[IFLA_MTU])
|
|
dev->mtu = lowerdev->mtu;
|
|
dev->mtu = lowerdev->mtu;
|