Hi Brandon,
Brandon Streiff [off-list ref] writes:
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;
Move this check below:
- 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;
if (!dev->phydev)
return -ENODEV;
return phy_mii_ioctl(dev->phydev, ifr, cmd);
+ case SIOCGHWTSTAMP:
+ if (ds->ops->port_hwtstamp_get)
+ return ds->ops->port_hwtstamp_get(ds, port, ifr);
+ else
+ return -EOPNOTSUPP;
Here you can replace the else statement with break;
+ case SIOCSHWTSTAMP:
+ if (ds->ops->port_hwtstamp_set)
+ return ds->ops->port_hwtstamp_set(ds, port, ifr);
+ else
+ return -EOPNOTSUPP;
Same here;
+ default:
+ return -EOPNOTSUPP;
+ }
Then drop the default case and return -EOPNOTSUPP after the switch.
}
Thanks,
Vivien