aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/aoe/aoe.txt23
-rw-r--r--drivers/block/aoe/aoenet.c17
2 files changed, 39 insertions, 1 deletions
diff --git a/Documentation/aoe/aoe.txt b/Documentation/aoe/aoe.txt
index 43e50108d0e2..1212987a30fa 100644
--- a/Documentation/aoe/aoe.txt
+++ b/Documentation/aoe/aoe.txt
@@ -33,6 +33,9 @@ USING DEVICE NODES
33 "cat /dev/etherd/err" blocks, waiting for error diagnostic output, 33 "cat /dev/etherd/err" blocks, waiting for error diagnostic output,
34 like any retransmitted packets. 34 like any retransmitted packets.
35 35
36 The /dev/etherd/interfaces special file is obsoleted by the
37 aoe_iflist boot option and module option (and its sysfs entry
38 described in the next section).
36 "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to 39 "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to
37 limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from 40 limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from
38 untrusted networks should be ignored as a matter of security. 41 untrusted networks should be ignored as a matter of security.
@@ -89,3 +92,23 @@ USING SYSFS
89 e4.7 eth1 up 92 e4.7 eth1 up
90 e4.8 eth1 up 93 e4.8 eth1 up
91 e4.9 eth1 up 94 e4.9 eth1 up
95
96 Use /sys/module/aoe/parameters/aoe_iflist (or better, the driver
97 option discussed below) instead of /dev/etherd/interfaces to limit
98 AoE traffic to the network interfaces in the given
99 whitespace-separated list. Unlike the old character device, the
100 sysfs entry can be read from as well as written to.
101
102 It's helpful to trigger discovery after setting the list of allowed
103 interfaces. If your distro provides an aoe-discover script, you can
104 use that. Otherwise, you can directly use the /dev/etherd/discover
105 file described above.
106
107DRIVER OPTIONS
108
109 There is a boot option for the built-in aoe driver and a
110 corresponding module parameter, aoe_iflist. Without this option,
111 all network interfaces may be used for ATA over Ethernet. Here is a
112 usage example for the module parameter.
113
114 modprobe aoe_iflist="eth1 eth3"
diff --git a/drivers/block/aoe/aoenet.c b/drivers/block/aoe/aoenet.c
index bc92aacb6dad..9e6f51c528b0 100644
--- a/drivers/block/aoe/aoenet.c
+++ b/drivers/block/aoe/aoenet.c
@@ -7,6 +7,7 @@
7#include <linux/hdreg.h> 7#include <linux/hdreg.h>
8#include <linux/blkdev.h> 8#include <linux/blkdev.h>
9#include <linux/netdevice.h> 9#include <linux/netdevice.h>
10#include <linux/moduleparam.h>
10#include "aoe.h" 11#include "aoe.h"
11 12
12#define NECODES 5 13#define NECODES 5
@@ -26,6 +27,19 @@ enum {
26}; 27};
27 28
28static char aoe_iflist[IFLISTSZ]; 29static char aoe_iflist[IFLISTSZ];
30module_param_string(aoe_iflist, aoe_iflist, IFLISTSZ, 0600);
31MODULE_PARM_DESC(aoe_iflist, "aoe_iflist=\"dev1 [dev2 ...]\"\n");
32
33#ifndef MODULE
34static int __init aoe_iflist_setup(char *str)
35{
36 strncpy(aoe_iflist, str, IFLISTSZ);
37 aoe_iflist[IFLISTSZ - 1] = '\0';
38 return 1;
39}
40
41__setup("aoe_iflist=", aoe_iflist_setup);
42#endif
29 43
30int 44int
31is_aoe_netif(struct net_device *ifp) 45is_aoe_netif(struct net_device *ifp)
@@ -36,7 +50,8 @@ is_aoe_netif(struct net_device *ifp)
36 if (aoe_iflist[0] == '\0') 50 if (aoe_iflist[0] == '\0')
37 return 1; 51 return 1;
38 52
39 for (p = aoe_iflist; *p; p = q + strspn(q, WHITESPACE)) { 53 p = aoe_iflist + strspn(aoe_iflist, WHITESPACE);
54 for (; *p; p = q + strspn(q, WHITESPACE)) {
40 q = p + strcspn(p, WHITESPACE); 55 q = p + strcspn(p, WHITESPACE);
41 if (q != p) 56 if (q != p)
42 len = q - p; 57 len = q - p;