]> www.infradead.org Git - nvme.git/commitdiff
net: ravb: Only advertise Rx/Tx timestamps if hardware supports it
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Mon, 14 Oct 2024 12:43:43 +0000 (14:43 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 16 Oct 2024 01:41:10 +0000 (18:41 -0700)
Recent work moving the reporting of Rx software timestamps to the core
[1] highlighted an issue where hardware time stamping was advertised
for the platforms where it is not supported.

Fix this by covering advertising support for hardware timestamps only if
the hardware supports it. Due to the Tx implementation in RAVB software
Tx timestamping is also only considered if the hardware supports
hardware timestamps. This should be addressed in future, but this fix
only reflects what the driver currently implements.

1. Commit 277901ee3a26 ("ravb: Remove setting of RX software timestamp")

Fixes: 7e09a052dc4e ("ravb: Exclude gPTP feature support for RZ/G2L")
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Tested-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Link: https://patch.msgid.link/20241014124343.3875285-1-niklas.soderlund+renesas@ragnatech.se
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/renesas/ravb_main.c

index d2a6518532f37a6b3143eb99fea42e0bf568f1fc..907af4651c55346557eca5b3629c9ded4b5f4abc 100644 (file)
@@ -1750,20 +1750,19 @@ static int ravb_get_ts_info(struct net_device *ndev,
        struct ravb_private *priv = netdev_priv(ndev);
        const struct ravb_hw_info *hw_info = priv->info;
 
-       info->so_timestamping =
-               SOF_TIMESTAMPING_TX_SOFTWARE |
-               SOF_TIMESTAMPING_TX_HARDWARE |
-               SOF_TIMESTAMPING_RX_HARDWARE |
-               SOF_TIMESTAMPING_RAW_HARDWARE;
-       info->tx_types = (1 << HWTSTAMP_TX_OFF) | (1 << HWTSTAMP_TX_ON);
-       info->rx_filters =
-               (1 << HWTSTAMP_FILTER_NONE) |
-               (1 << HWTSTAMP_FILTER_PTP_V2_L2_EVENT) |
-               (1 << HWTSTAMP_FILTER_ALL);
-       if (hw_info->gptp || hw_info->ccc_gac)
+       if (hw_info->gptp || hw_info->ccc_gac) {
+               info->so_timestamping =
+                       SOF_TIMESTAMPING_TX_SOFTWARE |
+                       SOF_TIMESTAMPING_TX_HARDWARE |
+                       SOF_TIMESTAMPING_RX_HARDWARE |
+                       SOF_TIMESTAMPING_RAW_HARDWARE;
+               info->tx_types = (1 << HWTSTAMP_TX_OFF) | (1 << HWTSTAMP_TX_ON);
+               info->rx_filters =
+                       (1 << HWTSTAMP_FILTER_NONE) |
+                       (1 << HWTSTAMP_FILTER_PTP_V2_L2_EVENT) |
+                       (1 << HWTSTAMP_FILTER_ALL);
                info->phc_index = ptp_clock_index(priv->ptp.clock);
-       else
-               info->phc_index = 0;
+       }
 
        return 0;
 }