[SCSI] iscsi class: expand vlan support

Add support to set vlan priority and enable/disble a vlan.

Patch based on code from Vikas Chaudhary.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Mike Christie 2011-07-25 13:48:47 -05:00 committed by James Bottomley
parent 3093b0484d
commit 4223b9e919
2 changed files with 19 additions and 2 deletions

View File

@ -319,6 +319,8 @@ iscsi_iface_net_attr(ipv6_iface, linklocal_autocfg,
/* common read only iface attribute */ /* common read only iface attribute */
iscsi_iface_net_attr(iface, enabled, ISCSI_NET_PARAM_IFACE_ENABLE); iscsi_iface_net_attr(iface, enabled, ISCSI_NET_PARAM_IFACE_ENABLE);
iscsi_iface_net_attr(iface, vlan, ISCSI_NET_PARAM_VLAN_ID); iscsi_iface_net_attr(iface, vlan, ISCSI_NET_PARAM_VLAN_ID);
iscsi_iface_net_attr(iface, vlan_priority, ISCSI_NET_PARAM_VLAN_PRIORITY);
iscsi_iface_net_attr(iface, vlan_enabled, ISCSI_NET_PARAM_VLAN_ENABLED);
static mode_t iscsi_iface_attr_is_visible(struct kobject *kobj, static mode_t iscsi_iface_attr_is_visible(struct kobject *kobj,
struct attribute *attr, int i) struct attribute *attr, int i)
@ -332,6 +334,10 @@ static mode_t iscsi_iface_attr_is_visible(struct kobject *kobj,
param = ISCSI_NET_PARAM_IFACE_ENABLE; param = ISCSI_NET_PARAM_IFACE_ENABLE;
else if (attr == &dev_attr_iface_vlan.attr) else if (attr == &dev_attr_iface_vlan.attr)
param = ISCSI_NET_PARAM_VLAN_ID; param = ISCSI_NET_PARAM_VLAN_ID;
else if (attr == &dev_attr_iface_vlan_priority.attr)
param = ISCSI_NET_PARAM_VLAN_PRIORITY;
else if (attr == &dev_attr_iface_vlan_enabled.attr)
param = ISCSI_NET_PARAM_VLAN_ENABLED;
else if (iface->iface_type == ISCSI_IFACE_TYPE_IPV4) { else if (iface->iface_type == ISCSI_IFACE_TYPE_IPV4) {
if (attr == &dev_attr_ipv4_iface_ipaddress.attr) if (attr == &dev_attr_ipv4_iface_ipaddress.attr)
param = ISCSI_NET_PARAM_IPV4_ADDR; param = ISCSI_NET_PARAM_IPV4_ADDR;
@ -367,6 +373,8 @@ static mode_t iscsi_iface_attr_is_visible(struct kobject *kobj,
static struct attribute *iscsi_iface_attrs[] = { static struct attribute *iscsi_iface_attrs[] = {
&dev_attr_iface_enabled.attr, &dev_attr_iface_enabled.attr,
&dev_attr_iface_vlan.attr, &dev_attr_iface_vlan.attr,
&dev_attr_iface_vlan_priority.attr,
&dev_attr_iface_vlan_enabled.attr,
&dev_attr_ipv4_iface_ipaddress.attr, &dev_attr_ipv4_iface_ipaddress.attr,
&dev_attr_ipv4_iface_gateway.attr, &dev_attr_ipv4_iface_gateway.attr,
&dev_attr_ipv4_iface_subnet.attr, &dev_attr_ipv4_iface_subnet.attr,

View File

@ -281,6 +281,13 @@ struct iscsi_path {
#define ISCSI_IFACE_TYPE_IPV4 0x01 #define ISCSI_IFACE_TYPE_IPV4 0x01
#define ISCSI_IFACE_TYPE_IPV6 0x02 #define ISCSI_IFACE_TYPE_IPV6 0x02
#define ISCSI_MAX_VLAN_ID 4095
#define ISCSI_MAX_VLAN_PRIORITY 7
/* iscsi vlan enable/disabled setting */
#define ISCSI_VLAN_DISABLE 0x01
#define ISCSI_VLAN_ENABLE 0x02
/* iSCSI network params */ /* iSCSI network params */
enum iscsi_net_param { enum iscsi_net_param {
ISCSI_NET_PARAM_IPV4_ADDR = 1, ISCSI_NET_PARAM_IPV4_ADDR = 1,
@ -296,8 +303,10 @@ enum iscsi_net_param {
ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG = 11, ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG = 11,
ISCSI_NET_PARAM_IFACE_ENABLE = 12, ISCSI_NET_PARAM_IFACE_ENABLE = 12,
ISCSI_NET_PARAM_VLAN_ID = 13, ISCSI_NET_PARAM_VLAN_ID = 13,
ISCSI_NET_PARAM_IFACE_TYPE = 14, ISCSI_NET_PARAM_VLAN_PRIORITY = 14,
ISCSI_NET_PARAM_IFACE_NAME = 15, ISCSI_NET_PARAM_VLAN_ENABLED = 15,
ISCSI_NET_PARAM_IFACE_TYPE = 16,
ISCSI_NET_PARAM_IFACE_NAME = 17,
}; };
/* /*