Just trying to cleanup some of the repeated endpoint lookups.
---
 drivers/infiniband/ulp/iser/iscsi_iser.c | 11 +----------
 drivers/scsi/be2iscsi/be_iscsi.c         |  8 +-------
 drivers/scsi/be2iscsi/be_iscsi.h         |  1 +
 drivers/scsi/bnx2i/bnx2i_iscsi.c         |  7 +------
 drivers/scsi/cxgbi/libcxgbi.c            |  8 +-------
 drivers/scsi/cxgbi/libcxgbi.h            |  4 ++--
 drivers/scsi/iscsi_tcp.c                 |  5 +++--
 drivers/scsi/qedi/qedi_iscsi.c           |  6 +-----
 drivers/scsi/qla4xxx/ql4_os.c            |  8 ++------
 drivers/scsi/scsi_transport_iscsi.c      |  5 +++--
 include/scsi/scsi_transport_iscsi.h      |  3 +--
 11 files changed, 17 insertions(+), 49 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 41cad4bd8366..e07352cf8571 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -459,29 +459,20 @@ iscsi_iser_conn_create(struct iscsi_cls_session 
*cls_session,
 static int
 iscsi_iser_conn_bind(struct iscsi_cls_session *cls_session,
                     struct iscsi_cls_conn *cls_conn,
+                    struct iscsi_endpoint *ep,
                     uint64_t transport_eph,
                     int is_leading)
 {
        struct iscsi_conn *conn = cls_conn->dd_data;
        struct iser_conn *iser_conn;
-       struct iscsi_endpoint *ep;
-       struct net *net;
        int error;
 
        error = iscsi_conn_bind(cls_session, cls_conn, is_leading);
        if (error)
                return error;
 
-
        /* the transport ep handle comes from user space so it must be
         * verified against the global ib connections list */
-       net = iscsi_sess_net(cls_session);
-       ep = iscsi_lookup_endpoint(net, transport_eph);
-       if (!ep) {
-               iser_err("can't bind eph %llx\n",
-                        (unsigned long long)transport_eph);
-               return -EINVAL;
-       }
        iser_conn = ep->dd_data;
 
        mutex_lock(&iser_conn->state_mutex);
diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c
index 8f76d0f95ec4..4668b64f1ed1 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.c
+++ b/drivers/scsi/be2iscsi/be_iscsi.c
@@ -170,6 +170,7 @@ beiscsi_conn_create(struct iscsi_cls_session *cls_session, 
u32 cid)
  */
 int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
                      struct iscsi_cls_conn *cls_conn,
+                     struct iscsi_endpoint *ep,
                      u64 transport_fd, int is_leading)
 {
        struct iscsi_conn *conn = cls_conn->dd_data;
@@ -179,14 +180,7 @@ int beiscsi_conn_bind(struct iscsi_cls_session 
*cls_session,
        struct hwi_controller *phwi_ctrlr = phba->phwi_ctrlr;
        struct hwi_wrb_context *pwrb_context;
        struct beiscsi_endpoint *beiscsi_ep;
-       struct iscsi_endpoint *ep;
        uint16_t cri_index;
-       struct net *net;
-
-       net = iscsi_sess_net(cls_session);
-       ep = iscsi_lookup_endpoint(net, transport_fd);
-       if (!ep)
-               return -EINVAL;
 
        beiscsi_ep = ep->dd_data;
 
diff --git a/drivers/scsi/be2iscsi/be_iscsi.h b/drivers/scsi/be2iscsi/be_iscsi.h
index b9d459a21f25..c263e8e41d35 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.h
+++ b/drivers/scsi/be2iscsi/be_iscsi.h
@@ -52,6 +52,7 @@ struct iscsi_cls_conn *beiscsi_conn_create(struct 
iscsi_cls_session
 
 int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
                      struct iscsi_cls_conn *cls_conn,
+                     struct iscsi_endpoint *ep,
                      uint64_t transport_fd, int is_leading);
 
 int beiscsi_ep_get_param(struct iscsi_endpoint *ep, enum iscsi_param param,
diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c
index 06bd0223c009..406921a3ddbb 100644
--- a/drivers/scsi/bnx2i/bnx2i_iscsi.c
+++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c
@@ -1406,6 +1406,7 @@ bnx2i_conn_create(struct iscsi_cls_session *cls_session, 
uint32_t cid)
  */
 static int bnx2i_conn_bind(struct iscsi_cls_session *cls_session,
                           struct iscsi_cls_conn *cls_conn,
+                          struct iscsi_endpoint *ep,
                           uint64_t transport_fd, int is_leading)
 {
        struct iscsi_conn *conn = cls_conn->dd_data;
@@ -1413,14 +1414,8 @@ static int bnx2i_conn_bind(struct iscsi_cls_session 
*cls_session,
        struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
        struct bnx2i_hba *hba = iscsi_host_priv(shost);
        struct bnx2i_endpoint *bnx2i_ep;
-       struct iscsi_endpoint *ep;
-       struct net *net;
        int ret_code;
 
-       net = iscsi_sess_net(cls_session);
-       ep = iscsi_lookup_endpoint(net, transport_fd);
-       if (!ep)
-               return -EINVAL;
        /*
         * Forcefully terminate all in progress connection recovery at the
         * earliest, either in bind(), send_pdu(LOGIN), or conn_start()
diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
index 74cb2c7cce32..3d495315859d 100644
--- a/drivers/scsi/cxgbi/libcxgbi.c
+++ b/drivers/scsi/cxgbi/libcxgbi.c
@@ -2347,23 +2347,17 @@ EXPORT_SYMBOL_GPL(cxgbi_create_conn);
 
 int cxgbi_bind_conn(struct iscsi_cls_session *cls_session,
                                struct iscsi_cls_conn *cls_conn,
+                               struct iscsi_endpoint *ep,
                                u64 transport_eph, int is_leading)
 {
        struct iscsi_conn *conn = cls_conn->dd_data;
        struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
        struct cxgbi_conn *cconn = tcp_conn->dd_data;
        struct cxgbi_ppm *ppm;
-       struct iscsi_endpoint *ep;
        struct cxgbi_endpoint *cep;
        struct cxgbi_sock *csk;
-       struct net *net;
        int err;
 
-       net = iscsi_sess_net(cls_session);
-       ep = iscsi_lookup_endpoint(net, transport_eph);
-       if (!ep)
-               return -EINVAL;
-
        /*  setup ddp pagesize */
        cep = ep->dd_data;
        csk = cep->csk;
diff --git a/drivers/scsi/cxgbi/libcxgbi.h b/drivers/scsi/cxgbi/libcxgbi.h
index 31a5816c2e8d..6ece7152b0d3 100644
--- a/drivers/scsi/cxgbi/libcxgbi.h
+++ b/drivers/scsi/cxgbi/libcxgbi.h
@@ -589,8 +589,8 @@ int cxgbi_set_conn_param(struct iscsi_cls_conn *,
                        enum iscsi_param, char *, int);
 int cxgbi_get_ep_param(struct iscsi_endpoint *ep, enum iscsi_param, char *);
 struct iscsi_cls_conn *cxgbi_create_conn(struct iscsi_cls_session *, u32);
-int cxgbi_bind_conn(struct iscsi_cls_session *,
-                       struct iscsi_cls_conn *, u64, int);
+int cxgbi_bind_conn(struct iscsi_cls_session *, struct iscsi_cls_conn *, 
+                       struct iscsi_endpoint *, u64, int);
 void cxgbi_destroy_session(struct iscsi_cls_session *);
 struct iscsi_cls_session *cxgbi_create_session(struct iscsi_endpoint *,
                        u16, u16, u32);
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 19c1036a0ad2..00c441824d57 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -651,8 +651,9 @@ static void iscsi_sw_tcp_conn_stop(struct iscsi_cls_conn 
*cls_conn, int flag)
 
 static int
 iscsi_sw_tcp_conn_bind(struct iscsi_cls_session *cls_session,
-                      struct iscsi_cls_conn *cls_conn, uint64_t transport_eph,
-                      int is_leading)
+                      struct iscsi_cls_conn *cls_conn, 
+                      struct iscsi_endpoint *ep,
+                      uint64_t transport_eph, int is_leading)
 {
        struct iscsi_session *session = cls_session->dd_data;
        struct iscsi_conn *conn = cls_conn->dd_data;
diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c
index 37da9a8b43b1..2a49b02147fe 100644
--- a/drivers/scsi/qedi/qedi_iscsi.c
+++ b/drivers/scsi/qedi/qedi_iscsi.c
@@ -373,6 +373,7 @@ struct qedi_conn *qedi_get_conn_from_id(struct qedi_ctx 
*qedi, u32 iscsi_cid)
 
 static int qedi_conn_bind(struct iscsi_cls_session *cls_session,
                          struct iscsi_cls_conn *cls_conn,
+                         struct iscsi_endpoint *ep,
                          u64 transport_fd, int is_leading)
 {
        struct iscsi_conn *conn = cls_conn->dd_data;
@@ -380,11 +381,6 @@ static int qedi_conn_bind(struct iscsi_cls_session 
*cls_session,
        struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
        struct qedi_ctx *qedi = iscsi_host_priv(shost);
        struct qedi_endpoint *qedi_ep;
-       struct iscsi_endpoint *ep;
-
-       ep = iscsi_lookup_endpoint(transport_fd);
-       if (!ep)
-               return -EINVAL;
 
        qedi_ep = ep->dd_data;
        if ((qedi_ep->state == EP_STATE_TCP_FIN_RCVD) ||
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index b881634a24a2..79021797a508 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -130,6 +130,7 @@ static struct iscsi_cls_conn *
 qla4xxx_conn_create(struct iscsi_cls_session *cls_sess, uint32_t conn_idx);
 static int qla4xxx_conn_bind(struct iscsi_cls_session *cls_session,
                             struct iscsi_cls_conn *cls_conn,
+                            struct iscsi_endpoint *ep,
                             uint64_t transport_fd, int is_leading);
 static void qla4xxx_conn_destroy(struct iscsi_cls_conn *conn);
 static struct iscsi_cls_session *
@@ -3170,15 +3171,14 @@ qla4xxx_conn_create(struct iscsi_cls_session *cls_sess, 
uint32_t conn_idx)
 
 static int qla4xxx_conn_bind(struct iscsi_cls_session *cls_session,
                             struct iscsi_cls_conn *cls_conn,
+                            struct iscsi_endpoint *ep,
                             uint64_t transport_fd, int is_leading)
 {
        struct iscsi_conn *conn;
        struct qla_conn *qla_conn;
-       struct iscsi_endpoint *ep;
        struct ddb_entry *ddb_entry;
        struct scsi_qla_host *ha;
        struct iscsi_session *sess;
-       struct net *net;
 
        sess = cls_session->dd_data;
        ddb_entry = sess->dd_data;
@@ -3187,10 +3187,6 @@ static int qla4xxx_conn_bind(struct iscsi_cls_session 
*cls_session,
        DEBUG2(ql4_printk(KERN_INFO, ha, "%s: sid = %d, cid = %d\n", __func__,
                          cls_session->sid, cls_conn->cid));
 
-       net = iscsi_sess_net(cls_session);
-       ep = iscsi_lookup_endpoint(net, transport_fd);
-       if (!ep)
-               return -EINVAL;
        if (iscsi_conn_bind(cls_session, cls_conn, is_leading))
                return -EINVAL;
        conn = cls_conn->dd_data;
diff --git a/drivers/scsi/scsi_transport_iscsi.c 
b/drivers/scsi/scsi_transport_iscsi.c
index b931e21314ec..426b65bb1017 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1670,7 +1670,6 @@ struct net *iscsi_sess_net(struct iscsi_cls_session 
*cls_session)
 
        return iscsi_host_net(ihost);
 }
-EXPORT_SYMBOL_GPL(iscsi_sess_net);
 
 static const void *iscsi_sess_namespace(struct device *dev)
 {
@@ -3721,6 +3720,8 @@ iscsi_if_recv_msg(struct net *net, struct sk_buff *skb,
        case ISCSI_UEVENT_BIND_CONN:
                session = iscsi_session_lookup(net, ev->u.b_conn.sid);
                conn = iscsi_conn_lookup(net, ev->u.b_conn.sid, 
ev->u.b_conn.cid);
+               ep = iscsi_lookup_endpoint(net, ev->u.b_conn.transport_eph);
+               /* FIXME, verify this is not NULL ... but no ep for iscsi_tcp 
... */
 
                if (conn && conn->ep)
                        iscsi_if_ep_disconnect(net, transport, conn->ep->id);
@@ -3730,7 +3731,7 @@ iscsi_if_recv_msg(struct net *net, struct sk_buff *skb,
                        break;
                }
 
-               ev->r.retcode = transport->bind_conn(session, conn,
+               ev->r.retcode = transport->bind_conn(session, conn, ep,
                                                ev->u.b_conn.transport_eph,
                                                ev->u.b_conn.is_leading);
                if (ev->r.retcode || !transport->ep_connect)
diff --git a/include/scsi/scsi_transport_iscsi.h 
b/include/scsi/scsi_transport_iscsi.h
index 30ea22fc651c..16d3eb288221 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -97,6 +97,7 @@ struct iscsi_transport {
                                uint32_t cid);
        int (*bind_conn) (struct iscsi_cls_session *session,
                          struct iscsi_cls_conn *cls_conn,
+                         struct iscsi_endpoint *ep,
                          uint64_t transport_eph, int is_leading);
        int (*start_conn) (struct iscsi_cls_conn *conn);
        void (*stop_conn) (struct iscsi_cls_conn *conn, int flag);
@@ -268,8 +269,6 @@ struct iscsi_cls_session {
 #define iscsi_session_to_shost(_session) \
        dev_to_shost(_session->dev.parent)
 
-extern struct net *iscsi_sess_net(struct iscsi_cls_session *);
-
 #define starget_to_session(_stgt) \
        iscsi_dev_to_session(_stgt->dev.parent)
 
-- 
2.9.4

-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To post to this group, send email to open-iscsi@googlegroups.com.
Visit this group at https://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to