summaryrefslogtreecommitdiff
path: root/src/pci.h
diff options
context:
space:
mode:
authorBob Gilligan <gilligan@vyatta.com>2011-01-16 22:44:12 -0800
committerBob Gilligan <gilligan@vyatta.com>2011-01-16 23:07:47 -0800
commit4d155cbf37ca909daff06dd8c7119274d0861f6c (patch)
treefe9d460fb46097986fe234fddb3f9bd2935c8642 /src/pci.h
parent9405281a9e16e55af687c98a83d327946953cc09 (diff)
downloadvyatta-biosdevname-4d155cbf37ca909daff06dd8c7119274d0861f6c.tar.gz
vyatta-biosdevname-4d155cbf37ca909daff06dd8c7119274d0861f6c.zip
Merge upstream version 0.3.4.
(cherry picked from commit 21eb1c8d6fefa5dcd3a9a800b4add06d5c30c01f)
Diffstat (limited to 'src/pci.h')
-rw-r--r--src/pci.h38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/pci.h b/src/pci.h
index fbd195a..78d6c9f 100644
--- a/src/pci.h
+++ b/src/pci.h
@@ -7,6 +7,7 @@
#ifndef PCI_H_INCLUDED
#define PCI_H_INCLUDED
+#include <limits.h>
#include <pci/pci.h>
#include "list.h"
#include "state.h"
@@ -14,15 +15,38 @@
struct pci_device {
struct list_head node;
- struct pci_dev pci_dev;
+ struct pci_dev *pci_dev;
int physical_slot;
- unsigned int index_in_slot;
+ unsigned int index_in_slot; /* only valid if physical_slot > 0 and not a VF */
+ unsigned int embedded_index; /* only valid if embedded_index_valid */
unsigned short int class;
+ unsigned char uses_smbios;
unsigned char smbios_type;
unsigned char smbios_instance;
unsigned char smbios_enabled;
+ char *smbios_label;
+ unsigned int sysfs_index;
+ char * sysfs_label;
+ unsigned char uses_sysfs;
+ unsigned int vf_index;
+ struct pci_device *pf;
+ struct list_head vfnode;
+ struct list_head vfs;
+ unsigned int is_sriov_physical_function:1;
+ unsigned int is_sriov_virtual_function:1;
+ unsigned int embedded_index_valid:1;
};
+#define HAS_SMBIOS_INSTANCE 1
+#define HAS_SMBIOS_LABEL 2
+#define HAS_SMBIOS_SLOT 4
+#define HAS_SMBIOS_EXACT_MATCH 8
+
+#define HAS_SYSFS_INDEX 1
+#define HAS_SYSFS_LABEL 2
+#define PHYSICAL_SLOT_UNKNOWN (INT_MAX)
+#define INDEX_IN_SLOT_UNKNOWN (INT_MAX)
+
extern int get_pci_devices(struct libbiosdevname_state *state);
extern void free_pci_devices(struct libbiosdevname_state *state);
@@ -37,6 +61,16 @@ static inline int is_pci_network(struct pci_device *dev)
return (dev->class & 0xFF00) == 0x0200;
}
+static inline int is_pci_smbios_type_ethernet(struct pci_device *dev)
+{
+ return (dev->smbios_type == 0x05);
+}
+
+static inline int is_pci_bridge(struct pci_device *dev)
+{
+ return (dev->pci_dev->device_class>>8 == 0x06);
+}
+
#ifdef HAVE_STRUCT_PCI_DEV_DOMAIN
static inline int pci_domain_nr(const struct pci_dev *dev)
{