mirror of https://gitee.com/openkylin/linux.git
nfp: TX time stamp packets before HW doorbell is rung
TX completion may happen any time after HW queue was kicked.
We can't access the skb afterwards. Move the time stamping
before ringing the doorbell.
Fixes: 4c3523623d
("net: add driver for Netronome NFP4000/NFP6000 NIC VFs")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ee6c88bb75
commit
46f1c52e66
|
@ -895,6 +895,8 @@ static int nfp_net_tx(struct sk_buff *skb, struct net_device *netdev)
|
||||||
|
|
||||||
netdev_tx_sent_queue(nd_q, txbuf->real_len);
|
netdev_tx_sent_queue(nd_q, txbuf->real_len);
|
||||||
|
|
||||||
|
skb_tx_timestamp(skb);
|
||||||
|
|
||||||
tx_ring->wr_p += nr_frags + 1;
|
tx_ring->wr_p += nr_frags + 1;
|
||||||
if (nfp_net_tx_ring_should_stop(tx_ring))
|
if (nfp_net_tx_ring_should_stop(tx_ring))
|
||||||
nfp_net_tx_ring_stop(nd_q, tx_ring);
|
nfp_net_tx_ring_stop(nd_q, tx_ring);
|
||||||
|
@ -903,8 +905,6 @@ static int nfp_net_tx(struct sk_buff *skb, struct net_device *netdev)
|
||||||
if (!skb->xmit_more || netif_xmit_stopped(nd_q))
|
if (!skb->xmit_more || netif_xmit_stopped(nd_q))
|
||||||
nfp_net_tx_xmit_more_flush(tx_ring);
|
nfp_net_tx_xmit_more_flush(tx_ring);
|
||||||
|
|
||||||
skb_tx_timestamp(skb);
|
|
||||||
|
|
||||||
return NETDEV_TX_OK;
|
return NETDEV_TX_OK;
|
||||||
|
|
||||||
err_unmap:
|
err_unmap:
|
||||||
|
|
Loading…
Reference in New Issue