Hi Florian, On Fri, Jul 17, 2020 at 08:05:30PM -0700, Florian Fainelli wrote: > In preparation for adding another layer of call into a DSA stacked ops > singleton, wrap the ndo_do_ioctl() call into dev_do_ioctl(). > > Signed-off-by: Florian Fainelli <f.faine...@gmail.com> > ---
I missed most of the context, but this looks interesting. Am I correct in saying that this could save us from having to manually pass phy_mii_ioctl() and that it could be generically handled here? > net/core/dev_ioctl.c | 24 +++++++++++++++++------- > 1 file changed, 17 insertions(+), 7 deletions(-) > > diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c > index 547b587c1950..a213c703c90a 100644 > --- a/net/core/dev_ioctl.c > +++ b/net/core/dev_ioctl.c > @@ -225,6 +225,22 @@ static int net_hwtstamp_validate(struct ifreq *ifr) > return 0; > } > > +static int dev_do_ioctl(struct net_device *dev, > + struct ifreq *ifr, unsigned int cmd) > +{ > + const struct net_device_ops *ops = dev->netdev_ops; > + int err = -EOPNOTSUPP; > + > + if (ops->ndo_do_ioctl) { > + if (netif_device_present(dev)) > + err = ops->ndo_do_ioctl(dev, ifr, cmd); > + else > + err = -ENODEV; > + } > + > + return err; > +} > + > /* > * Perform the SIOCxIFxxx calls, inside rtnl_lock() > */ > @@ -323,13 +339,7 @@ static int dev_ifsioc(struct net *net, struct ifreq > *ifr, unsigned int cmd) > cmd == SIOCSHWTSTAMP || > cmd == SIOCGHWTSTAMP || > cmd == SIOCWANDEV) { > - err = -EOPNOTSUPP; > - if (ops->ndo_do_ioctl) { > - if (netif_device_present(dev)) > - err = ops->ndo_do_ioctl(dev, ifr, cmd); > - else > - err = -ENODEV; > - } > + err = dev_do_ioctl(dev, ifr, cmd); > } else > err = -EINVAL; > > -- > 2.25.1 >