goto cleanup;
        }
 
-       skb_set_queue_mapping(skb, attr->queue_mapping);
-       ret = dev_queue_xmit(skb);
+       ret = dev_direct_xmit(skb, attr->queue_mapping);
        if (ret)
                goto cleanup;
 
                        goto vlan_del;
                }
 
-               skb_set_queue_mapping(skb, 0);
-               ret = dev_queue_xmit(skb);
+               ret = dev_direct_xmit(skb, 0);
                if (ret)
                        goto vlan_del;
 
                        goto vlan_del;
                }
 
-               skb_set_queue_mapping(skb, 0);
-               ret = dev_queue_xmit(skb);
+               ret = dev_direct_xmit(skb, 0);
                if (ret)
                        goto vlan_del;
 
        __vlan_hwaccel_put_tag(skb, htons(proto), tpriv->vlan_id);
        skb->protocol = htons(proto);
 
-       skb_set_queue_mapping(skb, 0);
-       ret = dev_queue_xmit(skb);
+       ret = dev_direct_xmit(skb, 0);
        if (ret)
                goto vlan_del;
 
        if (ret)
                goto cleanup;
 
-       skb_set_queue_mapping(skb, 0);
-       ret = dev_queue_xmit(skb);
+       ret = dev_direct_xmit(skb, 0);
        if (ret)
                goto cleanup_promisc;
 
 {
        struct stmmac_priv *priv = netdev_priv(dev);
        int count = stmmac_selftest_get_count(priv);
-       int carrier = netif_carrier_ok(dev);
        int i, ret;
 
        memset(buf, 0, sizeof(*buf) * count);
                netdev_err(priv->dev, "Only offline tests are supported\n");
                etest->flags |= ETH_TEST_FL_FAILED;
                return;
-       } else if (!carrier) {
+       } else if (!netif_carrier_ok(dev)) {
                netdev_err(priv->dev, "You need valid Link to execute tests\n");
                etest->flags |= ETH_TEST_FL_FAILED;
                return;
        }
 
-       /* We don't want extra traffic */
-       netif_carrier_off(dev);
-
        /* Wait for queues drain */
        msleep(200);
 
                        break;
                }
        }
-
-       /* Restart everything */
-       if (carrier)
-               netif_carrier_on(dev);
 }
 
 void stmmac_selftest_get_strings(struct stmmac_priv *priv, u8 *data)