8390/8390p: Fix compat netdev ops handling.

Based upon a report from Randy Dunlap.

The compat netdev ops assignments need to happen in
8390.c and 8390p.c, not lib8390.c, as only the type
specific code can assign the correct function pointers.

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2008-12-15 15:14:59 -08:00
Родитель 8b124a8e14
Коммит 9a4a84294b
3 изменённых файлов: 20 добавлений и 8 удалений

Просмотреть файл

@ -72,7 +72,16 @@ EXPORT_SYMBOL(ei_netdev_ops);
struct net_device *__alloc_ei_netdev(int size)
{
return ____alloc_ei_netdev(size);
struct net_device *dev = ____alloc_ei_netdev(size);
#ifdef CONFIG_COMPAT_NET_DEV_OPS
if (dev) {
dev->hard_start_xmit = ei_start_xmit;
dev->get_stats = ei_get_stats;
dev->set_multicast_list = ei_set_multicast_list;
dev->tx_timeout = ei_tx_timeout;
}
#endif
return dev;
}
EXPORT_SYMBOL(__alloc_ei_netdev);

Просмотреть файл

@ -77,7 +77,16 @@ EXPORT_SYMBOL(eip_netdev_ops);
struct net_device *__alloc_eip_netdev(int size)
{
return ____alloc_ei_netdev(size);
struct net_device *dev = ____alloc_ei_netdev(size);
#ifdef CONFIG_COMPAT_NET_DEV_OPS
if (dev) {
dev->hard_start_xmit = eip_start_xmit;
dev->get_stats = eip_get_stats;
dev->set_multicast_list = eip_set_multicast_list;
dev->tx_timeout = eip_tx_timeout;
}
#endif
return dev;
}
EXPORT_SYMBOL(__alloc_eip_netdev);

Просмотреть файл

@ -1010,12 +1010,6 @@ static void ethdev_setup(struct net_device *dev)
if (ei_debug > 1)
printk(version);
#ifdef CONFIG_COMPAT_NET_DEV_OPS
dev->hard_start_xmit = ei_start_xmit;
dev->get_stats = ei_get_stats;
dev->set_multicast_list = ei_set_multicast_list;
dev->tx_timeout = __ei_tx_timeout;
#endif
ether_setup(dev);
spin_lock_init(&ei_local->page_lock);