return NETDEV_TX_BUSY;
        }
 
-#ifdef CONFIG_PCI_IOV
-       if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)
-               tx_flags |= IXGBE_TX_FLAGS_TXSW;
-
-#endif
        /* if we have a HW VLAN tag being added default to the HW one */
        if (vlan_tx_tag_present(skb)) {
                tx_flags |= vlan_tx_tag_get(skb) << IXGBE_TX_FLAGS_VLAN_SHIFT;
                        goto out_drop;
 
                protocol = vhdr->h_vlan_encapsulated_proto;
-               tx_flags |= ntohs(vhdr->h_vlan_TCI) << IXGBE_TX_FLAGS_VLAN_SHIFT;
+               tx_flags |= ntohs(vhdr->h_vlan_TCI) <<
+                                 IXGBE_TX_FLAGS_VLAN_SHIFT;
                tx_flags |= IXGBE_TX_FLAGS_SW_VLAN;
        }
 
+#ifdef CONFIG_PCI_IOV
+       /*
+        * Use the l2switch_enable flag - would be false if the DMA
+        * Tx switch had been disabled.
+        */
+       if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)
+               tx_flags |= IXGBE_TX_FLAGS_TXSW;
+
+#endif
        /* DCB maps skb priorities 0-7 onto 3 bit PCP of VLAN tag. */
        if ((adapter->flags & IXGBE_FLAG_DCB_ENABLED) &&
            ((tx_flags & (IXGBE_TX_FLAGS_HW_VLAN | IXGBE_TX_FLAGS_SW_VLAN)) ||