}
 
        md_bytes = nfp_net_prep_port_id(skb);
-       if (unlikely(md_bytes < 0)) {
-               nfp_net_tx_xmit_more_flush(tx_ring);
-               dev_kfree_skb_any(skb);
-               return NETDEV_TX_OK;
-       }
+       if (unlikely(md_bytes < 0))
+               goto err_flush;
 
        /* Start with the head skbuf */
        dma_addr = dma_map_single(dp->dev, skb->data, skb_headlen(skb),
                                  DMA_TO_DEVICE);
        if (dma_mapping_error(dp->dev, dma_addr))
-               goto err_free;
+               goto err_dma_err;
 
        wr_idx = D_IDX(tx_ring, tx_ring->wr_p);
 
        tx_ring->txbufs[wr_idx].skb = NULL;
        tx_ring->txbufs[wr_idx].dma_addr = 0;
        tx_ring->txbufs[wr_idx].fidx = -2;
-err_free:
+err_dma_err:
        nn_dp_warn(dp, "Failed to map DMA TX buffer\n");
+err_flush:
        nfp_net_tx_xmit_more_flush(tx_ring);
        u64_stats_update_begin(&r_vec->tx_sync);
        r_vec->tx_errors++;