Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target...
[cascardo/linux.git] / drivers / scsi / qla2xxx / qla_target.h
index c93eeab..3320867 100644 (file)
@@ -915,6 +915,10 @@ struct qla_tgt_cmd {
        unsigned int aborted:1; /* Needed in case of SRR */
        unsigned int write_data_transferred:1;
        unsigned int ctx_dsd_alloced:1;
+       unsigned int q_full:1;
+       unsigned int term_exchg:1;
+       unsigned int cmd_sent_to_fw:1;
+       unsigned int cmd_in_wq:1;
 
        struct scatterlist *sg; /* cmd data buffer SG vector */
        int sg_cnt;             /* SG segments count */
@@ -923,10 +927,12 @@ struct qla_tgt_cmd {
        uint32_t tag;
        uint32_t unpacked_lun;
        enum dma_data_direction dma_data_direction;
+       uint32_t reset_count;
 
        uint16_t loop_id;       /* to save extra sess dereferences */
        struct qla_tgt *tgt;    /* to save extra sess dereferences */
        struct scsi_qla_host *vha;
+       struct list_head cmd_list;
 
        struct atio_from_isp atio;
        /* t10dif */
@@ -935,6 +941,29 @@ struct qla_tgt_cmd {
        uint32_t blk_sz;
        struct crc_context *ctx;
 
+       uint64_t jiffies_at_alloc;
+       uint64_t jiffies_at_free;
+       /* BIT_0 - Atio Arrival / schedule to work
+        * BIT_1 - qlt_do_work
+        * BIT_2 - qlt_do work failed
+        * BIT_3 - xfer rdy/tcm_qla2xxx_write_pending
+        * BIT_4 - read respond/tcm_qla2xx_queue_data_in
+        * BIT_5 - status respond / tcm_qla2xx_queue_status
+        * BIT_6 - tcm request to abort/Term exchange.
+        *      pre_xmit_response->qlt_send_term_exchange
+        * BIT_7 - SRR received (qlt_handle_srr->qlt_xmit_response)
+        * BIT_8 - SRR received (qlt_handle_srr->qlt_rdy_to_xfer)
+        * BIT_9 - SRR received (qla_handle_srr->qlt_send_term_exchange)
+        * BIT_10 - Data in - hanlde_data->tcm_qla2xxx_handle_data
+        * BIT_11 - Data actually going to TCM : tcm_qla2xx_handle_data_work
+        * BIT_12 - good completion - qlt_ctio_do_completion -->free_cmd
+        * BIT_13 - Bad completion -
+        *      qlt_ctio_do_completion --> qlt_term_ctio_exchange
+        * BIT_14 - Back end data received/sent.
+        * BIT_15 - SRR prepare ctio
+        * BIT_16 - complete free
+        */
+       uint32_t cmd_flags;
 };
 
 struct qla_tgt_sess_work_param {
@@ -958,6 +987,7 @@ struct qla_tgt_mgmt_cmd {
        struct se_cmd se_cmd;
        struct work_struct free_work;
        unsigned int flags;
+       uint32_t reset_count;
 #define QLA24XX_MGMT_SEND_NACK 1
        union {
                struct atio_from_isp atio;
@@ -1079,5 +1109,6 @@ extern int qlt_stop_phase1(struct qla_tgt *);
 extern void qlt_stop_phase2(struct qla_tgt *);
 extern irqreturn_t qla83xx_msix_atio_q(int, void *);
 extern void qlt_83xx_iospace_config(struct qla_hw_data *);
+extern int qlt_free_qfull_cmds(struct scsi_qla_host *);
 
 #endif /* __QLA_TARGET_H */