/* When the bond gets an skb to transmit that is already hardware accelerated VLAN tagged, and it needs to relay this skb to a slave that is not hw accel capable, the skb needs to be "unaccelerated", i.e. strip the hwaccel tag and re-insert it as part of the payload.  */
int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev)
/* When the bond gets an skb to transmit that is already hardware accelerated VLAN tagged, and it needs to relay this skb to a slave that is not hw accel capable, the skb needs to be "unaccelerated", i.e. strip the hwaccel tag and re-insert it as part of the payload.  */
int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev)
{
	unsigned short uninitialized_var(vlan_id);
	if (!list_empty(&bond->vlan_list) &&
	    !(slave_dev->features & NETIF_F_HW_VLAN_TX) &&
	    vlan_get_tag(skb, &vlan_id) == 0) {
		skb->dev = slave_dev;
		skb = vlan_put_tag(skb, vlan_id);
		if (!skb) {
			return 0;
		}
	} else {
		skb->dev = slave_dev;
	}
	skb->priority = 1;
	dev_queue_xmit(skb);
	return 0;
}