diff options
author | James Smart <james.smart@emulex.com> | 2012-08-03 12:37:00 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-14 09:45:28 -0400 |
commit | c85a65ac55a9adc850c4485d11fac06d13ed2fa5 (patch) | |
tree | 659222d7f214684609f1008e7dd30560ed8a5bea /drivers/scsi/lpfc/lpfc_debugfs.c | |
parent | ba20c8536fa039ac3bfc32e0a0f0450134dee8c1 (diff) |
[SCSI] lpfc 8.3.33: Fixed debugfs queInfo to include queue stats
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_debugfs.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_debugfs.c | 416 |
1 files changed, 259 insertions, 157 deletions
diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c index 6e5e565094f2..23f4c0f30bac 100644 --- a/drivers/scsi/lpfc/lpfc_debugfs.c +++ b/drivers/scsi/lpfc/lpfc_debugfs.c | |||
@@ -2001,192 +2001,294 @@ lpfc_idiag_queinfo_read(struct file *file, char __user *buf, size_t nbytes, | |||
2001 | { | 2001 | { |
2002 | struct lpfc_debug *debug = file->private_data; | 2002 | struct lpfc_debug *debug = file->private_data; |
2003 | struct lpfc_hba *phba = (struct lpfc_hba *)debug->i_private; | 2003 | struct lpfc_hba *phba = (struct lpfc_hba *)debug->i_private; |
2004 | int len = 0, fcp_qidx; | 2004 | int len = 0; |
2005 | char *pbuffer; | 2005 | char *pbuffer; |
2006 | int x, cnt; | ||
2007 | int max_cnt; | ||
2008 | struct lpfc_queue *qp = NULL; | ||
2009 | |||
2006 | 2010 | ||
2007 | if (!debug->buffer) | 2011 | if (!debug->buffer) |
2008 | debug->buffer = kmalloc(LPFC_QUE_INFO_GET_BUF_SIZE, GFP_KERNEL); | 2012 | debug->buffer = kmalloc(LPFC_QUE_INFO_GET_BUF_SIZE, GFP_KERNEL); |
2009 | if (!debug->buffer) | 2013 | if (!debug->buffer) |
2010 | return 0; | 2014 | return 0; |
2011 | pbuffer = debug->buffer; | 2015 | pbuffer = debug->buffer; |
2016 | max_cnt = LPFC_QUE_INFO_GET_BUF_SIZE - 128; | ||
2012 | 2017 | ||
2013 | if (*ppos) | 2018 | if (*ppos) |
2014 | return 0; | 2019 | return 0; |
2015 | 2020 | ||
2016 | /* Get fast-path event queue information */ | 2021 | spin_lock_irq(&phba->hbalock); |
2017 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2022 | |
2018 | "HBA EQ information:\n"); | 2023 | /* Fast-path event queue */ |
2019 | if (phba->sli4_hba.hba_eq) { | 2024 | if (phba->sli4_hba.hba_eq && phba->cfg_fcp_io_channel) { |
2020 | for (fcp_qidx = 0; fcp_qidx < phba->cfg_fcp_io_channel; | 2025 | cnt = phba->cfg_fcp_io_channel; |
2021 | fcp_qidx++) { | 2026 | |
2022 | if (phba->sli4_hba.hba_eq[fcp_qidx]) { | 2027 | for (x = 0; x < cnt; x++) { |
2028 | |||
2029 | /* Fast-path EQ */ | ||
2030 | qp = phba->sli4_hba.hba_eq[x]; | ||
2031 | if (!qp) | ||
2032 | goto proc_cq; | ||
2033 | |||
2034 | len += snprintf(pbuffer+len, | ||
2035 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2036 | "\nHBA EQ info: " | ||
2037 | "EQ-STAT[max:x%x noE:x%x " | ||
2038 | "bs:x%x proc:x%llx]\n", | ||
2039 | qp->q_cnt_1, qp->q_cnt_2, | ||
2040 | qp->q_cnt_3, qp->q_cnt_4); | ||
2041 | |||
2042 | len += snprintf(pbuffer+len, | ||
2043 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2044 | "EQID[%02d], " | ||
2045 | "QE-CNT[%04d], QE-SIZE[%04d], " | ||
2046 | "HOST-IDX[%04d], PORT-IDX[%04d]", | ||
2047 | qp->queue_id, | ||
2048 | qp->entry_count, | ||
2049 | qp->entry_size, | ||
2050 | qp->host_index, | ||
2051 | qp->hba_index); | ||
2052 | |||
2053 | |||
2054 | /* Reset max counter */ | ||
2055 | qp->EQ_max_eqe = 0; | ||
2056 | |||
2057 | len += snprintf(pbuffer+len, | ||
2058 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2059 | if (len >= max_cnt) | ||
2060 | goto too_big; | ||
2061 | proc_cq: | ||
2062 | /* Fast-path FCP CQ */ | ||
2063 | qp = phba->sli4_hba.fcp_cq[x]; | ||
2064 | len += snprintf(pbuffer+len, | ||
2065 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2066 | "\tFCP CQ info: "); | ||
2067 | len += snprintf(pbuffer+len, | ||
2068 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2069 | "AssocEQID[%02d]: " | ||
2070 | "CQ STAT[max:x%x relw:x%x " | ||
2071 | "xabt:x%x wq:x%llx]\n", | ||
2072 | qp->assoc_qid, | ||
2073 | qp->q_cnt_1, qp->q_cnt_2, | ||
2074 | qp->q_cnt_3, qp->q_cnt_4); | ||
2075 | len += snprintf(pbuffer+len, | ||
2076 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2077 | "\tCQID[%02d], " | ||
2078 | "QE-CNT[%04d], QE-SIZE[%04d], " | ||
2079 | "HOST-IDX[%04d], PORT-IDX[%04d]", | ||
2080 | qp->queue_id, qp->entry_count, | ||
2081 | qp->entry_size, qp->host_index, | ||
2082 | qp->hba_index); | ||
2083 | |||
2084 | |||
2085 | /* Reset max counter */ | ||
2086 | qp->CQ_max_cqe = 0; | ||
2087 | |||
2088 | len += snprintf(pbuffer+len, | ||
2089 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2090 | if (len >= max_cnt) | ||
2091 | goto too_big; | ||
2092 | |||
2093 | /* Fast-path FCP WQ */ | ||
2094 | qp = phba->sli4_hba.fcp_wq[x]; | ||
2095 | |||
2096 | len += snprintf(pbuffer+len, | ||
2097 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2098 | "\t\tFCP WQ info: "); | ||
2099 | len += snprintf(pbuffer+len, | ||
2100 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2101 | "AssocCQID[%02d]: " | ||
2102 | "WQ-STAT[oflow:x%x posted:x%llx]\n", | ||
2103 | qp->assoc_qid, | ||
2104 | qp->q_cnt_1, qp->q_cnt_4); | ||
2105 | len += snprintf(pbuffer+len, | ||
2106 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2107 | "\t\tWQID[%02d], " | ||
2108 | "QE-CNT[%04d], QE-SIZE[%04d], " | ||
2109 | "HOST-IDX[%04d], PORT-IDX[%04d]", | ||
2110 | qp->queue_id, | ||
2111 | qp->entry_count, | ||
2112 | qp->entry_size, | ||
2113 | qp->host_index, | ||
2114 | qp->hba_index); | ||
2115 | |||
2116 | len += snprintf(pbuffer+len, | ||
2117 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2118 | if (len >= max_cnt) | ||
2119 | goto too_big; | ||
2120 | |||
2121 | if (x) | ||
2122 | continue; | ||
2123 | |||
2124 | /* Only EQ 0 has slow path CQs configured */ | ||
2125 | |||
2126 | /* Slow-path mailbox CQ */ | ||
2127 | qp = phba->sli4_hba.mbx_cq; | ||
2128 | if (qp) { | ||
2129 | len += snprintf(pbuffer+len, | ||
2130 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2131 | "\tMBX CQ info: "); | ||
2023 | len += snprintf(pbuffer+len, | 2132 | len += snprintf(pbuffer+len, |
2024 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2133 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2025 | "\tEQID[%02d], " | 2134 | "AssocEQID[%02d]: " |
2026 | "QE-COUNT[%04d], QE-SIZE[%04d], " | 2135 | "CQ-STAT[mbox:x%x relw:x%x " |
2027 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n", | 2136 | "xabt:x%x wq:x%llx]\n", |
2028 | phba->sli4_hba.hba_eq[fcp_qidx]->queue_id, | 2137 | qp->assoc_qid, |
2029 | phba->sli4_hba.hba_eq[fcp_qidx]->entry_count, | 2138 | qp->q_cnt_1, qp->q_cnt_2, |
2030 | phba->sli4_hba.hba_eq[fcp_qidx]->entry_size, | 2139 | qp->q_cnt_3, qp->q_cnt_4); |
2031 | phba->sli4_hba.hba_eq[fcp_qidx]->host_index, | 2140 | len += snprintf(pbuffer+len, |
2032 | phba->sli4_hba.hba_eq[fcp_qidx]->hba_index); | 2141 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2142 | "\tCQID[%02d], " | ||
2143 | "QE-CNT[%04d], QE-SIZE[%04d], " | ||
2144 | "HOST-IDX[%04d], PORT-IDX[%04d]", | ||
2145 | qp->queue_id, qp->entry_count, | ||
2146 | qp->entry_size, qp->host_index, | ||
2147 | qp->hba_index); | ||
2148 | |||
2149 | len += snprintf(pbuffer+len, | ||
2150 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2151 | if (len >= max_cnt) | ||
2152 | goto too_big; | ||
2033 | } | 2153 | } |
2034 | } | ||
2035 | } | ||
2036 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2037 | |||
2038 | /* Get mailbox complete queue information */ | ||
2039 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2040 | "Slow-path MBX CQ information:\n"); | ||
2041 | if (phba->sli4_hba.mbx_cq) { | ||
2042 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2043 | "Associated EQID[%02d]:\n", | ||
2044 | phba->sli4_hba.mbx_cq->assoc_qid); | ||
2045 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2046 | "\tCQID[%02d], " | ||
2047 | "QE-COUNT[%04d], QE-SIZE[%04d], " | ||
2048 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n\n", | ||
2049 | phba->sli4_hba.mbx_cq->queue_id, | ||
2050 | phba->sli4_hba.mbx_cq->entry_count, | ||
2051 | phba->sli4_hba.mbx_cq->entry_size, | ||
2052 | phba->sli4_hba.mbx_cq->host_index, | ||
2053 | phba->sli4_hba.mbx_cq->hba_index); | ||
2054 | } | ||
2055 | 2154 | ||
2056 | /* Get slow-path complete queue information */ | 2155 | /* Slow-path MBOX MQ */ |
2057 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2156 | qp = phba->sli4_hba.mbx_wq; |
2058 | "Slow-path ELS CQ information:\n"); | 2157 | if (qp) { |
2059 | if (phba->sli4_hba.els_cq) { | 2158 | len += snprintf(pbuffer+len, |
2060 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2159 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2061 | "Associated EQID[%02d]:\n", | 2160 | "\t\tMBX MQ info: "); |
2062 | phba->sli4_hba.els_cq->assoc_qid); | 2161 | len += snprintf(pbuffer+len, |
2063 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2162 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2064 | "\tCQID [%02d], " | 2163 | "AssocCQID[%02d]:\n", |
2065 | "QE-COUNT[%04d], QE-SIZE[%04d], " | 2164 | phba->sli4_hba.mbx_wq->assoc_qid); |
2066 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n\n", | 2165 | len += snprintf(pbuffer+len, |
2067 | phba->sli4_hba.els_cq->queue_id, | 2166 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2068 | phba->sli4_hba.els_cq->entry_count, | 2167 | "\t\tWQID[%02d], " |
2069 | phba->sli4_hba.els_cq->entry_size, | 2168 | "QE-CNT[%04d], QE-SIZE[%04d], " |
2070 | phba->sli4_hba.els_cq->host_index, | 2169 | "HOST-IDX[%04d], PORT-IDX[%04d]", |
2071 | phba->sli4_hba.els_cq->hba_index); | 2170 | qp->queue_id, qp->entry_count, |
2072 | } | 2171 | qp->entry_size, qp->host_index, |
2172 | qp->hba_index); | ||
2173 | |||
2174 | len += snprintf(pbuffer+len, | ||
2175 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2176 | if (len >= max_cnt) | ||
2177 | goto too_big; | ||
2178 | } | ||
2073 | 2179 | ||
2074 | /* Get fast-path complete queue information */ | 2180 | /* Slow-path ELS response CQ */ |
2075 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2181 | qp = phba->sli4_hba.els_cq; |
2076 | "Fast-path FCP CQ information:\n"); | 2182 | if (qp) { |
2077 | fcp_qidx = 0; | ||
2078 | if (phba->sli4_hba.fcp_cq) { | ||
2079 | do { | ||
2080 | if (phba->sli4_hba.fcp_cq[fcp_qidx]) { | ||
2081 | len += snprintf(pbuffer+len, | 2183 | len += snprintf(pbuffer+len, |
2082 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2184 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2083 | "Associated EQID[%02d]:\n", | 2185 | "\tELS CQ info: "); |
2084 | phba->sli4_hba.fcp_cq[fcp_qidx]->assoc_qid); | ||
2085 | len += snprintf(pbuffer+len, | 2186 | len += snprintf(pbuffer+len, |
2086 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2187 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2087 | "\tCQID[%02d], " | 2188 | "AssocEQID[%02d]: " |
2088 | "QE-COUNT[%04d], QE-SIZE[%04d], " | 2189 | "CQ-STAT[max:x%x relw:x%x " |
2089 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n", | 2190 | "xabt:x%x wq:x%llx]\n", |
2090 | phba->sli4_hba.fcp_cq[fcp_qidx]->queue_id, | 2191 | qp->assoc_qid, |
2091 | phba->sli4_hba.fcp_cq[fcp_qidx]->entry_count, | 2192 | qp->q_cnt_1, qp->q_cnt_2, |
2092 | phba->sli4_hba.fcp_cq[fcp_qidx]->entry_size, | 2193 | qp->q_cnt_3, qp->q_cnt_4); |
2093 | phba->sli4_hba.fcp_cq[fcp_qidx]->host_index, | 2194 | len += snprintf(pbuffer+len, |
2094 | phba->sli4_hba.fcp_cq[fcp_qidx]->hba_index); | 2195 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2196 | "\tCQID [%02d], " | ||
2197 | "QE-CNT[%04d], QE-SIZE[%04d], " | ||
2198 | "HOST-IDX[%04d], PORT-IDX[%04d]", | ||
2199 | qp->queue_id, qp->entry_count, | ||
2200 | qp->entry_size, qp->host_index, | ||
2201 | qp->hba_index); | ||
2202 | |||
2203 | /* Reset max counter */ | ||
2204 | qp->CQ_max_cqe = 0; | ||
2205 | |||
2206 | len += snprintf(pbuffer+len, | ||
2207 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2208 | if (len >= max_cnt) | ||
2209 | goto too_big; | ||
2095 | } | 2210 | } |
2096 | } while (++fcp_qidx < phba->cfg_fcp_io_channel); | ||
2097 | len += snprintf(pbuffer+len, | ||
2098 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2099 | } | ||
2100 | 2211 | ||
2101 | /* Get mailbox queue information */ | 2212 | /* Slow-path ELS WQ */ |
2102 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2213 | qp = phba->sli4_hba.els_wq; |
2103 | "Slow-path MBX MQ information:\n"); | 2214 | if (qp) { |
2104 | if (phba->sli4_hba.mbx_wq) { | 2215 | len += snprintf(pbuffer+len, |
2105 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2216 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2106 | "Associated CQID[%02d]:\n", | 2217 | "\t\tELS WQ info: "); |
2107 | phba->sli4_hba.mbx_wq->assoc_qid); | 2218 | len += snprintf(pbuffer+len, |
2108 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2219 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2109 | "\tWQID[%02d], " | 2220 | "AssocCQID[%02d]: " |
2110 | "QE-COUNT[%04d], QE-SIZE[%04d], " | 2221 | " WQ-STAT[oflow:x%x " |
2111 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n\n", | 2222 | "posted:x%llx]\n", |
2112 | phba->sli4_hba.mbx_wq->queue_id, | 2223 | qp->assoc_qid, |
2113 | phba->sli4_hba.mbx_wq->entry_count, | 2224 | qp->q_cnt_1, qp->q_cnt_4); |
2114 | phba->sli4_hba.mbx_wq->entry_size, | 2225 | len += snprintf(pbuffer+len, |
2115 | phba->sli4_hba.mbx_wq->host_index, | 2226 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2116 | phba->sli4_hba.mbx_wq->hba_index); | 2227 | "\t\tWQID[%02d], " |
2117 | } | 2228 | "QE-CNT[%04d], QE-SIZE[%04d], " |
2229 | "HOST-IDX[%04d], PORT-IDX[%04d]", | ||
2230 | qp->queue_id, qp->entry_count, | ||
2231 | qp->entry_size, qp->host_index, | ||
2232 | qp->hba_index); | ||
2233 | |||
2234 | len += snprintf(pbuffer+len, | ||
2235 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2236 | if (len >= max_cnt) | ||
2237 | goto too_big; | ||
2238 | } | ||
2118 | 2239 | ||
2119 | /* Get slow-path work queue information */ | 2240 | if (phba->sli4_hba.hdr_rq && phba->sli4_hba.dat_rq) { |
2120 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2241 | /* Slow-path RQ header */ |
2121 | "Slow-path ELS WQ information:\n"); | 2242 | qp = phba->sli4_hba.hdr_rq; |
2122 | if (phba->sli4_hba.els_wq) { | ||
2123 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2124 | "Associated CQID[%02d]:\n", | ||
2125 | phba->sli4_hba.els_wq->assoc_qid); | ||
2126 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2127 | "\tWQID[%02d], " | ||
2128 | "QE-COUNT[%04d], QE-SIZE[%04d], " | ||
2129 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n\n", | ||
2130 | phba->sli4_hba.els_wq->queue_id, | ||
2131 | phba->sli4_hba.els_wq->entry_count, | ||
2132 | phba->sli4_hba.els_wq->entry_size, | ||
2133 | phba->sli4_hba.els_wq->host_index, | ||
2134 | phba->sli4_hba.els_wq->hba_index); | ||
2135 | } | ||
2136 | 2243 | ||
2137 | /* Get fast-path work queue information */ | 2244 | len += snprintf(pbuffer+len, |
2138 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2245 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2139 | "Fast-path FCP WQ information:\n"); | 2246 | "\t\tRQ info: "); |
2140 | if (phba->sli4_hba.fcp_wq) { | 2247 | len += snprintf(pbuffer+len, |
2141 | for (fcp_qidx = 0; fcp_qidx < phba->cfg_fcp_io_channel; | ||
2142 | fcp_qidx++) { | ||
2143 | if (!phba->sli4_hba.fcp_wq[fcp_qidx]) | ||
2144 | continue; | ||
2145 | len += snprintf(pbuffer+len, | ||
2146 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2248 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2147 | "Associated CQID[%02d]:\n", | 2249 | "AssocCQID[%02d]: " |
2148 | phba->sli4_hba.fcp_wq[fcp_qidx]->assoc_qid); | 2250 | "RQ-STAT[nopost:x%x nobuf:x%x " |
2149 | len += snprintf(pbuffer+len, | 2251 | "trunc:x%x rcv:x%llx]\n", |
2252 | qp->assoc_qid, | ||
2253 | qp->q_cnt_1, qp->q_cnt_2, | ||
2254 | qp->q_cnt_3, qp->q_cnt_4); | ||
2255 | len += snprintf(pbuffer+len, | ||
2150 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2256 | LPFC_QUE_INFO_GET_BUF_SIZE-len, |
2151 | "\tWQID[%02d], " | 2257 | "\t\tHQID[%02d], " |
2152 | "QE-COUNT[%04d], WQE-SIZE[%04d], " | 2258 | "QE-CNT[%04d], QE-SIZE[%04d], " |
2153 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n", | 2259 | "HOST-IDX[%04d], PORT-IDX[%04d]\n", |
2154 | phba->sli4_hba.fcp_wq[fcp_qidx]->queue_id, | 2260 | qp->queue_id, |
2155 | phba->sli4_hba.fcp_wq[fcp_qidx]->entry_count, | 2261 | qp->entry_count, |
2156 | phba->sli4_hba.fcp_wq[fcp_qidx]->entry_size, | 2262 | qp->entry_size, |
2157 | phba->sli4_hba.fcp_wq[fcp_qidx]->host_index, | 2263 | qp->host_index, |
2158 | phba->sli4_hba.fcp_wq[fcp_qidx]->hba_index); | 2264 | qp->hba_index); |
2265 | |||
2266 | /* Slow-path RQ data */ | ||
2267 | qp = phba->sli4_hba.dat_rq; | ||
2268 | len += snprintf(pbuffer+len, | ||
2269 | LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2270 | "\t\tDQID[%02d], " | ||
2271 | "QE-CNT[%04d], QE-SIZE[%04d], " | ||
2272 | "HOST-IDX[%04d], PORT-IDX[%04d]\n", | ||
2273 | qp->queue_id, | ||
2274 | qp->entry_count, | ||
2275 | qp->entry_size, | ||
2276 | qp->host_index, | ||
2277 | qp->hba_index); | ||
2278 | |||
2279 | len += snprintf(pbuffer+len, | ||
2280 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2281 | } | ||
2159 | } | 2282 | } |
2160 | len += snprintf(pbuffer+len, | ||
2161 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "\n"); | ||
2162 | } | 2283 | } |
2163 | 2284 | ||
2164 | /* Get receive queue information */ | 2285 | spin_unlock_irq(&phba->hbalock); |
2165 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2286 | return simple_read_from_buffer(buf, nbytes, ppos, pbuffer, len); |
2166 | "Slow-path RQ information:\n"); | 2287 | |
2167 | if (phba->sli4_hba.hdr_rq && phba->sli4_hba.dat_rq) { | 2288 | too_big: |
2168 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | 2289 | len += snprintf(pbuffer+len, |
2169 | "Associated CQID[%02d]:\n", | 2290 | LPFC_QUE_INFO_GET_BUF_SIZE-len, "Truncated ...\n"); |
2170 | phba->sli4_hba.hdr_rq->assoc_qid); | 2291 | spin_unlock_irq(&phba->hbalock); |
2171 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2172 | "\tHQID[%02d], " | ||
2173 | "QE-COUNT[%04d], QE-SIZE[%04d], " | ||
2174 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n", | ||
2175 | phba->sli4_hba.hdr_rq->queue_id, | ||
2176 | phba->sli4_hba.hdr_rq->entry_count, | ||
2177 | phba->sli4_hba.hdr_rq->entry_size, | ||
2178 | phba->sli4_hba.hdr_rq->host_index, | ||
2179 | phba->sli4_hba.hdr_rq->hba_index); | ||
2180 | len += snprintf(pbuffer+len, LPFC_QUE_INFO_GET_BUF_SIZE-len, | ||
2181 | "\tDQID[%02d], " | ||
2182 | "QE-COUNT[%04d], QE-SIZE[%04d], " | ||
2183 | "HOST-INDEX[%04d], PORT-INDEX[%04d]\n", | ||
2184 | phba->sli4_hba.dat_rq->queue_id, | ||
2185 | phba->sli4_hba.dat_rq->entry_count, | ||
2186 | phba->sli4_hba.dat_rq->entry_size, | ||
2187 | phba->sli4_hba.dat_rq->host_index, | ||
2188 | phba->sli4_hba.dat_rq->hba_index); | ||
2189 | } | ||
2190 | return simple_read_from_buffer(buf, nbytes, ppos, pbuffer, len); | 2292 | return simple_read_from_buffer(buf, nbytes, ppos, pbuffer, len); |
2191 | } | 2293 | } |
2192 | 2294 | ||