[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:01354] Re: Multiple Ethernet
大沢です。
> 3c509 のドライバーを読む限りでは、モジュールのときは一つしか
> 対応してないようです。
ちゅうわけでpatchです。
/usr/src/linux/drivers/netで(ディレクトリは適当に読みかえてください)
patch < このメールをセーブしたファイル
で、あとはモジュールをリコンパイルしてください。
モノがないので、うまくいくかはわかりません(;-)。重要なデータはバック
アップをとるなどしてから試したほうがいいでしょう。
--
大沢進 <susumu-o@xxxxxxxxxxxxxxx>
PGP public key http://www.win.or.jp/~susumu-o/public.key
--
*** 3c509.c- Wed Oct 30 10:42:40 1996
--- 3c509.c Fri Aug 1 05:44:35 1997
***************
*** 758,794 ****
}
#ifdef MODULE
! static char devicename[9] = { 0, };
! static struct device dev_3c509 = {
devicename, /* device name is inserted by linux/drivers/net/net_init.c */
0, 0, 0, 0,
0, 0,
0, 0, 0, NULL, el3_probe };
! static int io = 0;
! static int irq = 0;
int
init_module(void)
{
! dev_3c509.base_addr = io;
! dev_3c509.irq = irq;
! if (!EISA_bus && !io) {
! printk("3c509: WARNING! Module load-time probing works reliably only for EISA bus!!\n");
}
- if (register_netdev(&dev_3c509) != 0)
- return -EIO;
return 0;
}
void
cleanup_module(void)
{
! unregister_netdev(&dev_3c509);
! kfree_s(dev_3c509.priv,sizeof(struct el3_private));
! dev_3c509.priv=NULL;
! /* If we don't do this, we can't re-insmod it later. */
! release_region(dev_3c509.base_addr, EL3_IO_EXTENT);
}
#endif /* MODULE */
--- 758,817 ----
}
#ifdef MODULE
! #define MAX_EL3_CARDS 4
! #define NAMELEN 8
! static char devicename[NAMELEN * MAX_EL3_CARDS] = { 0, };
! static struct device dev_3c509[MAX_EL3_CARDS] = {
devicename, /* device name is inserted by linux/drivers/net/net_init.c */
0, 0, 0, 0,
0, 0,
0, 0, 0, NULL, el3_probe };
! static int io[MAX_EL3_CARDS] = { 0, };
! static int irq[MAX_EL3_CARDS] = { 0, };
int
init_module(void)
{
! int this_dev,found = 0;
! for (this_dev = 0; this_dev < MAX_EL3_CARDS; this_dev++){
! struct device *dev = &dev_3c509[this_dev];
! dev->name = devicename+(NAMELEN*this_dev);
! dev->irq = irq[this_dev];
! dev->base_addr = io[this_dev];
! if (!EISA_bus && !io) {
! printk("3c509: WARNING! Module load-time probing works reliably only for EISA bus!!\n");
! }
! if (io[this_dev] == 0) {
! if(this_dev != 0) break; /* only complain once */
! printk("3c509: Module autoprobing not allowed. Append \"io=0xNNN\" value(s).\n");
! return -EPERM;
! }
! if (register_netdev(dev) != 0) {
! printk("3c509: No EtherLink III card found (io=0x%x).\n",io[this_dev]);
! if (found != 0) return 0; /* Got at least one */
! return -ENXIO;
! }
! found++;
}
return 0;
}
void
cleanup_module(void)
{
! int this_dev;
!
! for (this_dev = 0; this_dev < MAX_EL3_CARDS; this_dev++) {
! struct device *dev = &dev_3c509[this_dev];
! if (dev->priv != NULL) {
! kfree_s(dev.priv,sizeof(struct el3_private));
! dev.priv=NULL;
! /* If we don't do this, we can't re-insmod it later. */
! release_region(dev->base_addr, EL3_IO_EXTENT);
! unregister_netdev(dev);
! }
! }
}
#endif /* MODULE */