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