sfc: use hardware tx timestamps for more than PTP
authorBert Kenward <bkenward@solarflare.com>
Thu, 7 Apr 2022 15:24:02 +0000 (16:24 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 8 Apr 2022 21:43:10 +0000 (14:43 -0700)
The 8000 series and newer NICs all get hardware timestamps from the MAC
 and can provide timestamps on a normal TX queue, rather than via a slow
 path through the MC. As such we can use this path for any packet where a
 hardware timestamp is requested.
This also enables support for PTP over transports other than IPv4+UDP.

Signed-off-by: Bert Kenward <bkenward@solarflare.com>
Signed-off-by: Edward Cree <ecree@xilinx.com>
Link: https://lore.kernel.org/r/510652dc-54b4-0e11-657e-e37ee3ca26a9@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/sfc/tx.c

index 6983799..138bca6 100644 (file)
@@ -527,7 +527,8 @@ netdev_tx_t efx_hard_start_xmit(struct sk_buff *skb,
 
        /* PTP "event" packet */
        if (unlikely(efx_xmit_with_hwtstamp(skb)) &&
-           unlikely(efx_ptp_is_ptp_tx(efx, skb))) {
+           ((efx_ptp_use_mac_tx_timestamps(efx) && efx->ptp_data) ||
+           unlikely(efx_ptp_is_ptp_tx(efx, skb)))) {
                /* There may be existing transmits on the channel that are
                 * waiting for this packet to trigger the doorbell write.
                 * We need to send the packets at this point.