When running in a network namespace whose only link to the outside
world is a macvlan device, not being able to create a macvtap off of
it is a real pain.
So modify macvtap creation to automatically forward a creation of a
macvtap on a macvlan to become a creation of a macvtap on the
underlying network device, just like is currently done with
macvlan-on-macvlan devices.
v2: Use netif_is_macvlan and macvlan_dev_real_dev helpers to make it
    more clear what we're doing.
Signed-off-by: Kevin Wallace <kevin@pentabarf.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
        if (lowerdev == NULL)
                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.
         */
-       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])
                dev->mtu = lowerdev->mtu;