2016-05-11 14:08, Ziye Yang: > This patch is used to add the class_id (class_code, > subclass_code, programming_interface) support for > pci_device probe. With this patch, it will be > flexible for users to probe a class of devices > by class_id. > > Signed-off-by: Ziye Yang <ziye.yang at intel.com> > --- > lib/librte_eal/bsdapp/eal/eal_pci.c | 4 ++++ > lib/librte_eal/common/eal_common_pci.c | 3 +++ > lib/librte_eal/common/include/rte_pci.h | 8 ++++++-- > lib/librte_eal/linuxapp/eal/eal_pci.c | 9 +++++++++ > 4 files changed, 22 insertions(+), 2 deletions(-)
Please remove the deprecation notice. > --- a/lib/librte_eal/common/include/rte_pci.h > +++ b/lib/librte_eal/common/include/rte_pci.h > @@ -129,6 +129,7 @@ struct rte_pci_id { > uint16_t device_id; /**< Device ID or PCI_ANY_ID. */ > uint16_t subsystem_vendor_id; /**< Subsystem vendor ID or PCI_ANY_ID. */ > uint16_t subsystem_device_id; /**< Subsystem device ID or PCI_ANY_ID. */ > + uint32_t class_id; /**< Class ID (class, subclass, pi) or > CLASS_ANY_ID. */ > }; A space is missing. It would be more logical to put the class_id at the beginning of the struct. > /** Any PCI device identifier (vendor, device, ...) */ > #define PCI_ANY_ID (0xffff) > +#define CLASS_ANY_ID (0xffffff) These constants should be prefixed with RTE_. > --- a/lib/librte_eal/linuxapp/eal/eal_pci.c > +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c > + /* get class_id */ > + snprintf(filename, sizeof(filename), "%s/class", > + dirname); > + if (eal_parse_sysfs_value(filename, &tmp) < 0) { > + free(dev); > + return -1; > + } > + dev->id.class_id = (uint32_t)tmp && CLASS_ANY_ID; Should be a bitwise &. Why masking is needed?