More fixes for multibus drivers. When calling out to the match

function in if_ndis_pci.c and if_ndis_pccard.c, provide the bustype
too so the stubs can ignore devlists that don't concern them.
This commit is contained in:
Bill Paul 2005-05-08 23:19:20 +00:00
parent 6169e4d097
commit 239a676456
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=146016
4 changed files with 16 additions and 6 deletions

View File

@ -204,7 +204,7 @@ windrv_match(matchfunc, ctx)
STAILQ_FOREACH(d, &drvdb_head, link) {
if (d->windrv_devlist == NULL)
continue;
match = matchfunc(d->windrv_devlist, ctx);
match = matchfunc(d->windrv_bustype, d->windrv_devlist, ctx);
if (match == TRUE) {
mtx_unlock(&drvdb_mtx);
return(d);

View File

@ -1225,7 +1225,7 @@ struct drvdb_ent {
extern image_patch_table ntoskrnl_functbl[];
typedef void (*funcptr)(void);
typedef int (*matchfuncptr)(void *, void *);
typedef int (*matchfuncptr)(interface_type, void *, void *);
__BEGIN_DECLS
extern int windrv_libinit(void);

View File

@ -69,7 +69,8 @@ static int ndis_probe_pccard (device_t);
static int ndis_attach_pccard (device_t);
static struct resource_list *ndis_get_resource_list
(device_t, device_t);
static int ndis_devcompare (struct ndis_pccard_type *, device_t);
static int ndis_devcompare (interface_type,
struct ndis_pccard_type *, device_t);
extern int ndisdrv_modevent (module_t, int, void *);
extern int ndis_attach (device_t);
extern int ndis_shutdown (device_t);
@ -111,13 +112,17 @@ static devclass_t ndis_devclass;
DRIVER_MODULE(ndis, pccard, ndis_driver, ndis_devclass, ndisdrv_modevent, 0);
static int
ndis_devcompare(t, dev)
ndis_devcompare(bustype, t, dev)
interface_type bustype;
struct ndis_pccard_type *t;
device_t dev;
{
const char *prodstr, *vendstr;
int error;
if (bustype != PCMCIABus)
return(FALSE);
error = pccard_get_product_str(dev, &prodstr);
if (error)
return(FALSE);

View File

@ -68,7 +68,8 @@ static int ndis_probe_pci (device_t);
static int ndis_attach_pci (device_t);
static struct resource_list *ndis_get_resource_list
(device_t, device_t);
static int ndis_devcompare (struct ndis_pci_type *, device_t);
static int ndis_devcompare (interface_type,
struct ndis_pci_type *, device_t);
extern int ndisdrv_modevent (module_t, int, void *);
extern int ndis_attach (device_t);
extern int ndis_shutdown (device_t);
@ -103,10 +104,14 @@ DRIVER_MODULE(ndis, pci, ndis_driver, ndis_devclass, ndisdrv_modevent, 0);
DRIVER_MODULE(ndis, cardbus, ndis_driver, ndis_devclass, ndisdrv_modevent, 0);
static int
ndis_devcompare(t, dev)
ndis_devcompare(bustype, t, dev)
interface_type bustype;
struct ndis_pci_type *t;
device_t dev;
{
if (bustype != PCIBus)
return(FALSE);
while(t->ndis_name != NULL) {
if ((pci_get_vendor(dev) == t->ndis_vid) &&
(pci_get_device(dev) == t->ndis_did) &&