Used fcdev for frame_alloc instead outer port. The frame_alloc() is modified
in next patch with its all other references.

Signed-off-by: Vasu Dev <[EMAIL PROTECTED]>
---

 drivers/scsi/ofc/include/fc_exch.h     |    5 +++--
 drivers/scsi/ofc/include/fc_frame.h    |    2 ++
 drivers/scsi/ofc/libfc/fc_exch.c       |   32 ++++++++++++++++----------------
 drivers/scsi/ofc/libfc/fc_exch_impl.h  |    4 ++--
 drivers/scsi/ofc/libfc/fc_local_port.c |    2 +-
 drivers/scsi/ofc/libfc/fc_sess.c       |    2 +-
 drivers/scsi/ofc/libfc/fcs_cmd.c       |    2 +-
 drivers/scsi/ofc/libfc/fcs_state.c     |    1 +
 8 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/drivers/scsi/ofc/include/fc_exch.h 
b/drivers/scsi/ofc/include/fc_exch.h
index 91339ca..b97263f 100644
--- a/drivers/scsi/ofc/include/fc_exch.h
+++ b/drivers/scsi/ofc/include/fc_exch.h
@@ -27,6 +27,7 @@
 #include "fc_event.h"
 #include "fc_fs.h"
 #include "fc_els.h"
+#include "fcdev.h"
 
 /*
  * Principles of Operation.
@@ -92,9 +93,9 @@ void fc_exch_mgr_reset(struct fc_exch_mgr *, fc_fid_t s_id, 
fc_fid_t d_id);
 void fc_exch_set_addr(struct fc_exch *, fc_fid_t orig, fc_fid_t resp);
 
 /*
- * Set the output port to be used for an exchange.
+ * Set the device to be used for an exchange.
  */
-void fc_exch_set_port(struct fc_exch *, struct fc_port *);
+void fc_exch_set_dev(struct fc_exch *, struct fcdev *);
 
 /*
  * Start a new sequence as originator on a new exchange.
diff --git a/drivers/scsi/ofc/include/fc_frame.h 
b/drivers/scsi/ofc/include/fc_frame.h
index 3fce700..7c7e0c5 100644
--- a/drivers/scsi/ofc/include/fc_frame.h
+++ b/drivers/scsi/ofc/include/fc_frame.h
@@ -44,6 +44,7 @@
 
 struct fc_frame {
        struct fc_port  *fr_in_port;    /* port where frame was received */
+       struct fcdev    *dev;           /* fc device instance */
        struct fc_seq   *fr_seq;        /* for use with exchange manager */
        struct fc_frame_header *fr_hdr; /* pointer to frame header in buffer */
        const char      *fr_stamp;      /* debug info on last usage */
