mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-30 02:21:15 +00:00
nfp: count all failed TX attempts as errors
Currently if we need to modify the head of the skb and allocation fails we would free the skb and not increment the error counter. Make sure all errors are counted. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ca72efb6bd
commit
76581af254
1 changed files with 5 additions and 7 deletions
|
@ -873,17 +873,14 @@ static int nfp_net_tx(struct sk_buff *skb, struct net_device *netdev)
|
|||
}
|
||||
|
||||
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);
|
||||
|
||||
|
@ -979,8 +976,9 @@ err_unmap:
|
|||
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++;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue