On 09/28/2017 08:25 AM, Brandon Streiff wrote:
> This patch adds support to the dsa slave network device so that
> switch drivers can implement the SIOC[GS]HWTSTAMP ioctls and the
> ethtool timestamp-info interface.
> 
> Signed-off-by: Brandon Streiff <brandon.stre...@ni.com>
> ---

>  struct dsa_switch_driver {
> diff --git a/net/dsa/slave.c b/net/dsa/slave.c
> index bf8800d..2cf6a83 100644
> --- a/net/dsa/slave.c
> +++ b/net/dsa/slave.c
> @@ -264,10 +264,34 @@ dsa_slave_fdb_dump(struct sk_buff *skb, struct 
> netlink_callback *cb,
>  
>  static int dsa_slave_ioctl(struct net_device *dev, struct ifreq *ifr, int 
> cmd)
>  {
> +     struct dsa_slave_priv *p = netdev_priv(dev);
> +     struct dsa_switch *ds = p->dp->ds;
> +     int port = p->dp->index;
> +
>       if (!dev->phydev)
>               return -ENODEV;
>  
> -     return phy_mii_ioctl(dev->phydev, ifr, cmd);
> +     switch (cmd) {
> +     case SIOCGMIIPHY:
> +     case SIOCGMIIREG:
> +     case SIOCSMIIREG:
> +             if (dev->phydev)
> +                     return phy_mii_ioctl(dev->phydev, ifr, cmd);
> +             else
> +                     return -EOPNOTSUPP;
> +     case SIOCGHWTSTAMP:
> +             if (ds->ops->port_hwtstamp_get)
> +                     return ds->ops->port_hwtstamp_get(ds, port, ifr);
> +             else
> +                     return -EOPNOTSUPP;
> +     case SIOCSHWTSTAMP:
> +             if (ds->ops->port_hwtstamp_set)
> +                     return ds->ops->port_hwtstamp_set(ds, port, ifr);
> +             else
> +                     return -EOPNOTSUPP;
> +     default:
> +             return -EOPNOTSUPP;
> +     }

This echoes back to Andrew's comments in patch 2, but we may have to
prefer PHY timestamping over MAC timestamping if both are available?
Richard, is that usually how the preference should be made?
--
Florian

Reply via email to