]> Pileus Git - ~andy/linux/blobdiff - net/8021q/vlan.c
vlan: Set hard_header_len according to available acceleration
[~andy/linux] / net / 8021q / vlan.c
index b3d17d1c49c3fbecdd5701da18c14c9767f7d969..175273f38cb1bd59f5aeb88cb8c815033475dfe8 100644 (file)
@@ -301,15 +301,17 @@ static void vlan_sync_address(struct net_device *dev,
            !ether_addr_equal(vlandev->dev_addr, dev->dev_addr))
                dev_uc_add(dev, vlandev->dev_addr);
 
-       memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN);
+       ether_addr_copy(vlan->real_dev_addr, dev->dev_addr);
 }
 
 static void vlan_transfer_features(struct net_device *dev,
                                   struct net_device *vlandev)
 {
+       struct vlan_dev_priv *vlan = vlan_dev_priv(vlandev);
+
        vlandev->gso_max_size = dev->gso_max_size;
 
-       if (dev->features & NETIF_F_HW_VLAN_CTAG_TX)
+       if (vlan_hw_offload_capable(dev->features, vlan->vlan_proto))
                vlandev->hard_header_len = dev->hard_header_len;
        else
                vlandev->hard_header_len = dev->hard_header_len + VLAN_HLEN;