u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
                       struct net_device *sb_dev);
 netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev);
-netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
-                         struct mlx5e_tx_wqe *wqe, u16 pi, bool xmit_more);
+void mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
+                  struct mlx5e_tx_wqe *wqe, u16 pi, bool xmit_more);
 
 void mlx5e_trigger_irq(struct mlx5e_icosq *sq);
 void mlx5e_completion_event(struct mlx5_core_cq *mcq, struct mlx5_eqe *eqe);
 
                mlx5e_notify_hw(wq, sq->pc, sq->uar_map, cseg);
 }
 
-netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
-                         struct mlx5e_tx_wqe *wqe, u16 pi, bool xmit_more)
+void mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
+                  struct mlx5e_tx_wqe *wqe, u16 pi, bool xmit_more)
 {
        struct mlx5_wq_cyc *wq = &sq->wq;
        struct mlx5_wqe_ctrl_seg *cseg;
        mlx5e_txwqe_complete(sq, skb, opcode, ds_cnt, num_wqebbs, num_bytes,
                             num_dma, wi, cseg, xmit_more);
 
-       return NETDEV_TX_OK;
+       return;
 
 err_drop:
        stats->dropped++;
        dev_kfree_skb_any(skb);
-
-       return NETDEV_TX_OK;
 }
 
 netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev)
 
        /* might send skbs and update wqe and pi */
        if (unlikely(!mlx5e_accel_handle_tx(skb, sq, dev, &wqe, &pi)))
-               return NETDEV_TX_OK;
+               goto out;
+
+       mlx5e_sq_xmit(sq, skb, wqe, pi, netdev_xmit_more());
 
-       return mlx5e_sq_xmit(sq, skb, wqe, pi, netdev_xmit_more());
+out:
+       return NETDEV_TX_OK;
 }
 
 bool mlx5e_poll_tx_cq(struct mlx5e_cq *cq, int napi_budget)
        dseg->av.key.qkey.qkey = cpu_to_be32(dqkey);
 }
 
-netdev_tx_t mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
-                         struct mlx5_av *av, u32 dqpn, u32 dqkey,
-                         bool xmit_more)
+void mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
+                  struct mlx5_av *av, u32 dqpn, u32 dqkey, bool xmit_more)
 {
        struct mlx5i_tx_wqe *wqe;
 
        mlx5e_txwqe_complete(sq, skb, opcode, ds_cnt, num_wqebbs, num_bytes,
                             num_dma, wi, cseg, xmit_more);
 
-       return NETDEV_TX_OK;
+       return;
 
 err_drop:
        stats->dropped++;
        dev_kfree_skb_any(skb);
-
-       return NETDEV_TX_OK;
 }
 #endif
 
        struct mlx5_ib_ah *mah   = to_mah(address);
        struct mlx5i_priv *ipriv = epriv->ppriv;
 
-       return mlx5i_sq_xmit(sq, skb, &mah->av, dqpn, ipriv->qkey, netdev_xmit_more());
+       mlx5i_sq_xmit(sq, skb, &mah->av, dqpn, ipriv->qkey, netdev_xmit_more());
+
+       return NETDEV_TX_OK;
 }
 
 static void mlx5i_set_pkey_index(struct net_device *netdev, int id)
 
 #define MLX5I_SQ_FETCH_WQE(sq, pi) \
        ((struct mlx5i_tx_wqe *)mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5i_tx_wqe)))
 
-netdev_tx_t mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
-                         struct mlx5_av *av, u32 dqpn, u32 dqkey,
-                         bool xmit_more);
+void mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
+                  struct mlx5_av *av, u32 dqpn, u32 dqkey, bool xmit_more);
 void mlx5i_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
 void mlx5i_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats);