Skip to content

Commit

Permalink
net: partial revert of the "Make timestamping selectable: series
Browse files Browse the repository at this point in the history
Revert following commits:

commit acec05f ("net_tstamp: Add TIMESTAMPING SOFTWARE and HARDWARE mask")
commit 11d55be ("net: ethtool: Add a command to expose current time stamping layer")
commit bb8645b ("netlink: specs: Introduce new netlink command to get current timestamp")
commit d905f9c ("net: ethtool: Add a command to list available time stamping layers")
commit aed5004 ("netlink: specs: Introduce new netlink command to list available time stamping layers")
commit 51bdf31 ("net: Replace hwtstamp_source by timestamping layer")
commit 0f7f463 ("net: Change the API of PHY default timestamp to MAC")
commit 091fab1 ("net: ethtool: ts: Update GET_TS to reply the current selected timestamp")
commit 152c75e ("net: ethtool: ts: Let the active time stamping layer be selectable")
commit ee60ea6 ("netlink: specs: Introduce time stamping set command")

They need more time for reviews.

Link: https://lore.kernel.org/all/[email protected]/
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
kuba-moo committed Nov 19, 2023
1 parent 055dd75 commit 289354f
Show file tree
Hide file tree
Showing 23 changed files with 28 additions and 566 deletions.
57 changes: 0 additions & 57 deletions Documentation/netlink/specs/ethtool.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -939,26 +939,6 @@ attribute-sets:
-
name: burst-tmr
type: u32
-
name: ts
attributes:
-
name: header
type: nest
nested-attributes: header
-
name: ts-layer
type: u32
-
name: ts-list
attributes:
-
name: header
type: nest
nested-attributes: header
-
name: ts-list-layer
type: binary

operations:
enum-model: directional
Expand Down Expand Up @@ -1709,40 +1689,3 @@ operations:
name: mm-ntf
doc: Notification for change in MAC Merge configuration.
notify: mm-get
-
name: ts-get
doc: Get current timestamp

attribute-set: ts

do:
request:
attributes:
- header
reply:
attributes: &ts
- header
- ts-layer
-
name: ts-list-get
doc: Get list of timestamp devices available on an interface

attribute-set: ts-list

do:
request:
attributes:
- header
reply:
attributes:
- header
- ts-list-layer
-
name: ts-set
doc: Set the timestamp device

attribute-set: ts

do:
request:
attributes: *ts
63 changes: 0 additions & 63 deletions Documentation/networking/ethtool-netlink.rst
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,6 @@ Userspace to kernel:
``ETHTOOL_MSG_RSS_GET`` get RSS settings
``ETHTOOL_MSG_MM_GET`` get MAC merge layer state
``ETHTOOL_MSG_MM_SET`` set MAC merge layer parameters
``ETHTOOL_MSG_TS_GET`` get current timestamping
``ETHTOOL_MSG_TS_LIST_GET`` list available timestampings
``ETHTOOL_MSG_TS_SET`` set current timestamping
===================================== =================================

Kernel to userspace:
Expand Down Expand Up @@ -271,8 +268,6 @@ Kernel to userspace:
``ETHTOOL_MSG_PSE_GET_REPLY`` PSE parameters
``ETHTOOL_MSG_RSS_GET_REPLY`` RSS settings
``ETHTOOL_MSG_MM_GET_REPLY`` MAC merge layer status
``ETHTOOL_MSG_TS_GET_REPLY`` current timestamping
``ETHTOOL_MSG_TS_LIST_GET_REPLY`` available timestampings
======================================== =================================

``GET`` requests are sent by userspace applications to retrieve device
Expand Down Expand Up @@ -1999,61 +1994,6 @@ The attributes are propagated to the driver through the following structure:
.. kernel-doc:: include/linux/ethtool.h
:identifiers: ethtool_mm_cfg

TS_GET
======

Gets current timestamping.

Request contents:

================================= ====== ====================
``ETHTOOL_A_TS_HEADER`` nested request header
================================= ====== ====================

Kernel response contents:

======================= ====== ==============================
``ETHTOOL_A_TS_HEADER`` nested reply header
``ETHTOOL_A_TS_LAYER`` u32 current timestamping
======================= ====== ==============================

This command get the current timestamp layer.

TS_LIST_GET
===========

Get the list of available timestampings.

Request contents:

================================= ====== ====================
``ETHTOOL_A_TS_HEADER`` nested request header
================================= ====== ====================

Kernel response contents:

=========================== ====== ==============================
``ETHTOOL_A_TS_HEADER`` nested reply header
``ETHTOOL_A_TS_LIST_LAYER`` binary available timestampings
=========================== ====== ==============================

This command lists all the possible timestamp layer available.

TS_SET
======

Modify the selected timestamping.

Request contents:

======================= ====== ===================
``ETHTOOL_A_TS_HEADER`` nested reply header
``ETHTOOL_A_TS_LAYER`` u32 timestamping
======================= ====== ===================