@@ -85,6 +86,7 @@ struct fc_frame {
 static inline void fc_frame_init(struct fc_frame *fp)
 {
        fp->fr_in_port = NULL;
+       fp->dev = NULL;
        fp->fr_seq = NULL;
        fp->fr_flags = 0;
        fp->fr_sg_len = 0;
diff --git a/drivers/scsi/ofc/libfc/fc_exch.c b/drivers/scsi/ofc/libfc/fc_exch.c
index db67d98..a6ea157 100644
--- a/drivers/scsi/ofc/libfc/fc_exch.c
+++ b/drivers/scsi/ofc/libfc/fc_exch.c
@@ -481,7 +481,7 @@ int fc_seq_abort_exch(const struct fc_seq *req_sp)
                /*
                 * Send an abort for the sequence that timed out.
                 */
-               fp = fc_frame_alloc(ep->ex_port, 0);
+               fp = fc_frame_alloc(ep->dev, 0);
                if (fp) {
                        fc_frame_setup(fp, FC_RCTL_BA_ABTS, FC_TYPE_BLS);
                        sp->seq_f_ctl |= FC_FC_SEQ_INIT;
@@ -609,7 +609,7 @@ static struct fc_exch *fc_exch_resp(struct fc_exch_mgr *mp,
 
        ep = fc_exch_alloc(mp);
        if (ep) {
-               ep->ex_port = fp->fr_in_port;
+               ep->dev = fp->dev;
                ep->ex_class = fc_frame_class(fp);
 
                /*
@@ -788,9 +788,9 @@ static struct fc_seq *fc_seq_lookup_orig(struct fc_exch_mgr 
*mp,
 /*
  * Set the output port to be used for an exchange.
  */
-void fc_exch_set_port(struct fc_exch *ep, struct fc_port *port)
+void fc_exch_set_dev(struct fc_exch *ep, struct fcdev *dev)
 {
-       ep->ex_port = port;
+       ep->dev = dev;
 }
 
 /*
@@ -934,7 +934,7 @@ size_t fc_seq_mfs(struct fc_seq *sp)
 int fc_seq_send_frag(struct fc_seq *sp, struct fc_frame *fp)
 {
        struct fc_exch *ep;
-       struct fc_port *port;
+       struct fcdev *dev;
        struct fc_frame_header *fh;
        enum fc_class class;
        u_int32_t f_ctl;
@@ -942,7 +942,7 @@ int fc_seq_send_frag(struct fc_seq *sp, struct fc_frame *fp)
 
        ep = fc_seq_exch(sp);
        WARN_ON((ep->ex_e_stat & ESB_ST_SEQ_INIT) != ESB_ST_SEQ_INIT);
-       port = ep->ex_port;
+       dev = ep->dev;
 
        WARN_ON((sp->seq_f_ctl & FC_FC_END_SEQ) != 0);
        WARN_ON(fp->fr_len % 4 != 0);   /* can't pad except on last frame */
@@ -969,7 +969,7 @@ int fc_seq_send_frag(struct fc_seq *sp, struct fc_frame *fp)
        /*
         * Send the frame.
         */
-       error = fc_port_egress(port, fp);
+       error = dev->port_ops.send(dev, fp);
 
        /*
         * Update the exchange and sequence flags.
@@ -989,7 +989,7 @@ int fc_seq_send_frag(struct fc_seq *sp, struct fc_frame *fp)
 int fc_seq_send(struct fc_seq *sp, struct fc_frame *fp)
 {
        struct fc_exch *ep;
-       struct fc_port *port;
+       struct fcdev *dev;
        struct fc_frame_header *fh;
        enum fc_class class;
        u_int32_t f_ctl;
@@ -998,7 +998,7 @@ int fc_seq_send(struct fc_seq *sp, struct fc_frame *fp)
 
        ep = fc_seq_exch(sp);
        WARN_ON((ep->ex_e_stat & ESB_ST_SEQ_INIT) != ESB_ST_SEQ_INIT);
-       port = ep->ex_port;
+       dev = ep->dev;
        WARN_ON((sp->seq_f_ctl & FC_FC_END_SEQ) != 0);
 
        class = ep->ex_class;
@@ -1032,7 +1032,7 @@ int fc_seq_send(struct fc_seq *sp, struct fc_frame *fp)
        /*
         * Send the frame.
         */
-       error = fc_port_egress(port, fp);
+       error = dev->port_ops.send(dev, fp);
 
        /*
         * Update the exchange and sequence flags,
@@ -1115,7 +1115,7 @@ static void fc_seq_send_ack(struct fc_seq *sp, const 
struct fc_frame *rx_fp)
         * Don't send ACKs for class 3.
         */
        if (fc_sof_needs_ack(rx_fp->fr_sof)) {
-               fp = fc_frame_alloc(fc_seq_exch(sp)->ex_port, 0);
+               fp = fc_frame_alloc(fc_seq_exch(sp)->dev, 0);
                BUG_ON(!fp);
                if (!fp)
                        return;
@@ -1150,7 +1150,7 @@ static void fc_seq_send_ack(struct fc_seq *sp, const 
struct fc_frame *rx_fp)
                } else {
                        fp->fr_eof = FC_EOF_N;
                }
-               (void)fc_port_egress(rx_fp->fr_in_port, fp);
+               (void) rx_fp->dev->port_ops.send(rx_fp->dev, fp);
        }
 }
 
@@ -1451,7 +1451,7 @@ void fc_seq_ls_acc(struct fc_seq *req_sp)
        struct fc_frame *fp;
 
        sp = fc_seq_start_next(req_sp);
-       fp = fc_frame_alloc(fc_seq_exch(sp)->ex_port, sizeof(*acc));
+       fp = fc_frame_alloc(fc_seq_exch(sp)->dev, sizeof(*acc));
        if (fp) {
                acc = fc_frame_payload_get(fp, sizeof(*acc));
                memset(acc, 0, sizeof(*acc));
@@ -1475,7 +1475,7 @@ void fc_seq_ls_rjt(struct fc_seq *req_sp, enum 
fc_els_rjt_reason reason,
        struct fc_frame *fp;
 
        sp = fc_seq_start_next(req_sp);
-       fp = fc_frame_alloc(fc_seq_exch(sp)->ex_port, sizeof(*rjt));
+       fp = fc_frame_alloc(fc_seq_exch(sp)->dev, sizeof(*rjt));
        if (fp) {
                rjt = fc_frame_payload_get(fp, sizeof(*rjt));
                memset(rjt, 0, sizeof(*rjt));
@@ -1533,7 +1533,7 @@ struct fc_seq *fc_seq_rec_req(struct fc_seq *inq_sp,
        struct fc_els_rec *rp;
 
        ep = fc_seq_exch(inq_sp);
-       fp = fc_frame_alloc(ep->ex_port, sizeof(*rp));
+       fp = fc_frame_alloc(ep->dev, sizeof(*rp));
        if (!fp)
                return NULL;
        sp = fc_seq_start_exch(ep->ex_pool->emp_mgr, recv, errh, arg,
@@ -1542,7 +1542,7 @@ struct fc_seq *fc_seq_rec_req(struct fc_seq *inq_sp,
                fc_frame_free(fp);
                return NULL;
        }
-       fc_seq_exch(sp)->ex_port = ep->ex_port;
+       fc_seq_exch(sp)->dev = ep->dev;
        rp = fc_frame_payload_get(fp, sizeof(*rp));
        memset(rp, 0, sizeof(*rp));
        rp->rec_cmd = ELS_REC;
diff --git a/drivers/scsi/ofc/libfc/fc_exch_impl.h 
b/drivers/scsi/ofc/libfc/fc_exch_impl.h
index 98eeee2..9b798fd 100644
--- a/drivers/scsi/ofc/libfc/fc_exch_impl.h
+++ b/drivers/scsi/ofc/libfc/fc_exch_impl.h
@@ -77,8 +77,8 @@ struct fc_exch {
        /*
         * Fields after ex_refcnt are cleared when an exchange is reallocated.
         */
-#define fc_exch_clear_start ex_port
-       struct fc_port  *ex_port;       /* port to peer (s/b in remote port) */
+#define fc_exch_clear_start dev
+       struct fcdev    *dev;           /* fc device instance */
        fc_xid_t        ex_ox_id;       /* originator's exchange ID */
        fc_xid_t        ex_rx_id;       /* responder's exchange ID */
        fc_fid_t        ex_orig_fid;    /* originator's FCID */
diff --git a/drivers/scsi/ofc/libfc/fc_local_port.c 
b/drivers/scsi/ofc/libfc/fc_local_port.c
index be5a559..6160bdf 100644
--- a/drivers/scsi/ofc/libfc/fc_local_port.c
+++ b/drivers/scsi/ofc/libfc/fc_local_port.c
@@ -398,7 +398,7 @@ static void fc_local_port_els_send(struct fc_local_port *lp,
                                   struct fc_seq *sp, struct fc_frame *fp)
 {
        if (sp && fp) {
-               fc_seq_exch(sp)->ex_port = lp->fl_port;
+               fc_seq_exch(sp)->dev = lp->dev;
                fc_exch_timer_set(fc_seq_exch(sp), lp->fl_e_d_tov);
                if (fc_seq_send_req(sp, fp, FC_RCTL_ELS_REQ, FC_TYPE_ELS, 0))
                        fc_local_port_retry(lp);
diff --git a/drivers/scsi/ofc/libfc/fc_sess.c b/drivers/scsi/ofc/libfc/fc_sess.c
index 1eb3bc3..0d5f611 100644
--- a/drivers/scsi/ofc/libfc/fc_sess.c
+++ b/drivers/scsi/ofc/libfc/fc_sess.c
@@ -519,7 +519,7 @@ struct fc_seq *fc_sess_seq_alloc(struct fc_sess *sess,
                               sess->fs_remote_fid);
        if (sp) {
                ep = fc_seq_exch(sp);
-               ep->ex_port = lp->fl_port;
+               ep->dev = lp->dev;
                ep->ex_max_payload = sess->fs_max_payload;
        }
        return sp;
diff --git a/drivers/scsi/ofc/libfc/fcs_cmd.c b/drivers/scsi/ofc/libfc/fcs_cmd.c
index fb066bd..3253abd 100644
--- a/drivers/scsi/ofc/libfc/fcs_cmd.c
+++ b/drivers/scsi/ofc/libfc/fcs_cmd.c
@@ -140,7 +140,7 @@ int fcs_cmd_send(struct fcs_state *sp, struct fc_frame *fp,
        }
 
        cp->fcc_seq = seq;
-       fc_exch_set_port(fc_seq_exch(seq), sp->fs_args.fca_port);
+       fc_exch_set_dev(fc_seq_exch(seq), sp->fs_args.dev);
        cp->fcc_req_hdr = *fh;
        kref_get(&cp->fcc_kref);        /* take ref for response */
 
diff --git a/drivers/scsi/ofc/libfc/fcs_state.c 
b/drivers/scsi/ofc/libfc/fcs_state.c
index e514504..0669427 100644
--- a/drivers/scsi/ofc/libfc/fcs_state.c
+++ b/drivers/scsi/ofc/libfc/fcs_state.c
@@ -178,6 +178,7 @@ void fcs_recv(struct fcs_state *sp, struct fc_frame *fp)
 
        if (sp->fs_local_port) {
                fp->fr_in_port = sp->fs_inner_port;
+               fp->dev = sp->fs_args.dev;
                fc_local_port_recv(sp->fs_local_port, fp);
        } else {
                OFC_DBG("fcs_local_port_set needed before receiving");

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

Reply via email to