On 12/23/2016 08:17 PM, Dupuis, Chad wrote: > From: "Dupuis, Chad" <chad.dup...@cavium.com> > > This patch adds various I/O requests types that are handled in firmware: > > - Normal I/O requests > - ABTS requests > - Cleanup requests > - Task management requests > > It also contains: > > - I/O request initialization > - Firmware completion handling > > Signed-off-by: Nilesh Javali <nilesh.jav...@cavium.com> > Signed-off-by: Manish Rangankar <manish.rangan...@cavium.com> > Signed-off-by: Saurav Kashyap <saurav.kash...@cavium.com> > Signed-off-by: Chad Dupuis <chad.dup...@cavium.com> > --- > drivers/scsi/qedf/qedf_hsi.h | 427 ++++++++ > drivers/scsi/qedf/qedf_io.c | 2303 > ++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 2730 insertions(+) > create mode 100644 drivers/scsi/qedf/qedf_hsi.h > create mode 100644 drivers/scsi/qedf/qedf_io.c > [ .. ]
> +static int qedf_execute_tmf(struct qedf_rport *fcport, struct scsi_cmnd > *sc_cmd, > + uint8_t tm_flags) > +{ > + struct qedf_ioreq *io_req; > + struct qedf_mp_req *tm_req; > + struct fcoe_task_context *task; > + struct fc_frame_header *fc_hdr; > + struct fcp_cmnd *fcp_cmnd; > + struct qedf_ctx *qedf = fcport->qedf; > + int rc = 0; > + uint16_t xid; > + uint32_t sid, did; > + int tmo = 0; > + unsigned long flags; > + > + if (!sc_cmd) { > + QEDF_ERR(&(qedf->dbg_ctx), "invalid arg\n"); > + return FAILED; > + } > + > + if (!(test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags))) { > + QEDF_ERR(&(qedf->dbg_ctx), "fcport not offloaded\n"); > + rc = FAILED; > + return FAILED; > + } > + > + scsi_block_requests(qedf->lport->host); > + Typically, EH commands will be executed after the scsi host is stopped and no commands are outstanding. So there's no point in issuing 'scsi_block_requests()' here. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage h...@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)