diff -u -urN orinoco-0.12/orinoco.c orinoco-0.12-new/orinoco.c --- orinoco-0.12/orinoco.c Wed Jun 19 06:00:31 2002 +++ orinoco-0.12-new/orinoco.c Thu Jun 27 17:52:00 2002 @@ -2708,7 +2708,7 @@ if (!priv->has_sensitivity) return -EOPNOTSUPP; - if ((val < 1) || (val > 3)) + if ((val < 0) || (val > 3)) return -EINVAL; err = orinoco_lock_user(priv); diff -u -urN orinoco-0.12/orinoco_cs.c orinoco-0.12-new/orinoco_cs.c --- orinoco-0.12/orinoco_cs.c Wed Jun 19 06:00:31 2002 +++ orinoco-0.12-new/orinoco_cs.c Thu Jun 27 17:56:24 2002 @@ -66,16 +66,20 @@ /* Some D-Link cards have buggy CIS. They do work at 5v properly, but * don't have any CIS entry for it. This workaround it... */ static int ignore_cis_vcc; /* = 0 */ +/* Control device name allocation. 0 -> dldwdX ; 1 -> ethX */ +static int eth = 1; MODULE_PARM(irq_mask, "i"); MODULE_PARM(irq_list, "1-4i"); MODULE_PARM(reset_cor, "i"); MODULE_PARM(ignore_cis_vcc, "i"); +MODULE_PARM(eth, "i"); /* Pcmcia specific structure */ struct orinoco_pccard { dev_link_t link; dev_node_t node; + int instance; }; /* @@ -113,6 +117,7 @@ */ static dev_link_t *dev_list; /* = NULL */ +static int num_instances = 0; /*====================================================================*/ @@ -294,6 +299,7 @@ card = priv->card; /* Link both structures together */ + card->instance = num_instances++; /* FIXME: Racy? */ link = &card->link; link->priv = priv; @@ -383,6 +389,9 @@ } kfree(dev); + + num_instances--; /* FIXME: Racy? */ + } /* orinoco_cs_detach */ /*====================================================================== @@ -578,14 +587,27 @@ ndev->base_addr = link->io.BasePort1; ndev->irq = link->irq.AssignedIRQ; - /* register_netdev will give us an ethX name */ - ndev->name[0] = '\0'; + /* Instance name : by default, use hermesX, on demand use the + * regular ethX (less risky) - Jean II */ + if(!eth) + sprintf(ndev->name, "wvlan%d", card->instance); + else + ndev->name[0] = '\0'; /* Tell the stack we exist */ if (register_netdev(ndev) != 0) { printk(KERN_ERR "orinoco_cs: register_netdev() failed\n"); goto failed; } strcpy(card->node.dev_name, ndev->name); + +// /* register_netdev will give us an ethX name */ +// ndev->name[0] = '\0'; +// /* Tell the stack we exist */ +// if (register_netdev(ndev) != 0) { +// printk(KERN_ERR "orinoco_cs: register_netdev() failed\n"); +// goto failed; +// } +// strcpy(card->node.dev_name, ndev->name); /* Finally, report what we've done */ printk(KERN_DEBUG "%s: index 0x%02x: Vcc %d.%d", @@ -755,11 +777,11 @@ printk(KERN_DEBUG "%s\n", version); CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "orinoco_cs: Card Services release " - "does not match!\n"); - return -1; - } +// if (serv.Revision != CS_RELEASE_CODE) { +// printk(KERN_NOTICE "orinoco_cs: Card Services release " +// "does not match!\n"); +// return -1; +// } register_pccard_driver(&dev_info, &orinoco_cs_attach, &orinoco_cs_detach);