aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libfc/fc_lport.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libfc/fc_lport.c')
-rw-r--r--drivers/scsi/libfc/fc_lport.c60
1 files changed, 35 insertions, 25 deletions
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
index b8178ef398d7..52c4f2dfcfd3 100644
--- a/drivers/scsi/libfc/fc_lport.c
+++ b/drivers/scsi/libfc/fc_lport.c
@@ -1032,17 +1032,19 @@ static void fc_lport_rft_id_resp(struct fc_seq *sp, struct fc_frame *fp,
1032 1032
1033 FC_DEBUG_LPORT("Received a RFT_ID response\n"); 1033 FC_DEBUG_LPORT("Received a RFT_ID response\n");
1034 1034
1035 if (IS_ERR(fp)) {
1036 fc_lport_error(lport, fp);
1037 goto err;
1038 }
1039
1040 if (lport->state != LPORT_ST_RFT_ID) { 1035 if (lport->state != LPORT_ST_RFT_ID) {
1041 FC_DBG("Received a RFT_ID response, but in state %s\n", 1036 FC_DBG("Received a RFT_ID response, but in state %s\n",
1042 fc_lport_state(lport)); 1037 fc_lport_state(lport));
1038 if (IS_ERR(fp))
1039 goto err;
1043 goto out; 1040 goto out;
1044 } 1041 }
1045 1042
1043 if (IS_ERR(fp)) {
1044 fc_lport_error(lport, fp);
1045 goto err;
1046 }
1047
1046 fh = fc_frame_header_get(fp); 1048 fh = fc_frame_header_get(fp);
1047 ct = fc_frame_payload_get(fp, sizeof(*ct)); 1049 ct = fc_frame_payload_get(fp, sizeof(*ct));
1048 1050
@@ -1084,17 +1086,19 @@ static void fc_lport_rpn_id_resp(struct fc_seq *sp, struct fc_frame *fp,
1084 1086
1085 FC_DEBUG_LPORT("Received a RPN_ID response\n"); 1087 FC_DEBUG_LPORT("Received a RPN_ID response\n");
1086 1088
1087 if (IS_ERR(fp)) {
1088 fc_lport_error(lport, fp);
1089 goto err;
1090 }
1091
1092 if (lport->state != LPORT_ST_RPN_ID) { 1089 if (lport->state != LPORT_ST_RPN_ID) {
1093 FC_DBG("Received a RPN_ID response, but in state %s\n", 1090 FC_DBG("Received a RPN_ID response, but in state %s\n",
1094 fc_lport_state(lport)); 1091 fc_lport_state(lport));
1092 if (IS_ERR(fp))
1093 goto err;
1095 goto out; 1094 goto out;
1096 } 1095 }
1097 1096
1097 if (IS_ERR(fp)) {
1098 fc_lport_error(lport, fp);
1099 goto err;
1100 }
1101
1098 fh = fc_frame_header_get(fp); 1102 fh = fc_frame_header_get(fp);
1099 ct = fc_frame_payload_get(fp, sizeof(*ct)); 1103 ct = fc_frame_payload_get(fp, sizeof(*ct));
1100 if (fh && ct && fh->fh_type == FC_TYPE_CT && 1104 if (fh && ct && fh->fh_type == FC_TYPE_CT &&
@@ -1134,17 +1138,19 @@ static void fc_lport_scr_resp(struct fc_seq *sp, struct fc_frame *fp,
1134 1138
1135 FC_DEBUG_LPORT("Received a SCR response\n"); 1139 FC_DEBUG_LPORT("Received a SCR response\n");
1136 1140
1137 if (IS_ERR(fp)) {
1138 fc_lport_error(lport, fp);
1139 goto err;
1140 }
1141
1142 if (lport->state != LPORT_ST_SCR) { 1141 if (lport->state != LPORT_ST_SCR) {
1143 FC_DBG("Received a SCR response, but in state %s\n", 1142 FC_DBG("Received a SCR response, but in state %s\n",
1144 fc_lport_state(lport)); 1143 fc_lport_state(lport));
1144 if (IS_ERR(fp))
1145 goto err;
1145 goto out; 1146 goto out;
1146 } 1147 }
1147 1148
1149 if (IS_ERR(fp)) {
1150 fc_lport_error(lport, fp);
1151 goto err;
1152 }
1153
1148 op = fc_frame_payload_op(fp); 1154 op = fc_frame_payload_op(fp);
1149 if (op == ELS_LS_ACC) 1155 if (op == ELS_LS_ACC)
1150 fc_lport_enter_ready(lport); 1156 fc_lport_enter_ready(lport);
@@ -1360,17 +1366,19 @@ static void fc_lport_logo_resp(struct fc_seq *sp, struct fc_frame *fp,
1360 1366
1361 FC_DEBUG_LPORT("Received a LOGO response\n"); 1367 FC_DEBUG_LPORT("Received a LOGO response\n");
1362 1368
1363 if (IS_ERR(fp)) {
1364 fc_lport_error(lport, fp);
1365 goto err;
1366 }
1367
1368 if (lport->state != LPORT_ST_LOGO) { 1369 if (lport->state != LPORT_ST_LOGO) {
1369 FC_DBG("Received a LOGO response, but in state %s\n", 1370 FC_DBG("Received a LOGO response, but in state %s\n",
1370 fc_lport_state(lport)); 1371 fc_lport_state(lport));
1372 if (IS_ERR(fp))
1373 goto err;
1371 goto out; 1374 goto out;
1372 } 1375 }
1373 1376
1377 if (IS_ERR(fp)) {
1378 fc_lport_error(lport, fp);
1379 goto err;
1380 }
1381
1374 op = fc_frame_payload_op(fp); 1382 op = fc_frame_payload_op(fp);
1375 if (op == ELS_LS_ACC) 1383 if (op == ELS_LS_ACC)
1376 fc_lport_enter_reset(lport); 1384 fc_lport_enter_reset(lport);
@@ -1444,17 +1452,19 @@ static void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
1444 1452
1445 FC_DEBUG_LPORT("Received a FLOGI response\n"); 1453 FC_DEBUG_LPORT("Received a FLOGI response\n");
1446 1454
1447 if (IS_ERR(fp)) {
1448 fc_lport_error(lport, fp);
1449 goto err;
1450 }
1451
1452 if (lport->state != LPORT_ST_FLOGI) { 1455 if (lport->state != LPORT_ST_FLOGI) {
1453 FC_DBG("Received a FLOGI response, but in state %s\n", 1456 FC_DBG("Received a FLOGI response, but in state %s\n",
1454 fc_lport_state(lport)); 1457 fc_lport_state(lport));
1458 if (IS_ERR(fp))
1459 goto err;
1455 goto out; 1460 goto out;
1456 } 1461 }
1457 1462
1463 if (IS_ERR(fp)) {
1464 fc_lport_error(lport, fp);
1465 goto err;
1466 }
1467
1458 fh = fc_frame_header_get(fp); 1468 fh = fc_frame_header_get(fp);
1459 did = ntoh24(fh->fh_d_id); 1469 did = ntoh24(fh->fh_d_id);
1460 if (fc_frame_payload_op(fp) == ELS_LS_ACC && did != 0) { 1470 if (fc_frame_payload_op(fp) == ELS_LS_ACC && did != 0) {