Merge of rsync://rsync.kernel.org/pub/scm/linux/kernel/git/gregkh/aoe-2.6.git/
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2004 Coraid, Inc. See COPYING for GPL terms. */
|
||||
#define VERSION "6"
|
||||
#define VERSION "10"
|
||||
#define AOE_MAJOR 152
|
||||
#define DEVICE_NAME "aoe"
|
||||
|
||||
|
||||
@@ -37,6 +37,13 @@ static ssize_t aoedisk_show_netif(struct gendisk * disk, char *page)
|
||||
|
||||
return snprintf(page, PAGE_SIZE, "%s\n", d->ifp->name);
|
||||
}
|
||||
/* firmware version */
|
||||
static ssize_t aoedisk_show_fwver(struct gendisk * disk, char *page)
|
||||
{
|
||||
struct aoedev *d = disk->private_data;
|
||||
|
||||
return snprintf(page, PAGE_SIZE, "0x%04x\n", (unsigned int) d->fw_ver);
|
||||
}
|
||||
|
||||
static struct disk_attribute disk_attr_state = {
|
||||
.attr = {.name = "state", .mode = S_IRUGO },
|
||||
@@ -50,6 +57,10 @@ static struct disk_attribute disk_attr_netif = {
|
||||
.attr = {.name = "netif", .mode = S_IRUGO },
|
||||
.show = aoedisk_show_netif
|
||||
};
|
||||
static struct disk_attribute disk_attr_fwver = {
|
||||
.attr = {.name = "firmware-version", .mode = S_IRUGO },
|
||||
.show = aoedisk_show_fwver
|
||||
};
|
||||
|
||||
static void
|
||||
aoedisk_add_sysfs(struct aoedev *d)
|
||||
@@ -57,6 +68,7 @@ aoedisk_add_sysfs(struct aoedev *d)
|
||||
sysfs_create_file(&d->gd->kobj, &disk_attr_state.attr);
|
||||
sysfs_create_file(&d->gd->kobj, &disk_attr_mac.attr);
|
||||
sysfs_create_file(&d->gd->kobj, &disk_attr_netif.attr);
|
||||
sysfs_create_file(&d->gd->kobj, &disk_attr_fwver.attr);
|
||||
}
|
||||
void
|
||||
aoedisk_rm_sysfs(struct aoedev *d)
|
||||
@@ -64,6 +76,7 @@ aoedisk_rm_sysfs(struct aoedev *d)
|
||||
sysfs_remove_link(&d->gd->kobj, "state");
|
||||
sysfs_remove_link(&d->gd->kobj, "mac");
|
||||
sysfs_remove_link(&d->gd->kobj, "netif");
|
||||
sysfs_remove_link(&d->gd->kobj, "firmware-version");
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -109,25 +109,22 @@ aoedev_set(ulong sysminor, unsigned char *addr, struct net_device *ifp, ulong bu
|
||||
spin_lock_irqsave(&devlist_lock, flags);
|
||||
|
||||
for (d=devlist; d; d=d->next)
|
||||
if (d->sysminor == sysminor
|
||||
|| memcmp(d->addr, addr, sizeof d->addr) == 0)
|
||||
if (d->sysminor == sysminor)
|
||||
break;
|
||||
|
||||
if (d == NULL && (d = aoedev_newdev(bufcnt)) == NULL) {
|
||||
spin_unlock_irqrestore(&devlist_lock, flags);
|
||||
printk(KERN_INFO "aoe: aoedev_set: aoedev_newdev failure.\n");
|
||||
return NULL;
|
||||
}
|
||||
} /* if newdev, (d->flags & DEVFL_UP) == 0 for below */
|
||||
|
||||
spin_unlock_irqrestore(&devlist_lock, flags);
|
||||
spin_lock_irqsave(&d->lock, flags);
|
||||
|
||||
d->ifp = ifp;
|
||||
|
||||
if (d->sysminor != sysminor
|
||||
|| (d->flags & DEVFL_UP) == 0) {
|
||||
memcpy(d->addr, addr, sizeof d->addr);
|
||||
if ((d->flags & DEVFL_UP) == 0) {
|
||||
aoedev_downdev(d); /* flushes outstanding frames */
|
||||
memcpy(d->addr, addr, sizeof d->addr);
|
||||
d->sysminor = sysminor;
|
||||
d->aoemajor = AOEMAJOR(sysminor);
|
||||
d->aoeminor = AOEMINOR(sysminor);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <linux/hdreg.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include "aoe.h"
|
||||
|
||||
#define NECODES 5
|
||||
@@ -26,6 +27,19 @@ enum {
|
||||
};
|
||||
|
||||
static char aoe_iflist[IFLISTSZ];
|
||||
module_param_string(aoe_iflist, aoe_iflist, IFLISTSZ, 0600);
|
||||
MODULE_PARM_DESC(aoe_iflist, "aoe_iflist=\"dev1 [dev2 ...]\"\n");
|
||||
|
||||
#ifndef MODULE
|
||||
static int __init aoe_iflist_setup(char *str)
|
||||
{
|
||||
strncpy(aoe_iflist, str, IFLISTSZ);
|
||||
aoe_iflist[IFLISTSZ - 1] = '\0';
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("aoe_iflist=", aoe_iflist_setup);
|
||||
#endif
|
||||
|
||||
int
|
||||
is_aoe_netif(struct net_device *ifp)
|
||||
@@ -36,7 +50,8 @@ is_aoe_netif(struct net_device *ifp)
|
||||
if (aoe_iflist[0] == '\0')
|
||||
return 1;
|
||||
|
||||
for (p = aoe_iflist; *p; p = q + strspn(q, WHITESPACE)) {
|
||||
p = aoe_iflist + strspn(aoe_iflist, WHITESPACE);
|
||||
for (; *p; p = q + strspn(q, WHITESPACE)) {
|
||||
q = p + strcspn(p, WHITESPACE);
|
||||
if (q != p)
|
||||
len = q - p;
|
||||
|
||||
Reference in New Issue
Block a user