On Wed, Mar 21, 2018 at 02:45:13PM -0700, Richard Cochran wrote: > On Wed, Mar 21, 2018 at 12:10:07PM -0700, Florian Fainelli wrote: > > > + phydev->mdio.ts_info = dp83640_ts_info; > > > + phydev->mdio.hwtstamp = dp83640_hwtstamp; > > > + phydev->mdio.rxtstamp = dp83640_rxtstamp; > > > + phydev->mdio.txtstamp = dp83640_txtstamp; > > > > Why is this implemented a the mdio_device level and not at the > > mdio_driver level? This looks like the wrong level at which this is done. > > The question could be asked of: > > struct mdio_device { > int (*bus_match)(struct device *dev, struct device_driver *drv); > void (*device_free)(struct mdio_device *mdiodev); > void (*device_remove)(struct mdio_device *mdiodev); > } > > I saw how this is done for the phy, etc, but I don't see any benefit > of doing it that way. It would add an extra layer (or two) of > indirection and save the space four pointer functions. Is that > trade-off worth it? Actually, there was another reason not to put these methods into the driver structure. In contrast to phy_device, mdio_device doesn't have a pointer to the driver structure. It looks like there is no way to start from a mdio_device and get to a mdio_driver. Please correct me if I'm wrong. I propose keeping those methods in the mdio_device, wrapping them in #ifdef CONFIG_NETWORK_PHY_TIMESTAMPING. That way, they do not add any burden to the vast majority of users. Thoughts? Thanks, Richard -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html