|
|
8ebaa5 |
From cee3f7b101fb22540e2f92067a5c49d3f817e441 Mon Sep 17 00:00:00 2001
|
|
|
8ebaa5 |
From: Jordan Hargrave <Jordan_Hargrave@dell.com>
|
|
|
8ebaa5 |
Date: Tue, 25 Feb 2014 15:51:50 -0600
|
|
|
8ebaa5 |
Subject: [PATCH] Scan for devid for Mellanox cards
|
|
|
8ebaa5 |
|
|
|
8ebaa5 |
---
|
|
|
8ebaa5 |
src/eths.c | 15 +++++++++++++++
|
|
|
8ebaa5 |
src/eths.h | 1 +
|
|
|
8ebaa5 |
2 files changed, 16 insertions(+)
|
|
|
8ebaa5 |
|
|
|
8ebaa5 |
diff --git a/src/eths.c b/src/eths.c
|
|
|
8ebaa5 |
index bcd02e1..38bb7fe 100644
|
|
|
8ebaa5 |
--- a/src/eths.c
|
|
|
8ebaa5 |
+++ b/src/eths.c
|
|
|
8ebaa5 |
@@ -34,6 +34,20 @@ char *pr_ether(char *buf, const int size, const unsigned char *s)
|
|
|
8ebaa5 |
return (buf);
|
|
|
8ebaa5 |
}
|
|
|
8ebaa5 |
|
|
|
8ebaa5 |
+static int eths_get_devid(const char *devname, int *devid)
|
|
|
8ebaa5 |
+{
|
|
|
8ebaa5 |
+ char path[PATH_MAX];
|
|
|
8ebaa5 |
+ char *devidstr = NULL;
|
|
|
8ebaa5 |
+
|
|
|
8ebaa5 |
+ *devid = -1;
|
|
|
8ebaa5 |
+ snprintf(path, sizeof(path), "/sys/class/net/%s/dev_id", devname);
|
|
|
8ebaa5 |
+ if (sysfs_read_file(path, &devidstr) == 0) {
|
|
|
8ebaa5 |
+ sscanf(devidstr, "%i", devid);
|
|
|
8ebaa5 |
+ free(devidstr);
|
|
|
8ebaa5 |
+ }
|
|
|
8ebaa5 |
+ return NULL;
|
|
|
8ebaa5 |
+}
|
|
|
8ebaa5 |
+
|
|
|
8ebaa5 |
static int eths_get_ifindex(const char *devname, int *ifindex)
|
|
|
8ebaa5 |
{
|
|
|
8ebaa5 |
int fd, err;
|
|
|
8ebaa5 |
@@ -149,6 +163,7 @@ static void fill_eth_dev(struct network_device *dev)
|
|
|
8ebaa5 |
eths_get_ifindex(dev->kernel_name, &dev->ifindex);
|
|
|
8ebaa5 |
eths_get_hwaddr(dev->kernel_name, dev->dev_addr, sizeof(dev->dev_addr), &dev->arphrd_type);
|
|
|
8ebaa5 |
eths_get_permaddr(dev->kernel_name, dev->perm_addr, sizeof(dev->perm_addr));
|
|
|
8ebaa5 |
+ eths_get_devid(dev->kernel_name, &dev->devid);
|
|
|
8ebaa5 |
rc = eths_get_info(dev->kernel_name, &dev->drvinfo);
|
|
|
8ebaa5 |
if (rc == 0)
|
|
|
8ebaa5 |
dev->drvinfo_valid = 1;
|
|
|
8ebaa5 |
diff --git a/src/eths.h b/src/eths.h
|
|
|
8ebaa5 |
index f686136..12c278b 100644
|
|
|
8ebaa5 |
--- a/src/eths.h
|
|
|
8ebaa5 |
+++ b/src/eths.h
|
|
|
8ebaa5 |
@@ -27,6 +27,7 @@ struct network_device {
|
|
|
8ebaa5 |
int arphrd_type; /* e.g. ARPHDR_ETHER */
|
|
|
8ebaa5 |
int hardware_claimed; /* true when recognized as PCI or PCMCIA and added to list of bios_devices */
|
|
|
8ebaa5 |
int ifindex;
|
|
|
8ebaa5 |
+ int devid;
|
|
|
8ebaa5 |
};
|
|
|
8ebaa5 |
|
|
|
8ebaa5 |
extern void get_eths(struct libbiosdevname_state *state);
|
|
|
8ebaa5 |
--
|
|
|
8ebaa5 |
1.8.4.2
|
|
|
8ebaa5 |
|