Message ID | 20210423093355.8665-1-yangbo.lu@nxp.com |
---|---|
State | New |
Headers | show |
Series | [net-next,v2] enetc: fix locking for one-step timestamping packet transfer | expand |
Hello: This patch was applied to netdev/net-next.git (refs/heads/master): On Fri, 23 Apr 2021 17:33:55 +0800 you wrote: > The previous patch to support PTP Sync packet one-step timestamping > described one-step timestamping packet handling logic as below in > commit message: > > - Trasmit packet immediately if no other one in transfer, or queue to > skb queue if there is already one in transfer. > The test_and_set_bit_lock() is used here to lock and check state. > - Start a work when complete transfer on hardware, to release the bit > lock and to send one skb in skb queue if has. > > [...] Here is the summary with links: - [net-next,v2] enetc: fix locking for one-step timestamping packet transfer https://git.kernel.org/netdev/net-next/c/7ce9c3d363ac You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 4f23829e7317..3ca93adb9662 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -321,6 +321,15 @@ static netdev_tx_t enetc_start_xmit(struct sk_buff *skb, struct enetc_bdr *tx_ring; int count; + /* Queue one-step Sync packet if already locked */ + if (skb->cb[0] & ENETC_F_TX_ONESTEP_SYNC_TSTAMP) { + if (test_and_set_bit_lock(ENETC_TX_ONESTEP_TSTAMP_IN_PROGRESS, + &priv->flags)) { + skb_queue_tail(&priv->tx_skbs, skb); + return NETDEV_TX_OK; + } + } + tx_ring = priv->tx_ring[skb->queue_mapping]; if (unlikely(skb_shinfo(skb)->nr_frags > ENETC_MAX_SKB_FRAGS)) @@ -372,15 +381,6 @@ netdev_tx_t enetc_xmit(struct sk_buff *skb, struct net_device *ndev) skb->cb[0] = ENETC_F_TX_TSTAMP; } - /* Queue one-step Sync packet if already locked */ - if (skb->cb[0] & ENETC_F_TX_ONESTEP_SYNC_TSTAMP) { - if (test_and_set_bit_lock(ENETC_TX_ONESTEP_TSTAMP_IN_PROGRESS, - &priv->flags)) { - skb_queue_tail(&priv->tx_skbs, skb); - return NETDEV_TX_OK; - } - } - return enetc_start_xmit(skb, ndev); }