summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim Fedorenko <vadfed@meta.com>2024-10-08 11:14:32 -0700
committerPaolo Abeni <pabeni@redhat.com>2024-10-10 12:52:11 +0200
commitbe65bfc957eb70aecdf3e351ec9fc3f067598f9e (patch)
treee947d605fdbd5f32a2af47fb575b26954efd6696
parent9e542ff8b79ae1871074d3a7dca7de9e7374eeda (diff)
eth: fbnic: add software TX timestamping support
Add software TX timestamping support. RX software timestamping is implemented in the core and there is no need to provide special flag in the driver anymore. Signed-off-by: Vadim Fedorenko <vadfed@meta.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-rw-r--r--drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c11
-rw-r--r--drivers/net/ethernet/meta/fbnic/fbnic_txrx.c3
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c b/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
index 5d980e1789414..ffc773014e0fd 100644
--- a/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
+++ b/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
@@ -6,6 +6,16 @@
#include "fbnic_netdev.h"
#include "fbnic_tlv.h"
+static int
+fbnic_get_ts_info(struct net_device *netdev,
+ struct kernel_ethtool_ts_info *tsinfo)
+{
+ tsinfo->so_timestamping =
+ SOF_TIMESTAMPING_TX_SOFTWARE;
+
+ return 0;
+}
+
static void
fbnic_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
{
@@ -66,6 +76,7 @@ fbnic_get_eth_mac_stats(struct net_device *netdev,
static const struct ethtool_ops fbnic_ethtool_ops = {
.get_drvinfo = fbnic_get_drvinfo,
+ .get_ts_info = fbnic_get_ts_info,
.get_eth_mac_stats = fbnic_get_eth_mac_stats,
};
diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c b/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c
index 6a6d7e22f1a72..8337d49bad0bb 100644
--- a/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c
+++ b/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c
@@ -205,6 +205,9 @@ fbnic_tx_map(struct fbnic_ring *ring, struct sk_buff *skb, __le64 *meta)
ring->tail = tail;
+ /* Record SW timestamp */
+ skb_tx_timestamp(skb);
+
/* Verify there is room for another packet */
fbnic_maybe_stop_tx(skb->dev, ring, FBNIC_MAX_SKB_DESC);