]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/8021q/vlan.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / net / 8021q / vlan.c
index 52077ca22072d6eeab3e12db0030fb5f3c2db68c..6e64f7c6a2e9265b2afecbe6eb8f09c30bef55d6 100644 (file)
@@ -272,13 +272,11 @@ static int register_vlan_device(struct net_device *real_dev, u16 vlan_id)
                snprintf(name, IFNAMSIZ, "vlan%.4i", vlan_id);
        }
 
-       new_dev = alloc_netdev_mq(sizeof(struct vlan_dev_info), name,
-                                 vlan_setup, real_dev->num_tx_queues);
+       new_dev = alloc_netdev(sizeof(struct vlan_dev_info), name, vlan_setup);
 
        if (new_dev == NULL)
                return -ENOBUFS;
 
-       netif_copy_real_num_queues(new_dev, real_dev);
        dev_net_set(new_dev, net);
        /* need 4 bytes for extra VLAN header info,
         * hope the underlying device can handle it.
@@ -334,12 +332,15 @@ static void vlan_transfer_features(struct net_device *dev,
        vlandev->features &= ~dev->vlan_features;
        vlandev->features |= dev->features & dev->vlan_features;
        vlandev->gso_max_size = dev->gso_max_size;
+
+       if (dev->features & NETIF_F_HW_VLAN_TX)
+               vlandev->hard_header_len = dev->hard_header_len;
+       else
+               vlandev->hard_header_len = dev->hard_header_len + VLAN_HLEN;
+
 #if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
        vlandev->fcoe_ddp_xid = dev->fcoe_ddp_xid;
 #endif
-       vlandev->real_num_tx_queues = dev->real_num_tx_queues;
-       BUG_ON(vlandev->real_num_tx_queues > vlandev->num_tx_queues);
-
        if (old_features != vlandev->features)
                netdev_features_change(vlandev);
 }