aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_transport_iscsi.c
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2006-06-28 13:00:22 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-06-29 11:06:59 -0400
commit01cb225dad8da2e717356fab03240e2f4a8d01bf (patch)
tree8accf53a998b27b61362aec3fe61e7b72c69bbde /drivers/scsi/scsi_transport_iscsi.c
parent332959cb521af6bb0281c7aae797f1f91dcb4c42 (diff)
[SCSI] iscsi: add target discvery event to transport class
Patch from david.somayajulu@qlogic.com: Add target discovery event. We may have a setup where the iscsi traffic is on a different netowrk than the other network traffic. In this case we will want to do discovery though the iscsi card. This patch adds a event to the transport class that can be used by hw iscsi cards that support this. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/scsi_transport_iscsi.c')
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 5569fdcfd621..99e76d458290 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -978,6 +978,21 @@ iscsi_if_transport_ep(struct iscsi_transport *transport,
978} 978}
979 979
980static int 980static int
981iscsi_tgt_dscvr(struct iscsi_transport *transport,
982 struct iscsi_uevent *ev)
983{
984 struct sockaddr *dst_addr;
985
986 if (!transport->tgt_dscvr)
987 return -EINVAL;
988
989 dst_addr = (struct sockaddr *)((char*)ev + sizeof(*ev));
990 return transport->tgt_dscvr(ev->u.tgt_dscvr.type,
991 ev->u.tgt_dscvr.host_no,
992 ev->u.tgt_dscvr.enable, dst_addr);
993}
994
995static int
981iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) 996iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
982{ 997{
983 int err = 0; 998 int err = 0;
@@ -1065,6 +1080,9 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
1065 case ISCSI_UEVENT_TRANSPORT_EP_DISCONNECT: 1080 case ISCSI_UEVENT_TRANSPORT_EP_DISCONNECT:
1066 err = iscsi_if_transport_ep(transport, ev, nlh->nlmsg_type); 1081 err = iscsi_if_transport_ep(transport, ev, nlh->nlmsg_type);
1067 break; 1082 break;
1083 case ISCSI_UEVENT_TGT_DSCVR:
1084 err = iscsi_tgt_dscvr(transport, ev);
1085 break;
1068 default: 1086 default:
1069 err = -EINVAL; 1087 err = -EINVAL;
1070 break; 1088 break;