scsi: libfc: Replace ->rport_lookup callback with function call
authorHannes Reinecke <hare@suse.de>
Tue, 18 Oct 2016 08:01:40 +0000 (10:01 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 Nov 2016 22:29:55 +0000 (17:29 -0500)
The ->rport_lookup callback only ever had a single implementation,
so we can as well call it directly and drop the callback.

Signed-off-by: Hannes Reinecke <hare@suse.com>
Acked-by: Johannes Thumshirn <jth@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/fcoe/fcoe_ctlr.c
drivers/scsi/libfc/fc_lport.c
drivers/scsi/libfc/fc_rport.c
include/scsi/libfc.h

index 4fc7677feb50c9bc306bbc93215c409d8e9c2cd2..bae4e5a4f0ec8342a5a90ab376d628033a421e64 100644 (file)
@@ -2561,7 +2561,7 @@ static int fcoe_ctlr_vn_lookup(struct fcoe_ctlr *fip, u32 port_id, u8 *mac)
        struct fcoe_rport *frport;
        int ret = -1;
 
-       rdata = lport->tt.rport_lookup(lport, port_id);
+       rdata = fc_rport_lookup(lport, port_id);
        if (rdata) {
                frport = fcoe_ctlr_rport(rdata);
                memcpy(mac, frport->enode_mac, ETH_ALEN);
@@ -2663,7 +2663,7 @@ static void fcoe_ctlr_vn_beacon(struct fcoe_ctlr *fip,
                fcoe_ctlr_vn_send(fip, FIP_SC_VN_PROBE_REQ, fcoe_all_vn2vn, 0);
                return;
        }
-       rdata = lport->tt.rport_lookup(lport, new->ids.port_id);
+       rdata = fc_rport_lookup(lport, new->ids.port_id);
        if (rdata) {
                if (rdata->ids.node_name == new->ids.node_name &&
                    rdata->ids.port_name == new->ids.port_name) {
index ad45808c4833c7b71684b00877e9f31f023cf785..2da6c7c6544de5f851dd8db25520bdfb35a33624 100644 (file)
@@ -2125,7 +2125,7 @@ int fc_lport_bsg_request(struct fc_bsg_job *job)
                                break;
                        tov = rdata->e_d_tov;
                } else {
-                       rdata = lport->tt.rport_lookup(lport, did);
+                       rdata = fc_rport_lookup(lport, did);
                        if (!rdata)
                                break;
                        tov = rdata->e_d_tov;
index 47ab9625246b4ac95ebb405609b46c92dcb500df..5f674fc8412fabb9f93750f209f88d63f1a3b32d 100644 (file)
@@ -111,8 +111,8 @@ static const char *fc_rport_state_names[] = {
  * The reference count of the fc_rport_priv structure is
  * increased by one.
  */
-static struct fc_rport_priv *fc_rport_lookup(const struct fc_lport *lport,
-                                            u32 port_id)
+struct fc_rport_priv *fc_rport_lookup(const struct fc_lport *lport,
+                                     u32 port_id)
 {
        struct fc_rport_priv *rdata = NULL, *tmp_rdata;
 
@@ -126,6 +126,7 @@ static struct fc_rport_priv *fc_rport_lookup(const struct fc_lport *lport,
        rcu_read_unlock();
        return rdata;
 }
+EXPORT_SYMBOL(fc_rport_lookup);
 
 /**
  * fc_rport_create() - Create a new remote port
@@ -141,7 +142,7 @@ static struct fc_rport_priv *fc_rport_create(struct fc_lport *lport,
 {
        struct fc_rport_priv *rdata;
 
-       rdata = lport->tt.rport_lookup(lport, port_id);
+       rdata = fc_rport_lookup(lport, port_id);
        if (rdata)
                return rdata;
 
@@ -875,7 +876,7 @@ static void fc_rport_recv_flogi_req(struct fc_lport *lport,
                goto reject;
        }
 
-       rdata = lport->tt.rport_lookup(lport, sid);
+       rdata = fc_rport_lookup(lport, sid);
        if (!rdata) {
                rjt_data.reason = ELS_RJT_FIP;
                rjt_data.explan = ELS_EXPL_NOT_NEIGHBOR;
@@ -1684,7 +1685,7 @@ static void fc_rport_recv_els_req(struct fc_lport *lport, struct fc_frame *fp)
        struct fc_rport_priv *rdata;
        struct fc_seq_els_data els_data;
 
-       rdata = lport->tt.rport_lookup(lport, fc_frame_sid(fp));
+       rdata = fc_rport_lookup(lport, fc_frame_sid(fp));
        if (!rdata) {
                FC_RPORT_ID_DBG(lport, fc_frame_sid(fp),
                                "Received ELS 0x%02x from non-logged-in port\n",
@@ -2145,7 +2146,7 @@ static void fc_rport_recv_logo_req(struct fc_lport *lport, struct fc_frame *fp)
 
        sid = fc_frame_sid(fp);
 
-       rdata = lport->tt.rport_lookup(lport, sid);
+       rdata = fc_rport_lookup(lport, sid);
        if (rdata) {
                mutex_lock(&rdata->rp_mutex);
                FC_RPORT_DBG(rdata, "Received LOGO request while in state %s\n",
@@ -2174,9 +2175,6 @@ static void fc_rport_flush_queue(void)
  */
 int fc_rport_init(struct fc_lport *lport)
 {
-       if (!lport->tt.rport_lookup)
-               lport->tt.rport_lookup = fc_rport_lookup;
-
        if (!lport->tt.rport_create)
                lport->tt.rport_create = fc_rport_create;
 
index cec450f2db7b2dc49069f9943aef40db37800f94..683201f235005828462f4db4a112972c858929b6 100644 (file)
@@ -644,13 +644,6 @@ struct libfc_function_template {
         */
        void (*rport_recv_req)(struct fc_lport *, struct fc_frame *);
 
-       /*
-        * lookup an rport by it's port ID.
-        *
-        * STATUS: OPTIONAL
-        */
-       struct fc_rport_priv *(*rport_lookup)(const struct fc_lport *, u32);
-
        /*
         * Callback routine after the remote port is logged in
         *
@@ -1029,6 +1022,8 @@ void fc_lport_iterate(void (*func)(struct fc_lport *, void *), void *);
  *****************************/
 int fc_rport_init(struct fc_lport *);
 void fc_rport_terminate_io(struct fc_rport *);
+struct fc_rport_priv *fc_rport_lookup(const struct fc_lport *lport,
+                                     u32 port_id);
 void fc_rport_destroy(struct kref *kref);
 
 /*