James Smart | f358dd0 | 2017-02-12 13:52:34 -0800 | [diff] [blame] | 1 | /******************************************************************* |
| 2 | * This file is part of the Emulex Linux Device Driver for * |
| 3 | * Fibre Channel Host Bus Adapters. * |
James Smart | d080abe | 2017-02-12 13:52:39 -0800 | [diff] [blame^] | 4 | * Copyright (C) 2017 Broadcom. All Rights Reserved. The term * |
| 5 | * “Broadcom” refers to Broadcom Limited and/or its subsidiaries. * |
James Smart | f358dd0 | 2017-02-12 13:52:34 -0800 | [diff] [blame] | 6 | * Copyright (C) 2004-2016 Emulex. All rights reserved. * |
| 7 | * EMULEX and SLI are trademarks of Emulex. * |
James Smart | d080abe | 2017-02-12 13:52:39 -0800 | [diff] [blame^] | 8 | * www.broadcom.com * |
James Smart | f358dd0 | 2017-02-12 13:52:34 -0800 | [diff] [blame] | 9 | * Portions Copyright (C) 2004-2005 Christoph Hellwig * |
| 10 | * * |
| 11 | * This program is free software; you can redistribute it and/or * |
| 12 | * modify it under the terms of version 2 of the GNU General * |
| 13 | * Public License as published by the Free Software Foundation. * |
| 14 | * This program is distributed in the hope that it will be useful. * |
| 15 | * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * |
| 16 | * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * |
| 17 | * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE * |
| 18 | * DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD * |
| 19 | * TO BE LEGALLY INVALID. See the GNU General Public License for * |
| 20 | * more details, a copy of which can be found in the file COPYING * |
| 21 | * included with this package. * |
| 22 | ********************************************************************/ |
| 23 | |
| 24 | #define LPFC_NVMET_MIN_SEGS 16 |
| 25 | #define LPFC_NVMET_DEFAULT_SEGS 64 /* 256K IOs */ |
| 26 | #define LPFC_NVMET_MAX_SEGS 510 |
| 27 | #define LPFC_NVMET_SUCCESS_LEN 12 |
| 28 | |
| 29 | /* Used for NVME Target */ |
| 30 | struct lpfc_nvmet_tgtport { |
| 31 | struct lpfc_hba *phba; |
| 32 | struct completion tport_unreg_done; |
| 33 | |
| 34 | /* Stats counters - lpfc_nvmet_unsol_ls_buffer */ |
| 35 | atomic_t rcv_ls_req_in; |
| 36 | atomic_t rcv_ls_req_out; |
| 37 | atomic_t rcv_ls_req_drop; |
| 38 | atomic_t xmt_ls_abort; |
| 39 | |
| 40 | /* Stats counters - lpfc_nvmet_xmt_ls_rsp */ |
| 41 | atomic_t xmt_ls_rsp; |
| 42 | atomic_t xmt_ls_drop; |
| 43 | |
| 44 | /* Stats counters - lpfc_nvmet_xmt_ls_rsp_cmp */ |
| 45 | atomic_t xmt_ls_rsp_error; |
| 46 | atomic_t xmt_ls_rsp_cmpl; |
| 47 | |
| 48 | /* Stats counters - lpfc_nvmet_unsol_fcp_buffer */ |
| 49 | atomic_t rcv_fcp_cmd_in; |
| 50 | atomic_t rcv_fcp_cmd_out; |
| 51 | atomic_t rcv_fcp_cmd_drop; |
| 52 | |
| 53 | /* Stats counters - lpfc_nvmet_xmt_fcp_op */ |
| 54 | atomic_t xmt_fcp_abort; |
| 55 | atomic_t xmt_fcp_drop; |
| 56 | atomic_t xmt_fcp_read_rsp; |
| 57 | atomic_t xmt_fcp_read; |
| 58 | atomic_t xmt_fcp_write; |
| 59 | atomic_t xmt_fcp_rsp; |
| 60 | |
| 61 | /* Stats counters - lpfc_nvmet_xmt_fcp_op_cmp */ |
| 62 | atomic_t xmt_fcp_rsp_cmpl; |
| 63 | atomic_t xmt_fcp_rsp_error; |
| 64 | atomic_t xmt_fcp_rsp_drop; |
| 65 | |
| 66 | |
| 67 | /* Stats counters - lpfc_nvmet_unsol_issue_abort */ |
| 68 | atomic_t xmt_abort_rsp; |
| 69 | atomic_t xmt_abort_rsp_error; |
| 70 | |
| 71 | /* Stats counters - lpfc_nvmet_xmt_abort_cmp */ |
| 72 | atomic_t xmt_abort_cmpl; |
| 73 | }; |
| 74 | |
| 75 | struct lpfc_nvmet_rcv_ctx { |
| 76 | union { |
| 77 | struct nvmefc_tgt_ls_req ls_req; |
| 78 | struct nvmefc_tgt_fcp_req fcp_req; |
| 79 | } ctx; |
| 80 | struct lpfc_hba *phba; |
| 81 | struct lpfc_iocbq *wqeq; |
| 82 | struct lpfc_iocbq *abort_wqeq; |
| 83 | dma_addr_t txrdy_phys; |
| 84 | uint32_t *txrdy; |
| 85 | uint32_t sid; |
| 86 | uint32_t offset; |
| 87 | uint16_t oxid; |
| 88 | uint16_t size; |
| 89 | uint16_t entry_cnt; |
| 90 | uint16_t cpu; |
| 91 | uint16_t state; |
| 92 | /* States */ |
| 93 | #define LPFC_NVMET_STE_FREE 0 |
| 94 | #define LPFC_NVMET_STE_RCV 1 |
| 95 | #define LPFC_NVMET_STE_DATA 2 |
| 96 | #define LPFC_NVMET_STE_ABORT 3 |
| 97 | #define LPFC_NVMET_STE_RSP 4 |
| 98 | #define LPFC_NVMET_STE_DONE 5 |
| 99 | uint16_t flag; |
| 100 | #define LPFC_NVMET_IO_INP 1 |
| 101 | #define LPFC_NVMET_ABORT_OP 2 |
| 102 | struct rqb_dmabuf *rqb_buffer; |
James Smart | 2b65e18 | 2017-02-12 13:52:38 -0800 | [diff] [blame] | 103 | |
| 104 | #ifdef CONFIG_SCSI_LPFC_DEBUG_FS |
| 105 | uint64_t ts_isr_cmd; |
| 106 | uint64_t ts_cmd_nvme; |
| 107 | uint64_t ts_nvme_data; |
| 108 | uint64_t ts_data_wqput; |
| 109 | uint64_t ts_isr_data; |
| 110 | uint64_t ts_data_nvme; |
| 111 | uint64_t ts_nvme_status; |
| 112 | uint64_t ts_status_wqput; |
| 113 | uint64_t ts_isr_status; |
| 114 | uint64_t ts_status_nvme; |
| 115 | #endif |
James Smart | f358dd0 | 2017-02-12 13:52:34 -0800 | [diff] [blame] | 116 | }; |