Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'rx-software-timestamp-for-all'

Gal Pressman says:

====================
RX software timestamp for all

All devices support SOF_TIMESTAMPING_RX_SOFTWARE by virtue of
net_timestamp_check() being called in the device independent code.
Following Willem's suggestion [1], make it so drivers do not have to
handle SOF_TIMESTAMPING_RX_SOFTWARE and SOF_TIMESTAMPING_SOFTWARE, nor
setting of the PHC index to -1.

All drivers will now report RX software timestamp as supported.
The series is limited to 15 patches, I will submit other drivers in
subsequent submissions.

[1] https://lore.kernel.org/netdev/661550e348224_23a2b2294f7@willemb.c.googlers.com.notmuch/

v1: https://lore.kernel.org/20240829144253.122215-1-gal@nvidia.com
====================

Link: https://patch.msgid.link/20240901112803.212753-1-gal@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+16 -58
-3
drivers/net/can/dev/dev.c
··· 380 380 { 381 381 info->so_timestamping = 382 382 SOF_TIMESTAMPING_TX_SOFTWARE | 383 - SOF_TIMESTAMPING_RX_SOFTWARE | 384 - SOF_TIMESTAMPING_SOFTWARE | 385 383 SOF_TIMESTAMPING_TX_HARDWARE | 386 384 SOF_TIMESTAMPING_RX_HARDWARE | 387 385 SOF_TIMESTAMPING_RAW_HARDWARE; 388 - info->phc_index = -1; 389 386 info->tx_types = BIT(HWTSTAMP_TX_ON); 390 387 info->rx_filters = BIT(HWTSTAMP_FILTER_ALL); 391 388
-3
drivers/net/can/peak_canfd/peak_canfd.c
··· 781 781 { 782 782 info->so_timestamping = 783 783 SOF_TIMESTAMPING_TX_SOFTWARE | 784 - SOF_TIMESTAMPING_RX_SOFTWARE | 785 - SOF_TIMESTAMPING_SOFTWARE | 786 784 SOF_TIMESTAMPING_RX_HARDWARE | 787 785 SOF_TIMESTAMPING_RAW_HARDWARE; 788 - info->phc_index = -1; 789 786 info->tx_types = BIT(HWTSTAMP_TX_OFF); 790 787 info->rx_filters = BIT(HWTSTAMP_FILTER_ALL); 791 788
-3
drivers/net/can/usb/peak_usb/pcan_usb_core.c
··· 901 901 { 902 902 info->so_timestamping = 903 903 SOF_TIMESTAMPING_TX_SOFTWARE | 904 - SOF_TIMESTAMPING_RX_SOFTWARE | 905 - SOF_TIMESTAMPING_SOFTWARE | 906 904 SOF_TIMESTAMPING_RX_HARDWARE | 907 905 SOF_TIMESTAMPING_RAW_HARDWARE; 908 - info->phc_index = -1; 909 906 info->tx_types = BIT(HWTSTAMP_TX_OFF); 910 907 info->rx_filters = BIT(HWTSTAMP_FILTER_ALL); 911 908
-4
drivers/net/ethernet/engleder/tsnep_ethtool.c
··· 310 310 struct tsnep_adapter *adapter = netdev_priv(netdev); 311 311 312 312 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 313 - SOF_TIMESTAMPING_RX_SOFTWARE | 314 - SOF_TIMESTAMPING_SOFTWARE | 315 313 SOF_TIMESTAMPING_TX_HARDWARE | 316 314 SOF_TIMESTAMPING_RX_HARDWARE | 317 315 SOF_TIMESTAMPING_RAW_HARDWARE; 318 316 319 317 if (adapter->ptp_clock) 320 318 info->phc_index = ptp_clock_index(adapter->ptp_clock); 321 - else 322 - info->phc_index = -1; 323 319 324 320 info->tx_types = BIT(HWTSTAMP_TX_OFF) | 325 321 BIT(HWTSTAMP_TX_ON);
+2 -8
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c
··· 849 849 if (phc_idx) { 850 850 info->phc_index = *phc_idx; 851 851 symbol_put(enetc_phc_index); 852 - } else { 853 - info->phc_index = -1; 854 852 } 855 853 856 854 #ifdef CONFIG_FSL_ENETC_PTP_CLOCK 857 855 info->so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE | 858 856 SOF_TIMESTAMPING_RX_HARDWARE | 859 857 SOF_TIMESTAMPING_RAW_HARDWARE | 860 - SOF_TIMESTAMPING_TX_SOFTWARE | 861 - SOF_TIMESTAMPING_RX_SOFTWARE | 862 - SOF_TIMESTAMPING_SOFTWARE; 858 + SOF_TIMESTAMPING_TX_SOFTWARE; 863 859 864 860 info->tx_types = (1 << HWTSTAMP_TX_OFF) | 865 861 (1 << HWTSTAMP_TX_ON) | ··· 863 867 info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) | 864 868 (1 << HWTSTAMP_FILTER_ALL); 865 869 #else 866 - info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE | 867 - SOF_TIMESTAMPING_TX_SOFTWARE | 868 - SOF_TIMESTAMPING_SOFTWARE; 870 + info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE; 869 871 #endif 870 872 return 0; 871 873 }
-4
drivers/net/ethernet/freescale/fec_main.c
··· 2775 2775 if (fep->bufdesc_ex) { 2776 2776 2777 2777 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 2778 - SOF_TIMESTAMPING_RX_SOFTWARE | 2779 - SOF_TIMESTAMPING_SOFTWARE | 2780 2778 SOF_TIMESTAMPING_TX_HARDWARE | 2781 2779 SOF_TIMESTAMPING_RX_HARDWARE | 2782 2780 SOF_TIMESTAMPING_RAW_HARDWARE; 2783 2781 if (fep->ptp_clock) 2784 2782 info->phc_index = ptp_clock_index(fep->ptp_clock); 2785 - else 2786 - info->phc_index = -1; 2787 2783 2788 2784 info->tx_types = (1 << HWTSTAMP_TX_OFF) | 2789 2785 (1 << HWTSTAMP_TX_ON);
+2 -8
drivers/net/ethernet/freescale/gianfar_ethtool.c
··· 1455 1455 struct device_node *ptp_node; 1456 1456 struct ptp_qoriq *ptp = NULL; 1457 1457 1458 - info->phc_index = -1; 1459 - 1460 1458 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)) { 1461 - info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE | 1462 - SOF_TIMESTAMPING_TX_SOFTWARE | 1463 - SOF_TIMESTAMPING_SOFTWARE; 1459 + info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE; 1464 1460 return 0; 1465 1461 } 1466 1462 ··· 1474 1478 info->so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE | 1475 1479 SOF_TIMESTAMPING_RX_HARDWARE | 1476 1480 SOF_TIMESTAMPING_RAW_HARDWARE | 1477 - SOF_TIMESTAMPING_RX_SOFTWARE | 1478 - SOF_TIMESTAMPING_TX_SOFTWARE | 1479 - SOF_TIMESTAMPING_SOFTWARE; 1481 + SOF_TIMESTAMPING_TX_SOFTWARE; 1480 1482 info->tx_types = (1 << HWTSTAMP_TX_OFF) | 1481 1483 (1 << HWTSTAMP_TX_ON); 1482 1484 info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) |
-4
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c
··· 389 389 } 390 390 391 391 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 392 - SOF_TIMESTAMPING_RX_SOFTWARE | 393 - SOF_TIMESTAMPING_SOFTWARE | 394 392 SOF_TIMESTAMPING_TX_HARDWARE | 395 393 SOF_TIMESTAMPING_RX_HARDWARE | 396 394 SOF_TIMESTAMPING_RAW_HARDWARE; 397 395 398 396 if (hdev->ptp->clock) 399 397 info->phc_index = ptp_clock_index(hdev->ptp->clock); 400 - else 401 - info->phc_index = -1; 402 398 403 399 info->tx_types = BIT(HWTSTAMP_TX_OFF) | BIT(HWTSTAMP_TX_ON); 404 400
-2
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
··· 5268 5268 5269 5269 info->phc_index = mvpp22_tai_ptp_clock_index(port->priv->tai); 5270 5270 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 5271 - SOF_TIMESTAMPING_RX_SOFTWARE | 5272 - SOF_TIMESTAMPING_SOFTWARE | 5273 5271 SOF_TIMESTAMPING_TX_HARDWARE | 5274 5272 SOF_TIMESTAMPING_RX_HARDWARE | 5275 5273 SOF_TIMESTAMPING_RAW_HARDWARE;
-2
drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
··· 962 962 return ethtool_op_get_ts_info(netdev, info); 963 963 964 964 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 965 - SOF_TIMESTAMPING_RX_SOFTWARE | 966 - SOF_TIMESTAMPING_SOFTWARE | 967 965 SOF_TIMESTAMPING_TX_HARDWARE | 968 966 SOF_TIMESTAMPING_RX_HARDWARE | 969 967 SOF_TIMESTAMPING_RAW_HARDWARE;
-2
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
··· 989 989 info->phc_index = ptp_clock_index(lif->phc->ptp); 990 990 991 991 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 992 - SOF_TIMESTAMPING_RX_SOFTWARE | 993 - SOF_TIMESTAMPING_SOFTWARE | 994 992 SOF_TIMESTAMPING_TX_HARDWARE | 995 993 SOF_TIMESTAMPING_RX_HARDWARE | 996 994 SOF_TIMESTAMPING_RAW_HARDWARE;
+2 -2
drivers/net/ethernet/renesas/ravb_main.c
··· 1744 1744 1745 1745 info->so_timestamping = 1746 1746 SOF_TIMESTAMPING_TX_SOFTWARE | 1747 - SOF_TIMESTAMPING_RX_SOFTWARE | 1748 - SOF_TIMESTAMPING_SOFTWARE | 1749 1747 SOF_TIMESTAMPING_TX_HARDWARE | 1750 1748 SOF_TIMESTAMPING_RX_HARDWARE | 1751 1749 SOF_TIMESTAMPING_RAW_HARDWARE; ··· 1754 1756 (1 << HWTSTAMP_FILTER_ALL); 1755 1757 if (hw_info->gptp || hw_info->ccc_gac) 1756 1758 info->phc_index = ptp_clock_index(priv->ptp.clock); 1759 + else 1760 + info->phc_index = 0; 1757 1761 1758 1762 return 0; 1759 1763 }
-2
drivers/net/ethernet/renesas/rswitch.c
··· 1815 1815 1816 1816 info->phc_index = ptp_clock_index(rdev->priv->ptp_priv->clock); 1817 1817 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 1818 - SOF_TIMESTAMPING_RX_SOFTWARE | 1819 - SOF_TIMESTAMPING_SOFTWARE | 1820 1818 SOF_TIMESTAMPING_TX_HARDWARE | 1821 1819 SOF_TIMESTAMPING_RX_HARDWARE | 1822 1820 SOF_TIMESTAMPING_RAW_HARDWARE;
-2
drivers/net/ethernet/renesas/rtsn.c
··· 1219 1219 1220 1220 info->phc_index = ptp_clock_index(priv->ptp_priv->clock); 1221 1221 info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | 1222 - SOF_TIMESTAMPING_RX_SOFTWARE | 1223 - SOF_TIMESTAMPING_SOFTWARE | 1224 1222 SOF_TIMESTAMPING_TX_HARDWARE | 1225 1223 SOF_TIMESTAMPING_RX_HARDWARE | 1226 1224 SOF_TIMESTAMPING_RAW_HARDWARE;
+10 -9
net/ethtool/common.c
··· 692 692 { 693 693 const struct ethtool_ops *ops = dev->ethtool_ops; 694 694 struct phy_device *phydev = dev->phydev; 695 + int err = 0; 695 696 696 697 memset(info, 0, sizeof(*info)); 697 698 info->cmd = ETHTOOL_GET_TS_INFO; 698 - 699 - if (phy_is_default_hwtstamp(phydev) && phy_has_tsinfo(phydev)) 700 - return phy_ts_info(phydev, info); 701 - if (ops->get_ts_info) 702 - return ops->get_ts_info(dev, info); 703 - 704 - info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE | 705 - SOF_TIMESTAMPING_SOFTWARE; 706 699 info->phc_index = -1; 707 700 708 - return 0; 701 + if (phy_is_default_hwtstamp(phydev) && phy_has_tsinfo(phydev)) 702 + err = phy_ts_info(phydev, info); 703 + else if (ops->get_ts_info) 704 + err = ops->get_ts_info(dev, info); 705 + 706 + info->so_timestamping |= SOF_TIMESTAMPING_RX_SOFTWARE | 707 + SOF_TIMESTAMPING_SOFTWARE; 708 + 709 + return err; 709 710 } 710 711 711 712 int ethtool_get_phc_vclocks(struct net_device *dev, int **vclock_index)