Message ID | 87prgcju7v.fsf@nemi.mork.no |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
Fri, Mar 20, 2009 at 12:43:00PM CET, bjorn@mork.no wrote: >David Miller <davem@davemloft.net> writes: >> From: Yang Hongyang <yanghy@cn.fujitsu.com> >> Date: Fri, 20 Mar 2009 16:30:59 +0800 >> >>> David Miller wrote: >>> > Committed to net-next-2.6... >>> > >>> > sunvnet: Convert to net_device_ops. >>> >>> I noticed that there are other drivers's net_device_ops >>> need to be converted,is these convert nessary? >> >> Not necessary, but desirable. Once all drivers are >> converted we can remove the compatability code. > >Just thinking... Would it make sense, at some point before removing the >compatibility layer, to add tests for partial conversions? I noticed >the sungem bug just fixed by Stephen Hemminger >( http://permalink.gmane.org/gmane.linux.network/122756 ) >which could have been caught by the patch below. > >This will also ease the transition of "driver sets", like usbnet and >it's children, where a number of drivers need to make the conversion >together. Don't know if that's a big problem, but it did stop my first >attempt to convert usbnet because I was uncertain whether I had caught >all of the necessary mini driver conversions. > >Signed-off-by: Bjørn Mork <bjorn@mork.no> >--- > > net/core/dev.c | 28 ++++++++++++++++++++++++++++ > 1 files changed, 28 insertions(+), 0 deletions(-) > >diff --git a/net/core/dev.c b/net/core/dev.c >index f112970..ad3e780 100644 >--- a/net/core/dev.c >+++ b/net/core/dev.c >@@ -4359,6 +4359,34 @@ int register_netdevice(struct net_device *dev) > * This is temporary until all network devices are converted. > */ > if (dev->netdev_ops) { >+ /* drivers using netdev_ops should not set any of these */ >+ if (dev->init || >+ dev->uninit || >+ dev->open || >+ dev->change_rx_flags || >+ dev->set_rx_mode || >+ dev->set_multicast_list || >+ dev->set_mac_address || >+ dev->validate_addr || >+ dev->do_ioctl || >+ dev->set_config || >+ dev->change_mtu || >+ dev->neigh_setup || >+ dev->tx_timeout || >+ dev->get_stats || >+ dev->vlan_rx_register || >+ dev->vlan_rx_add_vid || >+ dev->vlan_rx_kill_vid >+#ifdef CONFIG_NET_POLL_CONTROLLER >+ || dev->poll_controller >+#endif >+ ) { >+ char drivername[64]; >+ >+ pr_info("%s (%s): mixing netdev_ops and old API\n", >+ dev->name, netdev_drivername(dev, drivername, >+ 64)); >+ } > netdev_resync_ops(dev); > } else { > char drivername[64]; > cc'ing Dave. This seems like a good idea. It would make it more visible. Besides, it's temporary so why not? Jirka >-- >To unsubscribe from this list: send the line "unsubscribe netdev" in >the body of a message to majordomo@vger.kernel.org >More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 20 Mar 2009 15:19:50 +0100 Jiri Pirko <jpirko@redhat.com> wrote: > Fri, Mar 20, 2009 at 12:43:00PM CET, bjorn@mork.no wrote: > >David Miller <davem@davemloft.net> writes: > >> From: Yang Hongyang <yanghy@cn.fujitsu.com> > >> Date: Fri, 20 Mar 2009 16:30:59 +0800 > >> > >>> David Miller wrote: > >>> > Committed to net-next-2.6... > >>> > > >>> > sunvnet: Convert to net_device_ops. > >>> > >>> I noticed that there are other drivers's net_device_ops > >>> need to be converted,is these convert nessary? > >> > >> Not necessary, but desirable. Once all drivers are > >> converted we can remove the compatability code. > > > >Just thinking... Would it make sense, at some point before removing the > >compatibility layer, to add tests for partial conversions? I noticed > >the sungem bug just fixed by Stephen Hemminger > >( http://permalink.gmane.org/gmane.linux.network/122756 ) > >which could have been caught by the patch below. > > > >This will also ease the transition of "driver sets", like usbnet and > >it's children, where a number of drivers need to make the conversion > >together. Don't know if that's a big problem, but it did stop my first > >attempt to convert usbnet because I was uncertain whether I had caught > >all of the necessary mini driver conversions. > > > >Signed-off-by: Bjørn Mork <bjorn@mork.no> > >--- I intend to get all drivers in x86 allmodconfig converted, then change expose the COMPAT_NETDEV_OPS as a config option (which is how I test). Need to wait until after in tree drivers all converted because kernel developers expect random configurations to build. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Stephen Hemminger <shemminger@vyatta.com> Date: Fri, 20 Mar 2009 09:16:18 -0700 > I intend to get all drivers in x86 allmodconfig converted, then > change expose the COMPAT_NETDEV_OPS as a config option (which is how > I test). If it were not for the randconfig maniacs I would say that I think you should expose it somehow now. Turning it off is how I personally do conversions in fact. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/core/dev.c b/net/core/dev.c index f112970..ad3e780 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4359,6 +4359,34 @@ int register_netdevice(struct net_device *dev) * This is temporary until all network devices are converted. */ if (dev->netdev_ops) { + /* drivers using netdev_ops should not set any of these */ + if (dev->init || + dev->uninit || + dev->open || + dev->change_rx_flags || + dev->set_rx_mode || + dev->set_multicast_list || + dev->set_mac_address || + dev->validate_addr || + dev->do_ioctl || + dev->set_config || + dev->change_mtu || + dev->neigh_setup || + dev->tx_timeout || + dev->get_stats || + dev->vlan_rx_register || + dev->vlan_rx_add_vid || + dev->vlan_rx_kill_vid +#ifdef CONFIG_NET_POLL_CONTROLLER + || dev->poll_controller +#endif + ) { + char drivername[64]; + + pr_info("%s (%s): mixing netdev_ops and old API\n", + dev->name, netdev_drivername(dev, drivername, + 64)); + } netdev_resync_ops(dev); } else { char drivername[64];