aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
authorChad Dupuis <chad.dupuis@qlogic.com>2011-11-18 12:03:07 -0500
committerJames Bottomley <JBottomley@Parallels.com>2011-12-15 01:55:02 -0500
commitcfb0919c12a33132f75fb91971bbd8bdd44ebb90 (patch)
tree9996ba3894bafbb63c1d7c523efe9baf7378c3ac /drivers/scsi/qla2xxx/qla_isr.c
parentd8424f68c0160c45c446e56cb586fd8b9c538a1a (diff)
[SCSI] qla2xxx: Update to dynamic logging.
This patch contains minor fixes to our new logging infrastructure: - Remove extranous messages. - Re-add 'nexus' and 'hdl' information. - Adjusted the message ids to fill up the holes. - Display FCP_CMND priority on update. - Log only mail box error conditions. - Do not print "Firmware ready **** FAILED ****" if cable is unplugged. - Drop noisy 'fw_state...curr time...' message. - Correct nexus display during abort. - Add a special case error-logging set to '1'. - Catagorize I/O exception display handling. - Correct the bsg msg code printing. - Dont use dynamic logging after host is removed. Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c152
1 files changed, 70 insertions, 82 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 53d83d66a015..b6023e9636ea 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -262,13 +262,8 @@ qla2x00_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
262 wptr++; 262 wptr++;
263 } 263 }
264 264
265 if (ha->mcp) { 265 if (!ha->mcp)
266 ql_dbg(ql_dbg_async, vha, 0x5000, 266 ql_dbg(ql_dbg_async, vha, 0x5001, "MBX pointer ERROR.\n");
267 "Got mbx completion. cmd=%x.\n", ha->mcp->mb[0]);
268 } else {
269 ql_dbg(ql_dbg_async, vha, 0x5001,
270 "MBX pointer ERROR.\n");
271 }
272} 267}
273 268
274static void 269static void
@@ -453,7 +448,7 @@ skip_rio:
453 break; 448 break;
454 449
455 case MBA_LIP_OCCURRED: /* Loop Initialization Procedure */ 450 case MBA_LIP_OCCURRED: /* Loop Initialization Procedure */
456 ql_log(ql_log_info, vha, 0x5009, 451 ql_dbg(ql_dbg_async, vha, 0x5009,
457 "LIP occurred (%x).\n", mb[1]); 452 "LIP occurred (%x).\n", mb[1]);
458 453
459 if (atomic_read(&vha->loop_state) != LOOP_DOWN) { 454 if (atomic_read(&vha->loop_state) != LOOP_DOWN) {
@@ -487,7 +482,7 @@ skip_rio:
487 ha->link_data_rate = mb[1]; 482 ha->link_data_rate = mb[1];
488 } 483 }
489 484
490 ql_log(ql_log_info, vha, 0x500a, 485 ql_dbg(ql_dbg_async, vha, 0x500a,
491 "LOOP UP detected (%s Gbps).\n", link_speed); 486 "LOOP UP detected (%s Gbps).\n", link_speed);
492 487
493 vha->flags.management_server_logged_in = 0; 488 vha->flags.management_server_logged_in = 0;
@@ -497,7 +492,7 @@ skip_rio:
497 case MBA_LOOP_DOWN: /* Loop Down Event */ 492 case MBA_LOOP_DOWN: /* Loop Down Event */
498 mbx = IS_QLA81XX(ha) ? RD_REG_WORD(&reg24->mailbox4) : 0; 493 mbx = IS_QLA81XX(ha) ? RD_REG_WORD(&reg24->mailbox4) : 0;
499 mbx = IS_QLA82XX(ha) ? RD_REG_WORD(&reg82->mailbox_out[4]) : mbx; 494 mbx = IS_QLA82XX(ha) ? RD_REG_WORD(&reg82->mailbox_out[4]) : mbx;
500 ql_log(ql_log_info, vha, 0x500b, 495 ql_dbg(ql_dbg_async, vha, 0x500b,
501 "LOOP DOWN detected (%x %x %x %x).\n", 496 "LOOP DOWN detected (%x %x %x %x).\n",
502 mb[1], mb[2], mb[3], mbx); 497 mb[1], mb[2], mb[3], mbx);
503 498
@@ -519,7 +514,7 @@ skip_rio:
519 break; 514 break;
520 515
521 case MBA_LIP_RESET: /* LIP reset occurred */ 516 case MBA_LIP_RESET: /* LIP reset occurred */
522 ql_log(ql_log_info, vha, 0x500c, 517 ql_dbg(ql_dbg_async, vha, 0x500c,
523 "LIP reset occurred (%x).\n", mb[1]); 518 "LIP reset occurred (%x).\n", mb[1]);
524 519
525 if (atomic_read(&vha->loop_state) != LOOP_DOWN) { 520 if (atomic_read(&vha->loop_state) != LOOP_DOWN) {
@@ -587,7 +582,7 @@ skip_rio:
587 if (IS_QLA2100(ha)) 582 if (IS_QLA2100(ha))
588 break; 583 break;
589 584
590 ql_log(ql_log_info, vha, 0x500f, 585 ql_dbg(ql_dbg_async, vha, 0x500f,
591 "Configuration change detected: value=%x.\n", mb[1]); 586 "Configuration change detected: value=%x.\n", mb[1]);
592 587
593 if (atomic_read(&vha->loop_state) != LOOP_DOWN) { 588 if (atomic_read(&vha->loop_state) != LOOP_DOWN) {
@@ -920,15 +915,15 @@ qla2x00_mbx_iocb_entry(scsi_qla_host_t *vha, struct req_que *req,
920 QLA_LOGIO_LOGIN_RETRIED : 0; 915 QLA_LOGIO_LOGIN_RETRIED : 0;
921 if (mbx->entry_status) { 916 if (mbx->entry_status) {
922 ql_dbg(ql_dbg_async, vha, 0x5043, 917 ql_dbg(ql_dbg_async, vha, 0x5043,
923 "Async-%s error entry - portid=%02x%02x%02x " 918 "Async-%s error entry - hdl=%x portid=%02x%02x%02x "
924 "entry-status=%x status=%x state-flag=%x " 919 "entry-status=%x status=%x state-flag=%x "
925 "status-flags=%x.\n", 920 "status-flags=%x.\n", type, sp->handle,
926 type, fcport->d_id.b.domain, fcport->d_id.b.area, 921 fcport->d_id.b.domain, fcport->d_id.b.area,
927 fcport->d_id.b.al_pa, mbx->entry_status, 922 fcport->d_id.b.al_pa, mbx->entry_status,
928 le16_to_cpu(mbx->status), le16_to_cpu(mbx->state_flags), 923 le16_to_cpu(mbx->status), le16_to_cpu(mbx->state_flags),
929 le16_to_cpu(mbx->status_flags)); 924 le16_to_cpu(mbx->status_flags));
930 925
931 ql_dump_buffer(ql_dbg_async + ql_dbg_buffer, vha, 0x5057, 926 ql_dump_buffer(ql_dbg_async + ql_dbg_buffer, vha, 0x5029,
932 (uint8_t *)mbx, sizeof(*mbx)); 927 (uint8_t *)mbx, sizeof(*mbx));
933 928
934 goto logio_done; 929 goto logio_done;
@@ -940,9 +935,10 @@ qla2x00_mbx_iocb_entry(scsi_qla_host_t *vha, struct req_que *req,
940 status = 0; 935 status = 0;
941 if (!status && le16_to_cpu(mbx->mb0) == MBS_COMMAND_COMPLETE) { 936 if (!status && le16_to_cpu(mbx->mb0) == MBS_COMMAND_COMPLETE) {
942 ql_dbg(ql_dbg_async, vha, 0x5045, 937 ql_dbg(ql_dbg_async, vha, 0x5045,
943 "Async-%s complete - portid=%02x%02x%02x mbx1=%x.\n", 938 "Async-%s complete - hdl=%x portid=%02x%02x%02x mbx1=%x.\n",
944 type, fcport->d_id.b.domain, fcport->d_id.b.area, 939 type, sp->handle, fcport->d_id.b.domain,
945 fcport->d_id.b.al_pa, le16_to_cpu(mbx->mb1)); 940 fcport->d_id.b.area, fcport->d_id.b.al_pa,
941 le16_to_cpu(mbx->mb1));
946 942
947 data[0] = MBS_COMMAND_COMPLETE; 943 data[0] = MBS_COMMAND_COMPLETE;
948 if (ctx->type == SRB_LOGIN_CMD) { 944 if (ctx->type == SRB_LOGIN_CMD) {
@@ -968,11 +964,10 @@ qla2x00_mbx_iocb_entry(scsi_qla_host_t *vha, struct req_que *req,
968 } 964 }
969 965
970 ql_log(ql_log_warn, vha, 0x5046, 966 ql_log(ql_log_warn, vha, 0x5046,
971 "Async-%s failed - portid=%02x%02x%02x status=%x " 967 "Async-%s failed - hdl=%x portid=%02x%02x%02x status=%x "
972 "mb0=%x mb1=%x mb2=%x mb6=%x mb7=%x.\n", 968 "mb0=%x mb1=%x mb2=%x mb6=%x mb7=%x.\n", type, sp->handle,
973 type, fcport->d_id.b.domain, 969 fcport->d_id.b.domain, fcport->d_id.b.area, fcport->d_id.b.al_pa,
974 fcport->d_id.b.area, fcport->d_id.b.al_pa, status, 970 status, le16_to_cpu(mbx->mb0), le16_to_cpu(mbx->mb1),
975 le16_to_cpu(mbx->mb0), le16_to_cpu(mbx->mb1),
976 le16_to_cpu(mbx->mb2), le16_to_cpu(mbx->mb6), 971 le16_to_cpu(mbx->mb2), le16_to_cpu(mbx->mb6),
977 le16_to_cpu(mbx->mb7)); 972 le16_to_cpu(mbx->mb7));
978 973
@@ -1036,7 +1031,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
1036 bsg_job->reply->result = DID_ERROR << 16; 1031 bsg_job->reply->result = DID_ERROR << 16;
1037 bsg_job->reply->reply_payload_rcv_len = 0; 1032 bsg_job->reply->reply_payload_rcv_len = 0;
1038 } 1033 }
1039 ql_dump_buffer(ql_dbg_async + ql_dbg_buffer, vha, 0x5058, 1034 ql_dump_buffer(ql_dbg_async + ql_dbg_buffer, vha, 0x5035,
1040 (uint8_t *)pkt, sizeof(*pkt)); 1035 (uint8_t *)pkt, sizeof(*pkt));
1041 } else { 1036 } else {
1042 bsg_job->reply->result = DID_OK << 16; 1037 bsg_job->reply->result = DID_OK << 16;
@@ -1111,9 +1106,9 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
1111 le16_to_cpu(((struct els_sts_entry_24xx*)pkt)->total_byte_count); 1106 le16_to_cpu(((struct els_sts_entry_24xx*)pkt)->total_byte_count);
1112 1107
1113 ql_log(ql_log_info, vha, 0x503f, 1108 ql_log(ql_log_info, vha, 0x503f,
1114 "ELS-CT pass-through-%s error comp_status-status=0x%x " 1109 "ELS-CT pass-through-%s error hdl=%x comp_status-status=0x%x "
1115 "error subcode 1=0x%x error subcode 2=0x%x total_byte = 0x%x.\n", 1110 "error subcode 1=0x%x error subcode 2=0x%x total_byte = 0x%x.\n",
1116 type, comp_status, fw_status[1], fw_status[2], 1111 type, sp->handle, comp_status, fw_status[1], fw_status[2],
1117 le16_to_cpu(((struct els_sts_entry_24xx *) 1112 le16_to_cpu(((struct els_sts_entry_24xx *)
1118 pkt)->total_byte_count)); 1113 pkt)->total_byte_count));
1119 fw_sts_ptr = ((uint8_t*)bsg_job->req->sense) + sizeof(struct fc_bsg_reply); 1114 fw_sts_ptr = ((uint8_t*)bsg_job->req->sense) + sizeof(struct fc_bsg_reply);
@@ -1121,9 +1116,9 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
1121 } 1116 }
1122 else { 1117 else {
1123 ql_log(ql_log_info, vha, 0x5040, 1118 ql_log(ql_log_info, vha, 0x5040,
1124 "ELS-CT pass-through-%s error comp_status-status=0x%x " 1119 "ELS-CT pass-through-%s error hdl=%x comp_status-status=0x%x "
1125 "error subcode 1=0x%x error subcode 2=0x%x.\n", 1120 "error subcode 1=0x%x error subcode 2=0x%x.\n",
1126 type, comp_status, 1121 type, sp->handle, comp_status,
1127 le16_to_cpu(((struct els_sts_entry_24xx *) 1122 le16_to_cpu(((struct els_sts_entry_24xx *)
1128 pkt)->error_subcode_1), 1123 pkt)->error_subcode_1),
1129 le16_to_cpu(((struct els_sts_entry_24xx *) 1124 le16_to_cpu(((struct els_sts_entry_24xx *)
@@ -1184,11 +1179,12 @@ qla24xx_logio_entry(scsi_qla_host_t *vha, struct req_que *req,
1184 QLA_LOGIO_LOGIN_RETRIED : 0; 1179 QLA_LOGIO_LOGIN_RETRIED : 0;
1185 if (logio->entry_status) { 1180 if (logio->entry_status) {
1186 ql_log(ql_log_warn, vha, 0x5034, 1181 ql_log(ql_log_warn, vha, 0x5034,
1187 "Async-%s error entry - " 1182 "Async-%s error entry - hdl=%x"
1188 "portid=%02x%02x%02x entry-status=%x.\n", 1183 "portid=%02x%02x%02x entry-status=%x.\n",
1189 type, fcport->d_id.b.domain, fcport->d_id.b.area, 1184 type, sp->handle, fcport->d_id.b.domain,
1190 fcport->d_id.b.al_pa, logio->entry_status); 1185 fcport->d_id.b.area, fcport->d_id.b.al_pa,
1191 ql_dump_buffer(ql_dbg_async + ql_dbg_buffer, vha, 0x5059, 1186 logio->entry_status);
1187 ql_dump_buffer(ql_dbg_async + ql_dbg_buffer, vha, 0x504d,
1192 (uint8_t *)logio, sizeof(*logio)); 1188 (uint8_t *)logio, sizeof(*logio));
1193 1189
1194 goto logio_done; 1190 goto logio_done;
@@ -1196,10 +1192,9 @@ qla24xx_logio_entry(scsi_qla_host_t *vha, struct req_que *req,
1196 1192
1197 if (le16_to_cpu(logio->comp_status) == CS_COMPLETE) { 1193 if (le16_to_cpu(logio->comp_status) == CS_COMPLETE) {
1198 ql_dbg(ql_dbg_async, vha, 0x5036, 1194 ql_dbg(ql_dbg_async, vha, 0x5036,
1199 "Async-%s complete - portid=%02x%02x%02x " 1195 "Async-%s complete - hdl=%x portid=%02x%02x%02x "
1200 "iop0=%x.\n", 1196 "iop0=%x.\n", type, sp->handle, fcport->d_id.b.domain,
1201 type, fcport->d_id.b.domain, fcport->d_id.b.area, 1197 fcport->d_id.b.area, fcport->d_id.b.al_pa,
1202 fcport->d_id.b.al_pa,
1203 le32_to_cpu(logio->io_parameter[0])); 1198 le32_to_cpu(logio->io_parameter[0]));
1204 1199
1205 data[0] = MBS_COMMAND_COMPLETE; 1200 data[0] = MBS_COMMAND_COMPLETE;
@@ -1238,9 +1233,8 @@ qla24xx_logio_entry(scsi_qla_host_t *vha, struct req_que *req,
1238 } 1233 }
1239 1234
1240 ql_dbg(ql_dbg_async, vha, 0x5037, 1235 ql_dbg(ql_dbg_async, vha, 0x5037,
1241 "Async-%s failed - portid=%02x%02x%02x comp=%x " 1236 "Async-%s failed - hdl=%x portid=%02x%02x%02x comp=%x "
1242 "iop0=%x iop1=%x.\n", 1237 "iop0=%x iop1=%x.\n", type, sp->handle, fcport->d_id.b.domain,
1243 type, fcport->d_id.b.domain,
1244 fcport->d_id.b.area, fcport->d_id.b.al_pa, 1238 fcport->d_id.b.area, fcport->d_id.b.al_pa,
1245 le16_to_cpu(logio->comp_status), 1239 le16_to_cpu(logio->comp_status),
1246 le32_to_cpu(logio->io_parameter[0]), 1240 le32_to_cpu(logio->io_parameter[0]),
@@ -1274,25 +1268,25 @@ qla24xx_tm_iocb_entry(scsi_qla_host_t *vha, struct req_que *req,
1274 1268
1275 if (sts->entry_status) { 1269 if (sts->entry_status) {
1276 ql_log(ql_log_warn, vha, 0x5038, 1270 ql_log(ql_log_warn, vha, 0x5038,
1277 "Async-%s error - entry-status(%x).\n", 1271 "Async-%s error - hdl=%x entry-status(%x).\n",
1278 type, sts->entry_status); 1272 type, sp->handle, sts->entry_status);
1279 } else if (sts->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) { 1273 } else if (sts->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) {
1280 ql_log(ql_log_warn, vha, 0x5039, 1274 ql_log(ql_log_warn, vha, 0x5039,
1281 "Async-%s error - completion status(%x).\n", 1275 "Async-%s error - hdl=%x completion status(%x).\n",
1282 type, sts->comp_status); 1276 type, sp->handle, sts->comp_status);
1283 } else if (!(le16_to_cpu(sts->scsi_status) & 1277 } else if (!(le16_to_cpu(sts->scsi_status) &
1284 SS_RESPONSE_INFO_LEN_VALID)) { 1278 SS_RESPONSE_INFO_LEN_VALID)) {
1285 ql_log(ql_log_warn, vha, 0x503a, 1279 ql_log(ql_log_warn, vha, 0x503a,
1286 "Async-%s error - no response info(%x).\n", 1280 "Async-%s error - hdl=%x no response info(%x).\n",
1287 type, sts->scsi_status); 1281 type, sp->handle, sts->scsi_status);
1288 } else if (le32_to_cpu(sts->rsp_data_len) < 4) { 1282 } else if (le32_to_cpu(sts->rsp_data_len) < 4) {
1289 ql_log(ql_log_warn, vha, 0x503b, 1283 ql_log(ql_log_warn, vha, 0x503b,
1290 "Async-%s error - not enough response(%d).\n", 1284 "Async-%s error - hdl=%x not enough response(%d).\n",
1291 type, sts->rsp_data_len); 1285 type, sp->handle, sts->rsp_data_len);
1292 } else if (sts->data[3]) { 1286 } else if (sts->data[3]) {
1293 ql_log(ql_log_warn, vha, 0x503c, 1287 ql_log(ql_log_warn, vha, 0x503c,
1294 "Async-%s error - response(%x).\n", 1288 "Async-%s error - hdl=%x response(%x).\n",
1295 type, sts->data[3]); 1289 type, sp->handle, sts->data[3]);
1296 } else { 1290 } else {
1297 error = 0; 1291 error = 0;
1298 } 1292 }
@@ -1337,9 +1331,6 @@ qla2x00_process_response_queue(struct rsp_que *rsp)
1337 } 1331 }
1338 1332
1339 if (pkt->entry_status != 0) { 1333 if (pkt->entry_status != 0) {
1340 ql_log(ql_log_warn, vha, 0x5035,
1341 "Process error entry.\n");
1342
1343 qla2x00_error_entry(vha, rsp, pkt); 1334 qla2x00_error_entry(vha, rsp, pkt);
1344 ((response_t *)pkt)->signature = RESPONSE_PROCESSED; 1335 ((response_t *)pkt)->signature = RESPONSE_PROCESSED;
1345 wmb(); 1336 wmb();
@@ -1391,7 +1382,6 @@ qla2x00_process_response_queue(struct rsp_que *rsp)
1391} 1382}
1392 1383
1393static inline void 1384static inline void
1394
1395qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t par_sense_len, 1385qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t par_sense_len,
1396 uint32_t sense_len, struct rsp_que *rsp) 1386 uint32_t sense_len, struct rsp_que *rsp)
1397{ 1387{
@@ -1413,13 +1403,14 @@ qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t par_sense_len,
1413 if (sp->request_sense_length != 0) 1403 if (sp->request_sense_length != 0)
1414 rsp->status_srb = sp; 1404 rsp->status_srb = sp;
1415 1405
1416 ql_dbg(ql_dbg_io, vha, 0x301c, 1406 if (sense_len) {
1417 "Check condition Sense data, scsi(%ld:%d:%d:%d) cmd=%p.\n", 1407 ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x301c,
1418 sp->fcport->vha->host_no, cp->device->channel, cp->device->id, 1408 "Check condition Sense data, nexus%ld:%d:%d cmd=%p.\n",
1419 cp->device->lun, cp); 1409 sp->fcport->vha->host_no, cp->device->id, cp->device->lun,
1420 if (sense_len) 1410 cp);
1421 ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x302b, 1411 ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x302b,
1422 cp->sense_buffer, sense_len); 1412 cp->sense_buffer, sense_len);
1413 }
1423} 1414}
1424 1415
1425struct scsi_dif_tuple { 1416struct scsi_dif_tuple {
@@ -1506,7 +1497,7 @@ qla2x00_handle_dif_error(srb_t *sp, struct sts_entry_24xx *sts24)
1506 } 1497 }
1507 1498
1508 if (k != blocks_done) { 1499 if (k != blocks_done) {
1509 qla_printk(KERN_WARNING, sp->fcport->vha->hw, 1500 ql_log(ql_log_warn, vha, 0x302f,
1510 "unexpected tag values tag:lba=%x:%llx)\n", 1501 "unexpected tag values tag:lba=%x:%llx)\n",
1511 e_ref_tag, (unsigned long long)lba_s); 1502 e_ref_tag, (unsigned long long)lba_s);
1512 return 1; 1503 return 1;
@@ -1611,7 +1602,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1611 sp = NULL; 1602 sp = NULL;
1612 1603
1613 if (sp == NULL) { 1604 if (sp == NULL) {
1614 ql_log(ql_log_warn, vha, 0x3017, 1605 ql_dbg(ql_dbg_io, vha, 0x3017,
1615 "Invalid status handle (0x%x).\n", sts->handle); 1606 "Invalid status handle (0x%x).\n", sts->handle);
1616 1607
1617 if (IS_QLA82XX(ha)) 1608 if (IS_QLA82XX(ha))
@@ -1623,7 +1614,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1623 } 1614 }
1624 cp = sp->cmd; 1615 cp = sp->cmd;
1625 if (cp == NULL) { 1616 if (cp == NULL) {
1626 ql_log(ql_log_warn, vha, 0x3018, 1617 ql_dbg(ql_dbg_io, vha, 0x3018,
1627 "Command already returned (0x%x/%p).\n", 1618 "Command already returned (0x%x/%p).\n",
1628 sts->handle, sp); 1619 sts->handle, sp);
1629 1620
@@ -1670,7 +1661,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1670 par_sense_len -= rsp_info_len; 1661 par_sense_len -= rsp_info_len;
1671 } 1662 }
1672 if (rsp_info_len > 3 && rsp_info[3]) { 1663 if (rsp_info_len > 3 && rsp_info[3]) {
1673 ql_log(ql_log_warn, vha, 0x3019, 1664 ql_dbg(ql_dbg_io, vha, 0x3019,
1674 "FCP I/O protocol failure (0x%x/0x%x).\n", 1665 "FCP I/O protocol failure (0x%x/0x%x).\n",
1675 rsp_info_len, rsp_info[3]); 1666 rsp_info_len, rsp_info[3]);
1676 1667
@@ -1701,7 +1692,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1701 if (!lscsi_status && 1692 if (!lscsi_status &&
1702 ((unsigned)(scsi_bufflen(cp) - resid) < 1693 ((unsigned)(scsi_bufflen(cp) - resid) <
1703 cp->underflow)) { 1694 cp->underflow)) {
1704 ql_log(ql_log_warn, vha, 0x301a, 1695 ql_dbg(ql_dbg_io, vha, 0x301a,
1705 "Mid-layer underflow " 1696 "Mid-layer underflow "
1706 "detected (0x%x of 0x%x bytes).\n", 1697 "detected (0x%x of 0x%x bytes).\n",
1707 resid, scsi_bufflen(cp)); 1698 resid, scsi_bufflen(cp));
@@ -1713,7 +1704,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1713 cp->result = DID_OK << 16 | lscsi_status; 1704 cp->result = DID_OK << 16 | lscsi_status;
1714 1705
1715 if (lscsi_status == SAM_STAT_TASK_SET_FULL) { 1706 if (lscsi_status == SAM_STAT_TASK_SET_FULL) {
1716 ql_log(ql_log_warn, vha, 0x301b, 1707 ql_dbg(ql_dbg_io, vha, 0x301b,
1717 "QUEUE FULL detected.\n"); 1708 "QUEUE FULL detected.\n");
1718 break; 1709 break;
1719 } 1710 }
@@ -1735,7 +1726,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1735 scsi_set_resid(cp, resid); 1726 scsi_set_resid(cp, resid);
1736 if (scsi_status & SS_RESIDUAL_UNDER) { 1727 if (scsi_status & SS_RESIDUAL_UNDER) {
1737 if (IS_FWI2_CAPABLE(ha) && fw_resid_len != resid_len) { 1728 if (IS_FWI2_CAPABLE(ha) && fw_resid_len != resid_len) {
1738 ql_log(ql_log_warn, vha, 0x301d, 1729 ql_dbg(ql_dbg_io, vha, 0x301d,
1739 "Dropped frame(s) detected " 1730 "Dropped frame(s) detected "
1740 "(0x%x of 0x%x bytes).\n", 1731 "(0x%x of 0x%x bytes).\n",
1741 resid, scsi_bufflen(cp)); 1732 resid, scsi_bufflen(cp));
@@ -1747,7 +1738,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1747 if (!lscsi_status && 1738 if (!lscsi_status &&
1748 ((unsigned)(scsi_bufflen(cp) - resid) < 1739 ((unsigned)(scsi_bufflen(cp) - resid) <
1749 cp->underflow)) { 1740 cp->underflow)) {
1750 ql_log(ql_log_warn, vha, 0x301e, 1741 ql_dbg(ql_dbg_io, vha, 0x301e,
1751 "Mid-layer underflow " 1742 "Mid-layer underflow "
1752 "detected (0x%x of 0x%x bytes).\n", 1743 "detected (0x%x of 0x%x bytes).\n",
1753 resid, scsi_bufflen(cp)); 1744 resid, scsi_bufflen(cp));
@@ -1756,7 +1747,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1756 break; 1747 break;
1757 } 1748 }
1758 } else { 1749 } else {
1759 ql_log(ql_log_warn, vha, 0x301f, 1750 ql_dbg(ql_dbg_io, vha, 0x301f,
1760 "Dropped frame(s) detected (0x%x " 1751 "Dropped frame(s) detected (0x%x "
1761 "of 0x%x bytes).\n", resid, scsi_bufflen(cp)); 1752 "of 0x%x bytes).\n", resid, scsi_bufflen(cp));
1762 1753
@@ -1774,7 +1765,7 @@ check_scsi_status:
1774 */ 1765 */
1775 if (lscsi_status != 0) { 1766 if (lscsi_status != 0) {
1776 if (lscsi_status == SAM_STAT_TASK_SET_FULL) { 1767 if (lscsi_status == SAM_STAT_TASK_SET_FULL) {
1777 ql_log(ql_log_warn, vha, 0x3020, 1768 ql_dbg(ql_dbg_io, vha, 0x3020,
1778 "QUEUE FULL detected.\n"); 1769 "QUEUE FULL detected.\n");
1779 logit = 1; 1770 logit = 1;
1780 break; 1771 break;
@@ -1838,10 +1829,15 @@ out:
1838 if (logit) 1829 if (logit)
1839 ql_dbg(ql_dbg_io, vha, 0x3022, 1830 ql_dbg(ql_dbg_io, vha, 0x3022,
1840 "FCP command status: 0x%x-0x%x (0x%x) " 1831 "FCP command status: 0x%x-0x%x (0x%x) "
1841 "oxid=0x%x cdb=%02x%02x%02x len=0x%x " 1832 "nexus=%ld:%d:%d portid=%02x%02x%02x oxid=0x%x "
1833 "cdb=%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x len=0x%x "
1842 "rsp_info=0x%x resid=0x%x fw_resid=0x%x.\n", 1834 "rsp_info=0x%x resid=0x%x fw_resid=0x%x.\n",
1843 comp_status, scsi_status, cp->result, ox_id, cp->cmnd[0], 1835 comp_status, scsi_status, cp->result, vha->host_no,
1844 cp->cmnd[1], cp->cmnd[2], scsi_bufflen(cp), rsp_info_len, 1836 cp->device->id, cp->device->lun, fcport->d_id.b.domain,
1837 fcport->d_id.b.area, fcport->d_id.b.al_pa, ox_id,
1838 cp->cmnd[0], cp->cmnd[1], cp->cmnd[2], cp->cmnd[3],
1839 cp->cmnd[4], cp->cmnd[5], cp->cmnd[6], cp->cmnd[7],
1840 cp->cmnd[8], cp->cmnd[9], scsi_bufflen(cp), rsp_info_len,
1845 resid_len, fw_resid_len); 1841 resid_len, fw_resid_len);
1846 1842
1847 if (rsp->status_srb == NULL) 1843 if (rsp->status_srb == NULL)
@@ -1991,13 +1987,8 @@ qla24xx_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
1991 wptr++; 1987 wptr++;
1992 } 1988 }
1993 1989
1994 if (ha->mcp) { 1990 if (!ha->mcp)
1995 ql_dbg(ql_dbg_async, vha, 0x504d, 1991 ql_dbg(ql_dbg_async, vha, 0x504e, "MBX pointer ERRROR.\n");
1996 "Got mailbox completion. cmd=%x.\n", ha->mcp->mb[0]);
1997 } else {
1998 ql_dbg(ql_dbg_async, vha, 0x504e,
1999 "MBX pointer ERROR.\n");
2000 }
2001} 1992}
2002 1993
2003/** 1994/**
@@ -2025,9 +2016,6 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
2025 } 2016 }
2026 2017
2027 if (pkt->entry_status != 0) { 2018 if (pkt->entry_status != 0) {
2028 ql_dbg(ql_dbg_async, vha, 0x5029,
2029 "Process error entry.\n");
2030
2031 qla2x00_error_entry(vha, rsp, (sts_entry_t *) pkt); 2019 qla2x00_error_entry(vha, rsp, (sts_entry_t *) pkt);
2032 ((response_t *)pkt)->signature = RESPONSE_PROCESSED; 2020 ((response_t *)pkt)->signature = RESPONSE_PROCESSED;
2033 wmb(); 2021 wmb();