1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

fixed parsing of IRQ# for interface affinity

git-svn-id: https://zerberus.eonerc.rwth-aachen.de:8443/svn/s2ss/trunk@200 8ec27952-4edc-4aab-86aa-e87bb2611832
This commit is contained in:
Steffen Vogel 2014-09-04 13:30:36 +00:00
parent 99bb7d9f88
commit 4f44bf14b2

View file

@ -45,21 +45,19 @@ int if_getegress(struct sockaddr_in *sa)
int if_getirqs(struct interface *i)
{
char dirname[NAME_MAX];
DIR *dir;
snprintf(dirname, sizeof(dirname), "/sys/class/net/%s/device/msi_irqs/", i->name);
dir = opendir(dirname);
DIR *dir = opendir(dirname);
if (!dir)
return -1;
error("Cannot open IRQs for interface '%s'", i->name);
memset(&i->irqs, 0, sizeof(char) * IF_IRQ_MAX);
int n = 0;
int irq, n = 0;
struct dirent *entry;
while ((entry = readdir(dir)) && n < IF_IRQ_MAX) {
if (entry->d_type & DT_REG) {
i->irqs[n++] = atoi(entry->d_name);
}
if ((irq = atoi(entry->d_name)))
i->irqs[n++] = irq;
}
debug(7, "Found %u interrupts for interface '%s'", n, i->name);
@ -84,6 +82,8 @@ int if_setaffinity(struct interface *i, int affinity)
fclose(file);
debug(5, "Set affinity of IRQ %u for interface '%s' to %#x", i->irqs[n], i->name, affinity);
}
else
error("Failed to set affinity for interface '%s'", i->name);
}
return 0;