#define FC_GOOD                0
 #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER      (0x1<<2)
 #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER     (0x1<<3)
-#define CMD_SCSI_STATUS(Cmnd)                  ((Cmnd)->SCp.Status)
 #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID   (0x1<<0)
 #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID   (0x1<<1)
 struct qedf_ioreq {
        unsigned int alloc;
 };
 
+struct qedf_cmd_priv {
+       struct qedf_ioreq *io_req;
+};
+
+static inline struct qedf_cmd_priv *qedf_priv(struct scsi_cmnd *cmd)
+{
+       return scsi_cmd_priv(cmd);
+}
+
 extern struct workqueue_struct *qedf_io_wq;
 
 struct qedf_rport {
 
 
        /* Initialize rest of io_req fileds */
        io_req->data_xfer_len = scsi_bufflen(sc_cmd);
-       sc_cmd->SCp.ptr = (char *)io_req;
+       qedf_priv(sc_cmd)->io_req = io_req;
        io_req->sge_type = QEDF_IOREQ_FAST_SGE; /* Assume fast SGL by default */
 
        /* Record which cpu this request is associated with */
                io_req->fcp_resid = fcp_rsp->fcp_resid;
 
        io_req->scsi_comp_flags = rsp_flags;
-       CMD_SCSI_STATUS(sc_cmd) = io_req->cdb_status =
-           fcp_rsp->scsi_status_code;
+       io_req->cdb_status = fcp_rsp->scsi_status_code;
 
        if (rsp_flags &
            FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID)
                return;
        }
 
-       if (!sc_cmd->SCp.ptr) {
-               QEDF_WARN(&(qedf->dbg_ctx), "SCp.ptr is NULL, returned in "
-                   "another context.\n");
+       if (!qedf_priv(sc_cmd)->io_req) {
+               QEDF_WARN(&(qedf->dbg_ctx),
+                         "io_req is NULL, returned in another context.\n");
                return;
        }
 
        clear_bit(QEDF_CMD_OUTSTANDING, &io_req->flags);
 
        io_req->sc_cmd = NULL;
-       sc_cmd->SCp.ptr =  NULL;
+       qedf_priv(sc_cmd)->io_req =  NULL;
        scsi_done(sc_cmd);
        kref_put(&io_req->refcount, qedf_release_cmd);
 }
                goto bad_scsi_ptr;
        }
 
-       if (!sc_cmd->SCp.ptr) {
-               QEDF_WARN(&(qedf->dbg_ctx), "SCp.ptr is NULL, returned in "
-                   "another context.\n");
+       if (!qedf_priv(sc_cmd)->io_req) {
+               QEDF_WARN(&(qedf->dbg_ctx),
+                         "io_req is NULL, returned in another context.\n");
                return;
        }
 
                qedf_trace_io(io_req->fcport, io_req, QEDF_IO_TRACE_RSP);
 
        io_req->sc_cmd = NULL;
-       sc_cmd->SCp.ptr = NULL;
+       qedf_priv(sc_cmd)->io_req = NULL;
        scsi_done(sc_cmd);
        kref_put(&io_req->refcount, qedf_release_cmd);
        return;
                 (tm_flags == FCP_TMF_TGT_RESET) ? "TARGET RESET" :
                 "LUN RESET");
 
-       if (sc_cmd->SCp.ptr) {
-               io_req = (struct qedf_ioreq *)sc_cmd->SCp.ptr;
+       if (qedf_priv(sc_cmd)->io_req) {
+               io_req = qedf_priv(sc_cmd)->io_req;
                ref_cnt = kref_read(&io_req->refcount);
                QEDF_ERR(NULL,
                         "orig io_req = %p xid = 0x%x ref_cnt = %d.\n",
 
        }
 
 
-       io_req = (struct qedf_ioreq *)sc_cmd->SCp.ptr;
+       io_req = qedf_priv(sc_cmd)->io_req;
        if (!io_req) {
                QEDF_ERR(&qedf->dbg_ctx,
                         "sc_cmd not queued with lld, sc_cmd=%p op=0x%02x, port_id=%06x\n",
        .sg_tablesize = QEDF_MAX_BDS_PER_CMD,
        .can_queue = FCOE_PARAMS_NUM_TASKS,
        .change_queue_depth = scsi_change_queue_depth,
+       .cmd_size = sizeof(struct qedf_cmd_priv),
 };
 
 static int qedf_get_paged_crc_eof(struct sk_buff *skb, int tlen)