This command set the timestamping with one that should be listed by the
TSLIST_GET command.

Request translation
===================

Expand Down Expand Up @@ -2160,7 +2100,4 @@ are netlink only.
n/a ``ETHTOOL_MSG_PLCA_GET_STATUS``
n/a ``ETHTOOL_MSG_MM_GET``
n/a ``ETHTOOL_MSG_MM_SET``
n/a ``ETHTOOL_MSG_TS_GET``
n/a ``ETHTOOL_MSG_TS_LIST_GET``
n/a ``ETHTOOL_MSG_TS_SET``
=================================== =====================================
6 changes: 3 additions & 3 deletions drivers/net/ethernet/microchip/lan966x/lan966x_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -470,15 +470,15 @@ static int lan966x_port_hwtstamp_set(struct net_device *dev,
struct lan966x_port *port = netdev_priv(dev);
int err;

if (cfg->source != MAC_TIMESTAMPING &&
cfg->source != PHY_TIMESTAMPING)
if (cfg->source != HWTSTAMP_SOURCE_NETDEV &&
cfg->source != HWTSTAMP_SOURCE_PHYLIB)
return -EOPNOTSUPP;

err = lan966x_ptp_setup_traps(port, cfg);
if (err)
return err;

if (cfg->source == MAC_TIMESTAMPING) {
if (cfg->source == HWTSTAMP_SOURCE_NETDEV) {
if (!port->lan966x->ptp)
return -EOPNOTSUPP;

Expand Down
3 changes: 0 additions & 3 deletions drivers/net/phy/bcm-phy-ptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -931,9 +931,6 @@ struct bcm_ptp_private *bcm_ptp_probe(struct phy_device *phydev)
return ERR_CAST(clock);
priv->ptp_clock = clock;

/* Timestamp selected by default to keep legacy API */
phydev->default_timestamp = true;

priv->phydev = phydev;
bcm_ptp_init(priv);

Expand Down
3 changes: 0 additions & 3 deletions drivers/net/phy/dp83640.c
Original file line number Diff line number Diff line change
Expand Up @@ -1450,9 +1450,6 @@ static int dp83640_probe(struct phy_device *phydev)
phydev->mii_ts = &dp83640->mii_ts;
phydev->priv = dp83640;

/* Timestamp selected by default to keep legacy API */
phydev->default_timestamp = true;

spin_lock_init(&dp83640->rx_lock);
skb_queue_head_init(&dp83640->rx_queue);
skb_queue_head_init(&dp83640->tx_queue);
Expand Down
6 changes: 0 additions & 6 deletions drivers/net/phy/micrel.c
Original file line number Diff line number Diff line change
Expand Up @@ -3158,9 +3158,6 @@ static void lan8814_ptp_init(struct phy_device *phydev)
ptp_priv->mii_ts.ts_info = lan8814_ts_info;

phydev->mii_ts = &ptp_priv->mii_ts;

/* Timestamp selected by default to keep legacy API */
phydev->default_timestamp = true;
}

static int lan8814_ptp_probe_once(struct phy_device *phydev)
Expand Down Expand Up @@ -4589,9 +4586,6 @@ static int lan8841_probe(struct phy_device *phydev)

phydev->mii_ts = &ptp_priv->mii_ts;

/* Timestamp selected by default to keep legacy API */
phydev->default_timestamp = true;

return 0;
}

Expand Down
2 changes: 0 additions & 2 deletions drivers/net/phy/mscc/mscc_ptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1570,8 +1570,6 @@ int vsc8584_ptp_probe(struct phy_device *phydev)
return PTR_ERR(vsc8531->load_save);
}

/* Timestamp selected by default to keep legacy API */
phydev->default_timestamp = true;
vsc8531->ptp->phydev = phydev;

return 0;
Expand Down
3 changes: 0 additions & 3 deletions drivers/net/phy/nxp-c45-tja11xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1658,9 +1658,6 @@ static int nxp_c45_probe(struct phy_device *phydev)
priv->mii_ts.ts_info = nxp_c45_ts_info;
phydev->mii_ts = &priv->mii_ts;
ret = nxp_c45_init_ptp_clock(priv);

/* Timestamp selected by default to keep legacy API */
phydev->default_timestamp = true;
} else {
phydev_dbg(phydev, "PTP support not enabled even if the phy supports it");
}
Expand Down
37 changes: 0 additions & 37 deletions drivers/net/phy/phy_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -1411,26 +1411,6 @@ int phy_sfp_probe(struct phy_device *phydev,
}
EXPORT_SYMBOL(phy_sfp_probe);

