mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
![Al Viro](/assets/img/avatar_default.png)
etherh and a handful of other odd drivers use different macros when building 8390.c. Since we generate a single 8390.o and then link with it, in any config with both oddball and normal 8390-based driver we will end up with breakage in at least one of them. Solution: take most of 8390.c into lib8390.c and have 8390.c, etherh.c and the rest of oddballs #include it. Helper macros are taken from 8390.h to whoever includes lib8390.c. That way odd drivers get separate instances of compiled 8390 stuff and stop stepping on each other's toes. 8390.h gets cleaned up - we don't have the cascade of ifdefs in there and are left with the stuff that can be used by any 8390-based driver. Current problems are exactly because of that cascade - we attempt to choose the set of helpers by looking at config and that, of course, doesn't work well when we have several sets needed by various drivers in our config. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
61 lines
1,007 B
C
61 lines
1,007 B
C
/* 8390 core for usual drivers */
|
|
|
|
static const char version[] =
|
|
"8390.c:v1.10cvs 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";
|
|
|
|
#include "lib8390.c"
|
|
|
|
int ei_open(struct net_device *dev)
|
|
{
|
|
return __ei_open(dev);
|
|
}
|
|
|
|
int ei_close(struct net_device *dev)
|
|
{
|
|
return __ei_close(dev);
|
|
}
|
|
|
|
irqreturn_t ei_interrupt(int irq, void *dev_id)
|
|
{
|
|
return __ei_interrupt(irq, dev_id);
|
|
}
|
|
|
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
|
void ei_poll(struct net_device *dev)
|
|
{
|
|
__ei_poll(dev);
|
|
}
|
|
#endif
|
|
|
|
struct net_device *__alloc_ei_netdev(int size)
|
|
{
|
|
return ____alloc_ei_netdev(size);
|
|
}
|
|
|
|
void NS8390_init(struct net_device *dev, int startp)
|
|
{
|
|
return __NS8390_init(dev, startp);
|
|
}
|
|
|
|
EXPORT_SYMBOL(ei_open);
|
|
EXPORT_SYMBOL(ei_close);
|
|
EXPORT_SYMBOL(ei_interrupt);
|
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
|
EXPORT_SYMBOL(ei_poll);
|
|
#endif
|
|
EXPORT_SYMBOL(NS8390_init);
|
|
EXPORT_SYMBOL(__alloc_ei_netdev);
|
|
|
|
#if defined(MODULE)
|
|
|
|
int init_module(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void cleanup_module(void)
|
|
{
|
|
}
|
|
|
|
#endif /* MODULE */
|
|
MODULE_LICENSE("GPL");
|