[PATCH 08/19] iscsi class: remove iface param mask

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Mike Christie <michaelc@xxxxxxxxxxx>

We can replace the iface param mask with the
attr_is_visible callback.

Signed-off-by: Mike Christie <michaelc@xxxxxxxxxxx>
---
 drivers/scsi/qla4xxx/ql4_os.c       |   27 ++++++++++++--------
 drivers/scsi/scsi_transport_iscsi.c |   45 ++++++++++++++++------------------
 include/scsi/iscsi_if.h             |   17 -------------
 include/scsi/scsi_transport_iscsi.h |    1 -
 4 files changed, 37 insertions(+), 53 deletions(-)

diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 3022c15..df6da3c 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -141,17 +141,6 @@ static struct iscsi_transport qla4xxx_iscsi_transport = {
 	.host_param_mask	= ISCSI_HOST_HWADDRESS |
 				  ISCSI_HOST_IPADDRESS |
 				  ISCSI_HOST_INITIATOR_NAME,
-	.iface_param_mask	= ISCSI_NET_IPV4_ADDR |
-				  ISCSI_NET_IPV4_SUBNET |
-				  ISCSI_NET_IPV4_GW |
-				  ISCSI_NET_IPV4_BOOTPROTO |
-				  ISCSI_NET_IFACE_ENABLE |
-				  ISCSI_NET_IPV6_LINKLOCAL |
-				  ISCSI_NET_IPV6_ADDR |
-				  ISCSI_NET_IPV6_ROUTER |
-				  ISCSI_NET_IPV6_ADDR_AUTOCFG |
-				  ISCSI_NET_IPV6_LINKLOCAL_AUTOCFG |
-				  ISCSI_NET_IFACE_ENABLE,
 	.tgt_dscvr		= qla4xxx_tgt_dscvr,
 	.attr_is_visible	= ql4_attr_is_visible,
 	.get_conn_param		= qla4xxx_conn_get_param,
@@ -178,6 +167,22 @@ static mode_t ql4_attr_is_visible(int param_type, int param)
 		default:
 			return 0;
 		}