/**
* phy_set_timestamp - set the default selected timestamping device
* @dev: Pointer to net_device
* @phydev: Pointer to phy_device
*
* This is used to set default timestamping device taking into account
* the new API choice, which is selecting the timestamping from MAC by
* default if the phydev does not have default_timestamp flag enabled.
*/
static void phy_set_timestamp(struct net_device *dev, struct phy_device *phydev)
{
const struct ethtool_ops *ops = dev->ethtool_ops;

if (!phy_has_tsinfo(phydev))
return;

if (!ops->get_ts_info || phydev->default_timestamp)
dev->ts_layer = PHY_TIMESTAMPING;
}

/**
* phy_attach_direct - attach a network device to a given PHY device pointer
* @dev: network device to attach
Expand Down Expand Up @@ -1504,7 +1484,6 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,

phydev->phy_link_change = phy_link_change;
if (dev) {
phy_set_timestamp(dev, phydev);
phydev->attached_dev = dev;
dev->phydev = phydev;

Expand Down Expand Up @@ -1833,22 +1812,6 @@ void phy_detach(struct phy_device *phydev)

phy_suspend(phydev);
if (dev) {
const struct ethtool_ops *ops = dev->ethtool_ops;
struct ethtool_ts_info ts_info = {0};

if (ops->get_ts_info) {
ops->get_ts_info(dev, &ts_info);
if ((ts_info.so_timestamping &
SOF_TIMESTAMPING_HARDWARE_MASK) ==
SOF_TIMESTAMPING_HARDWARE_MASK)
dev->ts_layer = MAC_TIMESTAMPING;
else if ((ts_info.so_timestamping &
SOF_TIMESTAMPING_SOFTWARE_MASK) ==
SOF_TIMESTAMPING_SOFTWARE_MASK)
dev->ts_layer = SOFTWARE_TIMESTAMPING;
} else {
dev->ts_layer = NO_TIMESTAMPING;
}
phydev->attached_dev->phydev = NULL;
phydev->attached_dev = NULL;
}
Expand Down
11 changes: 8 additions & 3 deletions include/linux/net_tstamp.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@

#include <uapi/linux/net_tstamp.h>

enum hwtstamp_source {
HWTSTAMP_SOURCE_NETDEV,
HWTSTAMP_SOURCE_PHYLIB,
};

/**
* struct kernel_hwtstamp_config - Kernel copy of struct hwtstamp_config
*
Expand All @@ -15,8 +20,8 @@
* a legacy implementation of a lower driver
* @copied_to_user: request was passed to a legacy implementation which already
* copied the ioctl request back to user space
* @source: indication whether timestamps should come from software, the netdev
* or from an attached phylib PHY
* @source: indication whether timestamps should come from the netdev or from
* an attached phylib PHY
*
* Prefer using this structure for in-kernel processing of hardware
* timestamping configuration, over the inextensible struct hwtstamp_config
Expand All @@ -28,7 +33,7 @@ struct kernel_hwtstamp_config {
int rx_filter;
struct ifreq *ifr;
bool copied_to_user;
enum timestamping_layer source;
enum hwtstamp_source source;
};

static inline void hwtstamp_config_to_kernel(struct kernel_hwtstamp_config *kernel_cfg,
Expand Down
5 changes: 0 additions & 5 deletions include/linux/netdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
#include <uapi/linux/if_bonding.h>
#include <uapi/linux/pkt_cls.h>
#include <uapi/linux/netdev.h>
#include <uapi/linux/net_tstamp.h>
#include <linux/hashtable.h>
#include <linux/rbtree.h>
#include <net/net_trackers.h>
Expand Down Expand Up @@ -2075,8 +2074,6 @@ enum netdev_ml_priv_type {
*
* @dpll_pin: Pointer to the SyncE source pin of a DPLL subsystem,
* where the clock is recovered.
* @ts_layer: Tracks which network device
* performs packet time stamping.
*
* FIXME: cleanup struct net_device such that network protocol info
* moves out.
Expand Down Expand Up @@ -2438,8 +2435,6 @@ struct net_device {
#if IS_ENABLED(CONFIG_DPLL)
struct dpll_pin *dpll_pin;
#endif

enum timestamping_layer ts_layer;
};
#define to_net_dev(d) container_of(d, struct net_device, dev)

Expand Down
4 changes: 0 additions & 4 deletions include/linux/phy.h
Original file line number Diff line number Diff line change
Expand Up @@ -604,8 +604,6 @@ struct macsec_ops;
* handling shall be postponed until PHY has resumed
* @irq_rerun: Flag indicating interrupts occurred while PHY was suspended,
* requiring a rerun of the interrupt handler after resume
* @default_timestamp: Flag indicating whether we are using the phy
* timestamp as the default one
* @interface: enum phy_interface_t value
* @skb: Netlink message for cable diagnostics
* @nest: Netlink nest used for cable diagnostics
Expand Down Expand Up @@ -669,8 +667,6 @@ struct phy_device {
unsigned irq_suspended:1;
unsigned irq_rerun:1;

unsigned default_timestamp:1;

int rate_matching;

enum phy_state state;
Expand Down
Loading

0 comments on commit 289354f

Please sign in to comment.