Index: sys/net/iflib.h =================================================================== --- sys/net/iflib.h +++ sys/net/iflib.h @@ -167,13 +167,15 @@ uint32_t pvi_class_mask; const char *pvi_name; } pci_vendor_info_t; -#define PVID(vendor, devid, name) {vendor, devid, 0, 0, 0, 0, name} -#define PVID_OEM(vendor, devid, svid, sdevid, revid, name) {vendor, devid, svid, sdevid, revid, 0, name} +#define PVID(vendor, devid, name) \ + {vendor, devid, UINT32_MAX, UINT32_MAX, UINT32_MAX, UINT32_MAX, name} +#define PVID_OEM(vendor, devid, svid, sdevid, revid, name) \ + {vendor, devid, svid, sdevid, revid, UINT32_MAX, name} #define PVID_END {0, 0, 0, 0, 0, 0, NULL} /* No drivers in tree currently match on anything except vendor:device. */ -#define IFLIB_PNP_DESCR "U32:vendor;U32:device;U32:#;U32:#;" \ - "U32:#;U32:#;D:#" +#define IFLIB_PNP_DESCR "U32:vendor;U32:device;V32:subvendor;V32:subdevice;" \ + "V32:revision;V32:class;D:#" #define IFLIB_PNP_INFO(b, u, t) \ MODULE_PNP_INFO(IFLIB_PNP_DESCR, b, u, t, nitems(t) - 1) Index: sys/net/iflib.c =================================================================== --- sys/net/iflib.c +++ sys/net/iflib.c @@ -4563,11 +4563,11 @@ } if ((pci_device_id == ent->pvi_device_id) && ((pci_subvendor_id == ent->pvi_subvendor_id) || - (ent->pvi_subvendor_id == 0)) && + (ent->pvi_subvendor_id == UINT32_MAX)) && ((pci_subdevice_id == ent->pvi_subdevice_id) || - (ent->pvi_subdevice_id == 0)) && + (ent->pvi_subdevice_id == UINT32_MAX)) && ((pci_rev_id == ent->pvi_rev_id) || - (ent->pvi_rev_id == 0))) { + (ent->pvi_rev_id == UINT32_MAX))) { device_set_desc_copy(dev, ent->pvi_name); /* this needs to be changed to zero if the bus probing code * ever stops re-probing on best match because the sctx