From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FC5D221F38; Wed, 4 Jun 2025 01:04:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748999090; cv=none; b=NVvOZP564YN0KfEEigcsow75E5SJw2l3djfL0ZI2zaKVSG0V1uW5BQlF/xhzxqnB0eCBdXqSzFlU2h2GyMOq9dxZbAi27bVfDeWvS4sS3XV9y+4s1ZdAZLwDWZYpOZUI3aa5E/QQ2mfMXAT2LeX5/IS2rn5e4pH+LWCnIDns/oM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748999090; c=relaxed/simple; bh=U2l+RvcdGPXyFuGMERH0HGOjlz9AOyis6dD/0emDhbU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=LQ5AqTDIIqzKDPF2Dij8Hl7kvW1J4EvkN18lmoZbU5XMg7t7hHsMSU/7vp7uRsHPp0FFCqdJdmCR0UK9yrml4VaJ0BFZJkNjqSvtlZotKl1qhYRfKXsJQBIXFZDcDpNCtEOI3ksXawMrkUUovJqW/8VRth1EYOSxv73o/gU7hK8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Gd9ACUfz; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Gd9ACUfz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 257A4C4CEEF; Wed, 4 Jun 2025 01:04:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748999090; bh=U2l+RvcdGPXyFuGMERH0HGOjlz9AOyis6dD/0emDhbU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Gd9ACUfz2MAoXJkiMBF32Ip/bBtT9sa7VvVxb5wXxL82G3oUnnP0GDXIc11j/lp4q Q12I693vQgNkXAZQBMxQIqfTBkD3kARAb+4W+U5Sc+MBpnpaxeKU1+jXtTx3uImKIN aa8JleefOixh7nFEZn6bUC/XIG/vus/CU8FpaF7YKwXDqnrK4wSJmKM+oAcW296OVG vesKPI88Se7+ufTzr0uuY35u9XTq1DbEau+caemnjDCLiYFrGhBdyRycAKnFQNartp hGR2sD9/B0ky5/4nL+aBPIY4/jt4O9ApohTATLb4nIjR1xiOCRz+eb2VyOao3gdldj sg8ifMWhU6XRg== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Jason Xing , Tariq Toukan , Jakub Kicinski , Sasha Levin , netdev@vger.kernel.org, linux-rdma@vger.kernel.org Subject: [PATCH AUTOSEL 6.1 25/46] net: mlx4: add SOF_TIMESTAMPING_TX_SOFTWARE flag when getting ts info Date: Tue, 3 Jun 2025 21:03:43 -0400 Message-Id: <20250604010404.5109-25-sashal@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250604010404.5109-1-sashal@kernel.org> References: <20250604010404.5109-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.1.140 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Jason Xing [ Upstream commit b86bcfee30576b752302c55693fff97242b35dfd ] As mlx4 has implemented skb_tx_timestamp() in mlx4_en_xmit(), the SOFTWARE flag is surely needed when users are trying to get timestamp information. Signed-off-by: Jason Xing Reviewed-by: Tariq Toukan Link: https://patch.msgid.link/20250510093442.79711-1-kerneljasonxing@gmail.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- Perfect! Now I can see that `skb_tx_timestamp(skb)` is called in the `mlx4_en_xmit()` function, which is the main transmit function. This confirms that the mlx4 driver does implement software timestamping. Now let me compare this to the similar commits to see the pattern: **YES** This commit should be backported to stable kernel trees. **Extensive Explanation:** This commit addresses a clear inconsistency bug where the mlx4 driver implements software timestamping functionality but fails to advertise this capability to userspace through the ethtool timestamping info interface. **Analysis of the fix:** 1. **The Problem**: The mlx4 driver calls `skb_tx_timestamp(skb)` in `mlx4_en_xmit()` at line 1091 of `/drivers/net/ethernet/mellanox/mlx4/en_tx.c`, which means it properly implements software TX timestamping. However, in `mlx4_en_get_ts_info()`, it only advertises hardware timestamping capabilities (`SOF_TIMESTAMPING_TX_HARDWARE`, `SOF_TIMESTAMPING_RX_HARDWARE`, `SOF_TIMESTAMPING_RAW_HARDWARE`) but omits the `SOF_TIMESTAMPING_TX_SOFTWARE` flag. 2. **The Fix**: The change adds a single line `SOF_TIMESTAMPING_TX_SOFTWARE |` to the `info->so_timestamping` field when hardware timestamping is supported, correctly advertising both hardware and software timestamping capabilities. 3. **Impact**: This is a user-facing API correctness issue. Applications checking timestamping capabilities via ethtool would incorrectly believe software timestamping is not supported, even though the driver implements it. **Comparison with similar commits:** - **Similar Commit #1 (YES)**: Also fixed a timestamping bug in mlx4, showing these are important fixes - **Similar Commit #3 (YES)**: Fixed incorrect timestamping capability reporting in mlx5 by removing false software timestamping indication - **Similar Commit #5 (YES)**: Fixed timestamping capabilities reporting using wrong BIT() macro in mlx5 The pattern shows that timestamping capability reporting bugs are consistently considered backport-worthy because they affect user-visible API behavior. **Backport Criteria Assessment:** ✅ **Fixes a user- affecting bug**: Applications cannot detect software timestamping support ✅ **Small, contained change**: Single line addition with no functional logic changes ✅ **No architectural changes**: Only fixes capability reporting ✅ **Low regression risk**: Only adds a missing flag, doesn't change driver behavior ✅ **Clear side effects**: None beyond correctly advertising existing functionality ✅ **Follows stable rules**: Important API correctness fix with minimal risk The fix is identical in nature to Similar Commit #3 (marked YES) but in reverse - where mlx5 removed false software timestamping advertisement, this adds the missing software timestamping advertisement for mlx4 where it's actually implemented. drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c index 7d45f1d55f799..d1a319ad6af1a 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c @@ -1916,6 +1916,7 @@ static int mlx4_en_get_ts_info(struct net_device *dev, if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) { info->so_timestamping |= SOF_TIMESTAMPING_TX_HARDWARE | + SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_RX_HARDWARE | SOF_TIMESTAMPING_RAW_HARDWARE; -- 2.39.5