Blame SOURCES/0001-Scan-for-devid-for-Mellanox-cards.patch

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