+	case ISCSI_NET_PARAM:
+		switch (param) {
+		case ISCSI_NET_PARAM_IPV4_ADDR:
+		case ISCSI_NET_PARAM_IPV4_SUBNET:
+		case ISCSI_NET_PARAM_IPV4_GW:
+		case ISCSI_NET_PARAM_IPV4_BOOTPROTO:
+		case ISCSI_NET_PARAM_IFACE_ENABLE:
+		case ISCSI_NET_PARAM_IPV6_LINKLOCAL:
+		case ISCSI_NET_PARAM_IPV6_ADDR:
+		case ISCSI_NET_PARAM_IPV6_ROUTER:
+		case ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG:
+		case ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG:
+			return S_IRUGO;
+		default:
+			return 0;
+		}
 	}
 
 	return 0;
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 75d7f6e..a8dd85d 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -329,45 +329,42 @@ static mode_t iscsi_iface_attr_is_visible(struct kobject *kobj,
 	struct device *dev = container_of(kobj, struct device, kobj);
 	struct iscsi_iface *iface = iscsi_dev_to_iface(dev);
 	struct iscsi_transport *t = iface->transport;
+	int param;
 
 	if (attr == &dev_attr_iface_enabled.attr)
-		return (t->iface_param_mask & ISCSI_NET_IFACE_ENABLE) ?
-								S_IRUGO : 0;
+		param = ISCSI_NET_PARAM_IFACE_ENABLE;
 	else if (attr == &dev_attr_iface_vlan.attr)
-		return (t->iface_param_mask & ISCSI_NET_VLAN_ID) ? S_IRUGO : 0;
-
-	if (iface->iface_type == ISCSI_IFACE_TYPE_IPV4) {
+		param = ISCSI_NET_PARAM_VLAN_ID;
+	else if (iface->iface_type == ISCSI_IFACE_TYPE_IPV4) {
 		if (attr == &dev_attr_ipv4_iface_ipaddress.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV4_ADDR) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV4_ADDR;
 		else if (attr == &dev_attr_ipv4_iface_gateway.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV4_GW) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV4_GW;
 		else if (attr == &dev_attr_ipv4_iface_subnet.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV4_SUBNET) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV4_SUBNET;
 		else if (attr == &dev_attr_ipv4_iface_bootproto.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV4_BOOTPROTO) ?
-								 S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV4_BOOTPROTO;
+		else
+			return 0;
 	} else if (iface->iface_type == ISCSI_IFACE_TYPE_IPV6) {
 		if (attr == &dev_attr_ipv6_iface_ipaddress.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV6_ADDR) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV6_ADDR;
 		else if (attr == &dev_attr_ipv6_iface_link_local_addr.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV6_LINKLOCAL) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV6_LINKLOCAL;
 		else if (attr == &dev_attr_ipv6_iface_router_addr.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV6_ROUTER) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV6_ROUTER;
 		else if (attr == &dev_attr_ipv6_iface_ipaddr_autocfg.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV6_ADDR_AUTOCFG) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG;
 		else if (attr == &dev_attr_ipv6_iface_linklocal_autocfg.attr)
-			return (t->iface_param_mask & ISCSI_NET_IPV6_LINKLOCAL_AUTOCFG) ?
-								S_IRUGO : 0;
+			param = ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG;
+		else
+			return 0;
+	} else {
+		WARN_ONCE(1, "Invalid iface attr");
+		return 0;
 	}
 
-	return 0;
+	return t->attr_is_visible(ISCSI_NET_PARAM, param);
 }
 
 static struct attribute *iscsi_iface_attrs[] = {
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h
index a4353ff..164a753 100644
--- a/include/scsi/iscsi_if.h
+++ b/include/scsi/iscsi_if.h
@@ -300,23 +300,6 @@ enum iscsi_net_param {
 	ISCSI_NET_PARAM_IFACE_NAME		= 15,
 };
 
-#define ISCSI_NET_IPV4_ADDR		(1ULL << ISCSI_NET_PARAM_IPV4_ADDR)
-#define ISCSI_NET_IPV4_SUBNET		(1ULL << ISCSI_NET_PARAM_IPV4_SUBNET)
-#define ISCSI_NET_IPV4_GW		(1ULL << ISCSI_NET_PARAM_IPV4_GW)
-#define ISCSI_NET_IPV4_BOOTPROTO	(1ULL << ISCSI_NET_PARAM_IPV4_BOOTPROTO)
-#define ISCSI_NET_MAC			(1ULL << ISCSI_NET_PARAM_MAC)
-#define ISCSI_NET_IPV6_LINKLOCAL	(1ULL << ISCSI_NET_PARAM_IPV6_LINKLOCAL)
-#define ISCSI_NET_IPV6_ADDR		(1ULL << ISCSI_NET_PARAM_IPV6_ADDR)
-#define ISCSI_NET_IPV6_ROUTER		(1ULL << ISCSI_NET_PARAM_IPV6_ROUTER)
-#define ISCSI_NET_IPV6_ADDR_AUTOCFG		\
-				(1ULL << ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG)
-#define ISCSI_NET_IPV6_LINKLOCAL_AUTOCFG	\
-				(1ULL << ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG)
-#define ISCSI_NET_IPV6_ROUTER_AUTOCFG		\
-                               (1ULL << ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG)
-#define ISCSI_NET_IFACE_ENABLE		(1ULL << ISCSI_NET_PARAM_IFACE_ENABLE)
-#define ISCSI_NET_VLAN_ID			(1ULL << ISCSI_NET_PARAM_VLAN_ID)
-
 /*
  * Common error codes
  */
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
index 53eb938..b9e9ef5 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -87,7 +87,6 @@ struct iscsi_transport {
 	unsigned int caps;
 	/* LLD sets this to indicate what values it can export to sysfs */
 	uint64_t host_param_mask;
-	uint64_t iface_param_mask;
 
 	struct iscsi_cls_session *(*create_session) (struct iscsi_endpoint *ep,
 					uint16_t cmds_max, uint16_t qdepth,
-- 
1.7.2.3

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux