diff options
Diffstat (limited to 'drivers/target/iscsi')
-rw-r--r-- | drivers/target/iscsi/iscsi_target.c | 121 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_core.h | 1 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_erl0.c | 80 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_erl2.c | 4 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_erl2.h | 2 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_login.c | 14 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_nego.c | 18 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_tmr.c | 12 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_util.c | 6 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_util.h | 2 |
10 files changed, 122 insertions, 138 deletions
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 1c843b51f261..d6ce2182e672 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c | |||
@@ -785,9 +785,6 @@ static int iscsit_handle_scsi_cmd( | |||
785 | 785 | ||
786 | hdr = (struct iscsi_scsi_req *) buf; | 786 | hdr = (struct iscsi_scsi_req *) buf; |
787 | payload_length = ntoh24(hdr->dlength); | 787 | payload_length = ntoh24(hdr->dlength); |
788 | hdr->data_length = be32_to_cpu(hdr->data_length); | ||
789 | hdr->cmdsn = be32_to_cpu(hdr->cmdsn); | ||
790 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | ||
791 | 788 | ||
792 | /* FIXME; Add checks for AdditionalHeaderSegment */ | 789 | /* FIXME; Add checks for AdditionalHeaderSegment */ |
793 | 790 | ||
@@ -851,7 +848,7 @@ done: | |||
851 | buf, conn); | 848 | buf, conn); |
852 | } | 849 | } |
853 | 850 | ||
854 | if ((hdr->data_length == payload_length) && | 851 | if ((be32_to_cpu(hdr->data_length )== payload_length) && |
855 | (!(hdr->flags & ISCSI_FLAG_CMD_FINAL))) { | 852 | (!(hdr->flags & ISCSI_FLAG_CMD_FINAL))) { |
856 | pr_err("Expected Data Transfer Length and Length of" | 853 | pr_err("Expected Data Transfer Length and Length of" |
857 | " Immediate Data are the same, but ISCSI_FLAG_CMD_FINAL" | 854 | " Immediate Data are the same, but ISCSI_FLAG_CMD_FINAL" |
@@ -860,7 +857,7 @@ done: | |||
860 | buf, conn); | 857 | buf, conn); |
861 | } | 858 | } |
862 | 859 | ||
863 | if (payload_length > hdr->data_length) { | 860 | if (payload_length > be32_to_cpu(hdr->data_length)) { |
864 | pr_err("DataSegmentLength: %u is greater than" | 861 | pr_err("DataSegmentLength: %u is greater than" |
865 | " EDTL: %u, protocol error.\n", payload_length, | 862 | " EDTL: %u, protocol error.\n", payload_length, |
866 | hdr->data_length); | 863 | hdr->data_length); |
@@ -931,8 +928,8 @@ done: | |||
931 | spin_unlock_bh(&conn->sess->ttt_lock); | 928 | spin_unlock_bh(&conn->sess->ttt_lock); |
932 | } else if (hdr->flags & ISCSI_FLAG_CMD_WRITE) | 929 | } else if (hdr->flags & ISCSI_FLAG_CMD_WRITE) |
933 | cmd->targ_xfer_tag = 0xFFFFFFFF; | 930 | cmd->targ_xfer_tag = 0xFFFFFFFF; |
934 | cmd->cmd_sn = hdr->cmdsn; | 931 | cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); |
935 | cmd->exp_stat_sn = hdr->exp_statsn; | 932 | cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); |
936 | cmd->first_burst_len = payload_length; | 933 | cmd->first_burst_len = payload_length; |
937 | 934 | ||
938 | if (cmd->data_direction == DMA_FROM_DEVICE) { | 935 | if (cmd->data_direction == DMA_FROM_DEVICE) { |
@@ -951,8 +948,9 @@ done: | |||
951 | * Initialize struct se_cmd descriptor from target_core_mod infrastructure | 948 | * Initialize struct se_cmd descriptor from target_core_mod infrastructure |
952 | */ | 949 | */ |
953 | transport_init_se_cmd(&cmd->se_cmd, &lio_target_fabric_configfs->tf_ops, | 950 | transport_init_se_cmd(&cmd->se_cmd, &lio_target_fabric_configfs->tf_ops, |
954 | conn->sess->se_sess, hdr->data_length, cmd->data_direction, | 951 | conn->sess->se_sess, be32_to_cpu(hdr->data_length), |
955 | sam_task_attr, cmd->sense_buffer + 2); | 952 | cmd->data_direction, sam_task_attr, |
953 | cmd->sense_buffer + 2); | ||
956 | 954 | ||
957 | pr_debug("Got SCSI Command, ITT: 0x%08x, CmdSN: 0x%08x," | 955 | pr_debug("Got SCSI Command, ITT: 0x%08x, CmdSN: 0x%08x," |
958 | " ExpXferLen: %u, Length: %u, CID: %hu\n", hdr->itt, | 956 | " ExpXferLen: %u, Length: %u, CID: %hu\n", hdr->itt, |
@@ -1027,7 +1025,7 @@ attach_cmd: | |||
1027 | 1, 0, buf, cmd); | 1025 | 1, 0, buf, cmd); |
1028 | } | 1026 | } |
1029 | 1027 | ||
1030 | iscsit_ack_from_expstatsn(conn, hdr->exp_statsn); | 1028 | iscsit_ack_from_expstatsn(conn, be32_to_cpu(hdr->exp_statsn)); |
1031 | 1029 | ||
1032 | /* | 1030 | /* |
1033 | * If no Immediate Data is attached, it's OK to return now. | 1031 | * If no Immediate Data is attached, it's OK to return now. |
@@ -1193,10 +1191,6 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf) | |||
1193 | 1191 | ||
1194 | hdr = (struct iscsi_data *) buf; | 1192 | hdr = (struct iscsi_data *) buf; |
1195 | payload_length = ntoh24(hdr->dlength); | 1193 | payload_length = ntoh24(hdr->dlength); |
1196 | hdr->ttt = be32_to_cpu(hdr->ttt); | ||
1197 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | ||
1198 | hdr->datasn = be32_to_cpu(hdr->datasn); | ||
1199 | hdr->offset = be32_to_cpu(hdr->offset); | ||
1200 | 1194 | ||
1201 | if (!payload_length) { | 1195 | if (!payload_length) { |
1202 | pr_err("DataOUT payload is ZERO, protocol error.\n"); | 1196 | pr_err("DataOUT payload is ZERO, protocol error.\n"); |
@@ -1248,7 +1242,7 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf) | |||
1248 | se_cmd = &cmd->se_cmd; | 1242 | se_cmd = &cmd->se_cmd; |
1249 | iscsit_mod_dataout_timer(cmd); | 1243 | iscsit_mod_dataout_timer(cmd); |
1250 | 1244 | ||
1251 | if ((hdr->offset + payload_length) > cmd->se_cmd.data_length) { | 1245 | if ((be32_to_cpu(hdr->offset) + payload_length) > cmd->se_cmd.data_length) { |
1252 | pr_err("DataOut Offset: %u, Length %u greater than" | 1246 | pr_err("DataOut Offset: %u, Length %u greater than" |
1253 | " iSCSI Command EDTL %u, protocol error.\n", | 1247 | " iSCSI Command EDTL %u, protocol error.\n", |
1254 | hdr->offset, payload_length, cmd->se_cmd.data_length); | 1248 | hdr->offset, payload_length, cmd->se_cmd.data_length); |
@@ -1331,7 +1325,8 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf) | |||
1331 | rx_size += payload_length; | 1325 | rx_size += payload_length; |
1332 | iov = &cmd->iov_data[0]; | 1326 | iov = &cmd->iov_data[0]; |
1333 | 1327 | ||
1334 | iov_ret = iscsit_map_iovec(cmd, iov, hdr->offset, payload_length); | 1328 | iov_ret = iscsit_map_iovec(cmd, iov, be32_to_cpu(hdr->offset), |
1329 | payload_length); | ||
1335 | if (iov_ret < 0) | 1330 | if (iov_ret < 0) |
1336 | return -1; | 1331 | return -1; |
1337 | 1332 | ||
@@ -1362,7 +1357,8 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf) | |||
1362 | u32 data_crc; | 1357 | u32 data_crc; |
1363 | 1358 | ||
1364 | data_crc = iscsit_do_crypto_hash_sg(&conn->conn_rx_hash, cmd, | 1359 | data_crc = iscsit_do_crypto_hash_sg(&conn->conn_rx_hash, cmd, |
1365 | hdr->offset, payload_length, padding, | 1360 | be32_to_cpu(hdr->offset), |
1361 | payload_length, padding, | ||
1366 | cmd->pad_bytes); | 1362 | cmd->pad_bytes); |
1367 | 1363 | ||
1368 | if (checksum != data_crc) { | 1364 | if (checksum != data_crc) { |
@@ -1423,9 +1419,6 @@ static int iscsit_handle_nop_out( | |||
1423 | 1419 | ||
1424 | hdr = (struct iscsi_nopout *) buf; | 1420 | hdr = (struct iscsi_nopout *) buf; |
1425 | payload_length = ntoh24(hdr->dlength); | 1421 | payload_length = ntoh24(hdr->dlength); |
1426 | hdr->ttt = be32_to_cpu(hdr->ttt); | ||
1427 | hdr->cmdsn = be32_to_cpu(hdr->cmdsn); | ||
1428 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | ||
1429 | 1422 | ||
1430 | if (hdr->itt == RESERVED_ITT && !(hdr->opcode & ISCSI_OP_IMMEDIATE)) { | 1423 | if (hdr->itt == RESERVED_ITT && !(hdr->opcode & ISCSI_OP_IMMEDIATE)) { |
1431 | pr_err("NOPOUT ITT is reserved, but Immediate Bit is" | 1424 | pr_err("NOPOUT ITT is reserved, but Immediate Bit is" |
@@ -1455,7 +1448,7 @@ static int iscsit_handle_nop_out( | |||
1455 | * Either way, make sure we allocate an struct iscsi_cmd, as both | 1448 | * Either way, make sure we allocate an struct iscsi_cmd, as both |
1456 | * can contain ping data. | 1449 | * can contain ping data. |
1457 | */ | 1450 | */ |
1458 | if (hdr->ttt == 0xFFFFFFFF) { | 1451 | if (hdr->ttt == cpu_to_be32(0xFFFFFFFF)) { |
1459 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 1452 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); |
1460 | if (!cmd) | 1453 | if (!cmd) |
1461 | return iscsit_add_reject( | 1454 | return iscsit_add_reject( |
@@ -1468,12 +1461,12 @@ static int iscsit_handle_nop_out( | |||
1468 | 1 : 0); | 1461 | 1 : 0); |
1469 | conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; | 1462 | conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; |
1470 | cmd->targ_xfer_tag = 0xFFFFFFFF; | 1463 | cmd->targ_xfer_tag = 0xFFFFFFFF; |
1471 | cmd->cmd_sn = hdr->cmdsn; | 1464 | cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); |
1472 | cmd->exp_stat_sn = hdr->exp_statsn; | 1465 | cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); |
1473 | cmd->data_direction = DMA_NONE; | 1466 | cmd->data_direction = DMA_NONE; |
1474 | } | 1467 | } |
1475 | 1468 | ||
1476 | if (payload_length && (hdr->ttt == 0xFFFFFFFF)) { | 1469 | if (payload_length && hdr->ttt == cpu_to_be32(0xFFFFFFFF)) { |
1477 | rx_size = payload_length; | 1470 | rx_size = payload_length; |
1478 | ping_data = kzalloc(payload_length + 1, GFP_KERNEL); | 1471 | ping_data = kzalloc(payload_length + 1, GFP_KERNEL); |
1479 | if (!ping_data) { | 1472 | if (!ping_data) { |
@@ -1566,7 +1559,7 @@ static int iscsit_handle_nop_out( | |||
1566 | list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); | 1559 | list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); |
1567 | spin_unlock_bh(&conn->cmd_lock); | 1560 | spin_unlock_bh(&conn->cmd_lock); |
1568 | 1561 | ||
1569 | iscsit_ack_from_expstatsn(conn, hdr->exp_statsn); | 1562 | iscsit_ack_from_expstatsn(conn, be32_to_cpu(hdr->exp_statsn)); |
1570 | 1563 | ||
1571 | if (hdr->opcode & ISCSI_OP_IMMEDIATE) { | 1564 | if (hdr->opcode & ISCSI_OP_IMMEDIATE) { |
1572 | iscsit_add_cmd_to_response_queue(cmd, conn, | 1565 | iscsit_add_cmd_to_response_queue(cmd, conn, |
@@ -1587,11 +1580,11 @@ static int iscsit_handle_nop_out( | |||
1587 | return 0; | 1580 | return 0; |
1588 | } | 1581 | } |
1589 | 1582 | ||
1590 | if (hdr->ttt != 0xFFFFFFFF) { | 1583 | if (hdr->ttt != cpu_to_be32(0xFFFFFFFF)) { |
1591 | /* | 1584 | /* |
1592 | * This was a response to a unsolicited NOPIN ping. | 1585 | * This was a response to a unsolicited NOPIN ping. |
1593 | */ | 1586 | */ |
1594 | cmd = iscsit_find_cmd_from_ttt(conn, hdr->ttt); | 1587 | cmd = iscsit_find_cmd_from_ttt(conn, be32_to_cpu(hdr->ttt)); |
1595 | if (!cmd) | 1588 | if (!cmd) |
1596 | return -1; | 1589 | return -1; |
1597 | 1590 | ||
@@ -1636,10 +1629,6 @@ static int iscsit_handle_task_mgt_cmd( | |||
1636 | u8 function; | 1629 | u8 function; |
1637 | 1630 | ||
1638 | hdr = (struct iscsi_tm *) buf; | 1631 | hdr = (struct iscsi_tm *) buf; |
1639 | hdr->cmdsn = be32_to_cpu(hdr->cmdsn); | ||
1640 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | ||
1641 | hdr->refcmdsn = be32_to_cpu(hdr->refcmdsn); | ||
1642 | hdr->exp_datasn = be32_to_cpu(hdr->exp_datasn); | ||
1643 | hdr->flags &= ~ISCSI_FLAG_CMD_FINAL; | 1632 | hdr->flags &= ~ISCSI_FLAG_CMD_FINAL; |
1644 | function = hdr->flags; | 1633 | function = hdr->flags; |
1645 | 1634 | ||
@@ -1664,8 +1653,8 @@ static int iscsit_handle_task_mgt_cmd( | |||
1664 | buf, conn); | 1653 | buf, conn); |
1665 | } | 1654 | } |
1666 | if ((function != ISCSI_TM_FUNC_ABORT_TASK) && | 1655 | if ((function != ISCSI_TM_FUNC_ABORT_TASK) && |
1667 | (hdr->refcmdsn != ISCSI_RESERVED_TAG)) | 1656 | be32_to_cpu(hdr->refcmdsn) != ISCSI_RESERVED_TAG) |
1668 | hdr->refcmdsn = ISCSI_RESERVED_TAG; | 1657 | hdr->refcmdsn = cpu_to_be32(ISCSI_RESERVED_TAG); |
1669 | 1658 | ||
1670 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 1659 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); |
1671 | if (!cmd) | 1660 | if (!cmd) |
@@ -1742,8 +1731,8 @@ static int iscsit_handle_task_mgt_cmd( | |||
1742 | cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); | 1731 | cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); |
1743 | cmd->init_task_tag = hdr->itt; | 1732 | cmd->init_task_tag = hdr->itt; |
1744 | cmd->targ_xfer_tag = 0xFFFFFFFF; | 1733 | cmd->targ_xfer_tag = 0xFFFFFFFF; |
1745 | cmd->cmd_sn = hdr->cmdsn; | 1734 | cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); |
1746 | cmd->exp_stat_sn = hdr->exp_statsn; | 1735 | cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); |
1747 | se_tmr = cmd->se_cmd.se_tmr_req; | 1736 | se_tmr = cmd->se_cmd.se_tmr_req; |
1748 | tmr_req = cmd->tmr_req; | 1737 | tmr_req = cmd->tmr_req; |
1749 | /* | 1738 | /* |
@@ -1827,7 +1816,7 @@ attach: | |||
1827 | ISCSI_REASON_PROTOCOL_ERROR, | 1816 | ISCSI_REASON_PROTOCOL_ERROR, |
1828 | 1, 0, buf, cmd); | 1817 | 1, 0, buf, cmd); |
1829 | } | 1818 | } |
1830 | iscsit_ack_from_expstatsn(conn, hdr->exp_statsn); | 1819 | iscsit_ack_from_expstatsn(conn, be32_to_cpu(hdr->exp_statsn)); |
1831 | 1820 | ||
1832 | if (out_of_order_cmdsn || !(hdr->opcode & ISCSI_OP_IMMEDIATE)) | 1821 | if (out_of_order_cmdsn || !(hdr->opcode & ISCSI_OP_IMMEDIATE)) |
1833 | return 0; | 1822 | return 0; |
@@ -1864,9 +1853,6 @@ static int iscsit_handle_text_cmd( | |||
1864 | 1853 | ||
1865 | hdr = (struct iscsi_text *) buf; | 1854 | hdr = (struct iscsi_text *) buf; |
1866 | payload_length = ntoh24(hdr->dlength); | 1855 | payload_length = ntoh24(hdr->dlength); |
1867 | hdr->ttt = be32_to_cpu(hdr->ttt); | ||
1868 | hdr->cmdsn = be32_to_cpu(hdr->cmdsn); | ||
1869 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | ||
1870 | 1856 | ||
1871 | if (payload_length > conn->conn_ops->MaxXmitDataSegmentLength) { | 1857 | if (payload_length > conn->conn_ops->MaxXmitDataSegmentLength) { |
1872 | pr_err("Unable to accept text parameter length: %u" | 1858 | pr_err("Unable to accept text parameter length: %u" |
@@ -1983,15 +1969,15 @@ static int iscsit_handle_text_cmd( | |||
1983 | cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); | 1969 | cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); |
1984 | conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; | 1970 | conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; |
1985 | cmd->targ_xfer_tag = 0xFFFFFFFF; | 1971 | cmd->targ_xfer_tag = 0xFFFFFFFF; |
1986 | cmd->cmd_sn = hdr->cmdsn; | 1972 | cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); |
1987 | cmd->exp_stat_sn = hdr->exp_statsn; | 1973 | cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); |
1988 | cmd->data_direction = DMA_NONE; | 1974 | cmd->data_direction = DMA_NONE; |
1989 | 1975 | ||
1990 | spin_lock_bh(&conn->cmd_lock); | 1976 | spin_lock_bh(&conn->cmd_lock); |
1991 | list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); | 1977 | list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); |
1992 | spin_unlock_bh(&conn->cmd_lock); | 1978 | spin_unlock_bh(&conn->cmd_lock); |
1993 | 1979 | ||
1994 | iscsit_ack_from_expstatsn(conn, hdr->exp_statsn); | 1980 | iscsit_ack_from_expstatsn(conn, be32_to_cpu(hdr->exp_statsn)); |
1995 | 1981 | ||
1996 | if (!(hdr->opcode & ISCSI_OP_IMMEDIATE)) { | 1982 | if (!(hdr->opcode & ISCSI_OP_IMMEDIATE)) { |
1997 | cmdsn_ret = iscsit_sequence_cmd(conn, cmd, hdr->cmdsn); | 1983 | cmdsn_ret = iscsit_sequence_cmd(conn, cmd, hdr->cmdsn); |
@@ -2125,9 +2111,6 @@ static int iscsit_handle_logout_cmd( | |||
2125 | 2111 | ||
2126 | hdr = (struct iscsi_logout *) buf; | 2112 | hdr = (struct iscsi_logout *) buf; |
2127 | reason_code = (hdr->flags & 0x7f); | 2113 | reason_code = (hdr->flags & 0x7f); |
2128 | hdr->cid = be16_to_cpu(hdr->cid); | ||
2129 | hdr->cmdsn = be32_to_cpu(hdr->cmdsn); | ||
2130 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | ||
2131 | 2114 | ||
2132 | if (tiqn) { | 2115 | if (tiqn) { |
2133 | spin_lock(&tiqn->logout_stats.lock); | 2116 | spin_lock(&tiqn->logout_stats.lock); |
@@ -2159,9 +2142,9 @@ static int iscsit_handle_logout_cmd( | |||
2159 | cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); | 2142 | cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); |
2160 | conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; | 2143 | conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; |
2161 | cmd->targ_xfer_tag = 0xFFFFFFFF; | 2144 | cmd->targ_xfer_tag = 0xFFFFFFFF; |
2162 | cmd->cmd_sn = hdr->cmdsn; | 2145 | cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); |
2163 | cmd->exp_stat_sn = hdr->exp_statsn; | 2146 | cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); |
2164 | cmd->logout_cid = hdr->cid; | 2147 | cmd->logout_cid = be16_to_cpu(hdr->cid); |
2165 | cmd->logout_reason = reason_code; | 2148 | cmd->logout_reason = reason_code; |
2166 | cmd->data_direction = DMA_NONE; | 2149 | cmd->data_direction = DMA_NONE; |
2167 | 2150 | ||
@@ -2171,7 +2154,7 @@ static int iscsit_handle_logout_cmd( | |||
2171 | */ | 2154 | */ |
2172 | if ((reason_code == ISCSI_LOGOUT_REASON_CLOSE_SESSION) || | 2155 | if ((reason_code == ISCSI_LOGOUT_REASON_CLOSE_SESSION) || |
2173 | ((reason_code == ISCSI_LOGOUT_REASON_CLOSE_CONNECTION) && | 2156 | ((reason_code == ISCSI_LOGOUT_REASON_CLOSE_CONNECTION) && |
2174 | (hdr->cid == conn->cid))) | 2157 | be16_to_cpu(hdr->cid) == conn->cid)) |
2175 | logout_remove = 1; | 2158 | logout_remove = 1; |
2176 | 2159 | ||
2177 | spin_lock_bh(&conn->cmd_lock); | 2160 | spin_lock_bh(&conn->cmd_lock); |
@@ -2179,7 +2162,7 @@ static int iscsit_handle_logout_cmd( | |||
2179 | spin_unlock_bh(&conn->cmd_lock); | 2162 | spin_unlock_bh(&conn->cmd_lock); |
2180 | 2163 | ||
2181 | if (reason_code != ISCSI_LOGOUT_REASON_RECOVERY) | 2164 | if (reason_code != ISCSI_LOGOUT_REASON_RECOVERY) |
2182 | iscsit_ack_from_expstatsn(conn, hdr->exp_statsn); | 2165 | iscsit_ack_from_expstatsn(conn, be32_to_cpu(hdr->exp_statsn)); |
2183 | 2166 | ||
2184 | /* | 2167 | /* |
2185 | * Immediate commands are executed, well, immediately. | 2168 | * Immediate commands are executed, well, immediately. |
@@ -2212,10 +2195,6 @@ static int iscsit_handle_snack( | |||
2212 | 2195 | ||
2213 | hdr = (struct iscsi_snack *) buf; | 2196 | hdr = (struct iscsi_snack *) buf; |
2214 | hdr->flags &= ~ISCSI_FLAG_CMD_FINAL; | 2197 | hdr->flags &= ~ISCSI_FLAG_CMD_FINAL; |
2215 | hdr->ttt = be32_to_cpu(hdr->ttt); | ||
2216 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | ||
2217 | hdr->begrun = be32_to_cpu(hdr->begrun); | ||
2218 | hdr->runlength = be32_to_cpu(hdr->runlength); | ||
2219 | 2198 | ||
2220 | pr_debug("Got ISCSI_INIT_SNACK, ITT: 0x%08x, ExpStatSN:" | 2199 | pr_debug("Got ISCSI_INIT_SNACK, ITT: 0x%08x, ExpStatSN:" |
2221 | " 0x%08x, Type: 0x%02x, BegRun: 0x%08x, RunLength: 0x%08x," | 2200 | " 0x%08x, Type: 0x%02x, BegRun: 0x%08x, RunLength: 0x%08x," |
@@ -2235,13 +2214,18 @@ static int iscsit_handle_snack( | |||
2235 | switch (hdr->flags & ISCSI_FLAG_SNACK_TYPE_MASK) { | 2214 | switch (hdr->flags & ISCSI_FLAG_SNACK_TYPE_MASK) { |
2236 | case 0: | 2215 | case 0: |
2237 | return iscsit_handle_recovery_datain_or_r2t(conn, buf, | 2216 | return iscsit_handle_recovery_datain_or_r2t(conn, buf, |
2238 | hdr->itt, hdr->ttt, hdr->begrun, hdr->runlength); | 2217 | hdr->itt, |
2218 | be32_to_cpu(hdr->ttt), | ||
2219 | be32_to_cpu(hdr->begrun), | ||
2220 | be32_to_cpu(hdr->runlength)); | ||
2239 | case ISCSI_FLAG_SNACK_TYPE_STATUS: | 2221 | case ISCSI_FLAG_SNACK_TYPE_STATUS: |
2240 | return iscsit_handle_status_snack(conn, hdr->itt, hdr->ttt, | 2222 | return iscsit_handle_status_snack(conn, hdr->itt, |
2241 | hdr->begrun, hdr->runlength); | 2223 | be32_to_cpu(hdr->ttt), |
2224 | be32_to_cpu(hdr->begrun), be32_to_cpu(hdr->runlength)); | ||
2242 | case ISCSI_FLAG_SNACK_TYPE_DATA_ACK: | 2225 | case ISCSI_FLAG_SNACK_TYPE_DATA_ACK: |
2243 | return iscsit_handle_data_ack(conn, hdr->ttt, hdr->begrun, | 2226 | return iscsit_handle_data_ack(conn, be32_to_cpu(hdr->ttt), |
2244 | hdr->runlength); | 2227 | be32_to_cpu(hdr->begrun), |
2228 | be32_to_cpu(hdr->runlength)); | ||
2245 | case ISCSI_FLAG_SNACK_TYPE_RDATA: | 2229 | case ISCSI_FLAG_SNACK_TYPE_RDATA: |
2246 | /* FIXME: Support R-Data SNACK */ | 2230 | /* FIXME: Support R-Data SNACK */ |
2247 | pr_err("R-Data SNACK Not Supported.\n"); | 2231 | pr_err("R-Data SNACK Not Supported.\n"); |
@@ -2529,11 +2513,16 @@ static int iscsit_send_data_in( | |||
2529 | put_unaligned_le64(0xFFFFFFFFFFFFFFFFULL, &hdr->lun); | 2513 | put_unaligned_le64(0xFFFFFFFFFFFFFFFFULL, &hdr->lun); |
2530 | 2514 | ||
2531 | hdr->itt = cmd->init_task_tag; | 2515 | hdr->itt = cmd->init_task_tag; |
2532 | hdr->ttt = (hdr->flags & ISCSI_FLAG_DATA_ACK) ? | 2516 | |
2533 | cpu_to_be32(cmd->targ_xfer_tag) : | 2517 | if (hdr->flags & ISCSI_FLAG_DATA_ACK) |
2534 | 0xFFFFFFFF; | 2518 | hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag); |
2535 | hdr->statsn = (set_statsn) ? cpu_to_be32(cmd->stat_sn) : | 2519 | else |
2536 | 0xFFFFFFFF; | 2520 | hdr->ttt = cpu_to_be32(0xFFFFFFFF); |
2521 | if (set_statsn) | ||
2522 | hdr->statsn = cpu_to_be32(cmd->stat_sn); | ||
2523 | else | ||
2524 | hdr->statsn = cpu_to_be32(0xFFFFFFFF); | ||
2525 | |||
2537 | hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); | 2526 | hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); |
2538 | hdr->max_cmdsn = cpu_to_be32(conn->sess->max_cmd_sn); | 2527 | hdr->max_cmdsn = cpu_to_be32(conn->sess->max_cmd_sn); |
2539 | hdr->datasn = cpu_to_be32(datain.data_sn); | 2528 | hdr->datasn = cpu_to_be32(datain.data_sn); |
@@ -3088,7 +3077,7 @@ static int iscsit_send_status( | |||
3088 | cmd->se_cmd.scsi_sense_length += sizeof (__be16); | 3077 | cmd->se_cmd.scsi_sense_length += sizeof (__be16); |
3089 | 3078 | ||
3090 | padding = -(cmd->se_cmd.scsi_sense_length) & 3; | 3079 | padding = -(cmd->se_cmd.scsi_sense_length) & 3; |
3091 | hton24(hdr->dlength, cmd->se_cmd.scsi_sense_length); | 3080 | hton24(hdr->dlength, (u32)cmd->se_cmd.scsi_sense_length); |
3092 | iov[iov_count].iov_base = cmd->sense_buffer; | 3081 | iov[iov_count].iov_base = cmd->sense_buffer; |
3093 | iov[iov_count++].iov_len = | 3082 | iov[iov_count++].iov_len = |
3094 | (cmd->se_cmd.scsi_sense_length + padding); | 3083 | (cmd->se_cmd.scsi_sense_length + padding); |
@@ -3418,7 +3407,7 @@ static int iscsit_send_reject( | |||
3418 | hdr->opcode = ISCSI_OP_REJECT; | 3407 | hdr->opcode = ISCSI_OP_REJECT; |
3419 | hdr->flags |= ISCSI_FLAG_CMD_FINAL; | 3408 | hdr->flags |= ISCSI_FLAG_CMD_FINAL; |
3420 | hton24(hdr->dlength, ISCSI_HDR_LEN); | 3409 | hton24(hdr->dlength, ISCSI_HDR_LEN); |
3421 | hdr->ffffffff = 0xffffffff; | 3410 | hdr->ffffffff = cpu_to_be32(0xffffffff); |
3422 | cmd->stat_sn = conn->stat_sn++; | 3411 | cmd->stat_sn = conn->stat_sn++; |
3423 | hdr->statsn = cpu_to_be32(cmd->stat_sn); | 3412 | hdr->statsn = cpu_to_be32(cmd->stat_sn); |
3424 | hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); | 3413 | hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); |
diff --git a/drivers/target/iscsi/iscsi_target_core.h b/drivers/target/iscsi/iscsi_target_core.h index 226fe62d4e61..ff3f482968c8 100644 --- a/drivers/target/iscsi/iscsi_target_core.h +++ b/drivers/target/iscsi/iscsi_target_core.h | |||
@@ -479,7 +479,6 @@ struct iscsi_cmd { | |||
479 | 479 | ||
480 | struct iscsi_tmr_req { | 480 | struct iscsi_tmr_req { |
481 | bool task_reassign:1; | 481 | bool task_reassign:1; |
482 | u32 ref_cmd_sn; | ||
483 | u32 exp_data_sn; | 482 | u32 exp_data_sn; |
484 | struct iscsi_cmd *ref_cmd; | 483 | struct iscsi_cmd *ref_cmd; |
485 | struct iscsi_conn_recovery *conn_recovery; | 484 | struct iscsi_conn_recovery *conn_recovery; |
diff --git a/drivers/target/iscsi/iscsi_target_erl0.c b/drivers/target/iscsi/iscsi_target_erl0.c index 0c37533ccbb5..8aacf611b86d 100644 --- a/drivers/target/iscsi/iscsi_target_erl0.c +++ b/drivers/target/iscsi/iscsi_target_erl0.c | |||
@@ -95,14 +95,15 @@ static int iscsit_dataout_within_command_recovery_check( | |||
95 | */ | 95 | */ |
96 | if (conn->sess->sess_ops->DataSequenceInOrder) { | 96 | if (conn->sess->sess_ops->DataSequenceInOrder) { |
97 | if ((cmd->cmd_flags & ICF_WITHIN_COMMAND_RECOVERY) && | 97 | if ((cmd->cmd_flags & ICF_WITHIN_COMMAND_RECOVERY) && |
98 | (cmd->write_data_done != hdr->offset)) | 98 | cmd->write_data_done != be32_to_cpu(hdr->offset)) |
99 | goto dump; | 99 | goto dump; |
100 | 100 | ||
101 | cmd->cmd_flags &= ~ICF_WITHIN_COMMAND_RECOVERY; | 101 | cmd->cmd_flags &= ~ICF_WITHIN_COMMAND_RECOVERY; |
102 | } else { | 102 | } else { |
103 | struct iscsi_seq *seq; | 103 | struct iscsi_seq *seq; |
104 | 104 | ||
105 | seq = iscsit_get_seq_holder(cmd, hdr->offset, payload_length); | 105 | seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), |
106 | payload_length); | ||
106 | if (!seq) | 107 | if (!seq) |
107 | return DATAOUT_CANNOT_RECOVER; | 108 | return DATAOUT_CANNOT_RECOVER; |
108 | /* | 109 | /* |
@@ -111,15 +112,15 @@ static int iscsit_dataout_within_command_recovery_check( | |||
111 | cmd->seq_ptr = seq; | 112 | cmd->seq_ptr = seq; |
112 | 113 | ||
113 | if (conn->sess->sess_ops->DataPDUInOrder) { | 114 | if (conn->sess->sess_ops->DataPDUInOrder) { |
114 | if ((seq->status == | 115 | if (seq->status == |
115 | DATAOUT_SEQUENCE_WITHIN_COMMAND_RECOVERY) && | 116 | DATAOUT_SEQUENCE_WITHIN_COMMAND_RECOVERY && |
116 | ((seq->offset != hdr->offset) || | 117 | (seq->offset != be32_to_cpu(hdr->offset) || |
117 | (seq->data_sn != hdr->datasn))) | 118 | seq->data_sn != be32_to_cpu(hdr->datasn))) |
118 | goto dump; | 119 | goto dump; |
119 | } else { | 120 | } else { |
120 | if ((seq->status == | 121 | if (seq->status == |
121 | DATAOUT_SEQUENCE_WITHIN_COMMAND_RECOVERY) && | 122 | DATAOUT_SEQUENCE_WITHIN_COMMAND_RECOVERY && |
122 | (seq->data_sn != hdr->datasn)) | 123 | seq->data_sn != be32_to_cpu(hdr->datasn)) |
123 | goto dump; | 124 | goto dump; |
124 | } | 125 | } |
125 | 126 | ||
@@ -148,12 +149,12 @@ static int iscsit_dataout_check_unsolicited_sequence( | |||
148 | u32 payload_length = ntoh24(hdr->dlength); | 149 | u32 payload_length = ntoh24(hdr->dlength); |
149 | 150 | ||
150 | 151 | ||
151 | if ((hdr->offset < cmd->seq_start_offset) || | 152 | if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || |
152 | ((hdr->offset + payload_length) > cmd->seq_end_offset)) { | 153 | ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { |
153 | pr_err("Command ITT: 0x%08x with Offset: %u," | 154 | pr_err("Command ITT: 0x%08x with Offset: %u," |
154 | " Length: %u outside of Unsolicited Sequence %u:%u while" | 155 | " Length: %u outside of Unsolicited Sequence %u:%u while" |
155 | " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, | 156 | " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, |
156 | hdr->offset, payload_length, cmd->seq_start_offset, | 157 | be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, |
157 | cmd->seq_end_offset); | 158 | cmd->seq_end_offset); |
158 | return DATAOUT_CANNOT_RECOVER; | 159 | return DATAOUT_CANNOT_RECOVER; |
159 | } | 160 | } |
@@ -236,12 +237,12 @@ static int iscsit_dataout_check_sequence( | |||
236 | * fullfilling an Recovery R2T, it's best to just dump the | 237 | * fullfilling an Recovery R2T, it's best to just dump the |
237 | * payload here, instead of erroring out. | 238 | * payload here, instead of erroring out. |
238 | */ | 239 | */ |
239 | if ((hdr->offset < cmd->seq_start_offset) || | 240 | if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || |
240 | ((hdr->offset + payload_length) > cmd->seq_end_offset)) { | 241 | ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { |
241 | pr_err("Command ITT: 0x%08x with Offset: %u," | 242 | pr_err("Command ITT: 0x%08x with Offset: %u," |
242 | " Length: %u outside of Sequence %u:%u while" | 243 | " Length: %u outside of Sequence %u:%u while" |
243 | " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, | 244 | " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, |
244 | hdr->offset, payload_length, cmd->seq_start_offset, | 245 | be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, |
245 | cmd->seq_end_offset); | 246 | cmd->seq_end_offset); |
246 | 247 | ||
247 | if (iscsit_dump_data_payload(conn, payload_length, 1) < 0) | 248 | if (iscsit_dump_data_payload(conn, payload_length, 1) < 0) |
@@ -251,7 +252,8 @@ static int iscsit_dataout_check_sequence( | |||
251 | 252 | ||
252 | next_burst_len = (cmd->next_burst_len + payload_length); | 253 | next_burst_len = (cmd->next_burst_len + payload_length); |
253 | } else { | 254 | } else { |
254 | seq = iscsit_get_seq_holder(cmd, hdr->offset, payload_length); | 255 | seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), |
256 | payload_length); | ||
255 | if (!seq) | 257 | if (!seq) |
256 | return DATAOUT_CANNOT_RECOVER; | 258 | return DATAOUT_CANNOT_RECOVER; |
257 | /* | 259 | /* |
@@ -366,16 +368,16 @@ static int iscsit_dataout_check_datasn( | |||
366 | data_sn = seq->data_sn; | 368 | data_sn = seq->data_sn; |
367 | } | 369 | } |
368 | 370 | ||
369 | if (hdr->datasn > data_sn) { | 371 | if (be32_to_cpu(hdr->datasn) > data_sn) { |
370 | pr_err("Command ITT: 0x%08x, received DataSN: 0x%08x" | 372 | pr_err("Command ITT: 0x%08x, received DataSN: 0x%08x" |
371 | " higher than expected 0x%08x.\n", cmd->init_task_tag, | 373 | " higher than expected 0x%08x.\n", cmd->init_task_tag, |
372 | hdr->datasn, data_sn); | 374 | be32_to_cpu(hdr->datasn), data_sn); |
373 | recovery = 1; | 375 | recovery = 1; |
374 | goto recover; | 376 | goto recover; |
375 | } else if (hdr->datasn < data_sn) { | 377 | } else if (be32_to_cpu(hdr->datasn) < data_sn) { |
376 | pr_err("Command ITT: 0x%08x, received DataSN: 0x%08x" | 378 | pr_err("Command ITT: 0x%08x, received DataSN: 0x%08x" |
377 | " lower than expected 0x%08x, discarding payload.\n", | 379 | " lower than expected 0x%08x, discarding payload.\n", |
378 | cmd->init_task_tag, hdr->datasn, data_sn); | 380 | cmd->init_task_tag, be32_to_cpu(hdr->datasn), data_sn); |
379 | dump = 1; | 381 | dump = 1; |
380 | goto dump; | 382 | goto dump; |
381 | } | 383 | } |
@@ -415,26 +417,27 @@ static int iscsit_dataout_pre_datapduinorder_yes( | |||
415 | * error has occured and fail the connection. | 417 | * error has occured and fail the connection. |
416 | */ | 418 | */ |
417 | if (conn->sess->sess_ops->DataSequenceInOrder) { | 419 | if (conn->sess->sess_ops->DataSequenceInOrder) { |
418 | if (hdr->offset != cmd->write_data_done) { | 420 | if (be32_to_cpu(hdr->offset) != cmd->write_data_done) { |
419 | pr_err("Command ITT: 0x%08x, received offset" | 421 | pr_err("Command ITT: 0x%08x, received offset" |
420 | " %u different than expected %u.\n", cmd->init_task_tag, | 422 | " %u different than expected %u.\n", cmd->init_task_tag, |
421 | hdr->offset, cmd->write_data_done); | 423 | be32_to_cpu(hdr->offset), cmd->write_data_done); |
422 | recovery = 1; | 424 | recovery = 1; |
423 | goto recover; | 425 | goto recover; |
424 | } | 426 | } |
425 | } else { | 427 | } else { |
426 | struct iscsi_seq *seq = cmd->seq_ptr; | 428 | struct iscsi_seq *seq = cmd->seq_ptr; |
427 | 429 | ||
428 | if (hdr->offset > seq->offset) { | 430 | if (be32_to_cpu(hdr->offset) > seq->offset) { |
429 | pr_err("Command ITT: 0x%08x, received offset" | 431 | pr_err("Command ITT: 0x%08x, received offset" |
430 | " %u greater than expected %u.\n", cmd->init_task_tag, | 432 | " %u greater than expected %u.\n", cmd->init_task_tag, |
431 | hdr->offset, seq->offset); | 433 | be32_to_cpu(hdr->offset), seq->offset); |
432 | recovery = 1; | 434 | recovery = 1; |
433 | goto recover; | 435 | goto recover; |
434 | } else if (hdr->offset < seq->offset) { | 436 | } else if (be32_to_cpu(hdr->offset) < seq->offset) { |
435 | pr_err("Command ITT: 0x%08x, received offset" | 437 | pr_err("Command ITT: 0x%08x, received offset" |
436 | " %u less than expected %u, discarding payload.\n", | 438 | " %u less than expected %u, discarding payload.\n", |
437 | cmd->init_task_tag, hdr->offset, seq->offset); | 439 | cmd->init_task_tag, be32_to_cpu(hdr->offset), |
440 | seq->offset); | ||
438 | dump = 1; | 441 | dump = 1; |
439 | goto dump; | 442 | goto dump; |
440 | } | 443 | } |
@@ -453,7 +456,7 @@ dump: | |||
453 | return DATAOUT_CANNOT_RECOVER; | 456 | return DATAOUT_CANNOT_RECOVER; |
454 | 457 | ||
455 | return (recovery) ? iscsit_recover_dataout_sequence(cmd, | 458 | return (recovery) ? iscsit_recover_dataout_sequence(cmd, |
456 | hdr->offset, payload_length) : | 459 | be32_to_cpu(hdr->offset), payload_length) : |
457 | (dump) ? DATAOUT_WITHIN_COMMAND_RECOVERY : DATAOUT_NORMAL; | 460 | (dump) ? DATAOUT_WITHIN_COMMAND_RECOVERY : DATAOUT_NORMAL; |
458 | } | 461 | } |
459 | 462 | ||
@@ -465,7 +468,8 @@ static int iscsit_dataout_pre_datapduinorder_no( | |||
465 | struct iscsi_data *hdr = (struct iscsi_data *) buf; | 468 | struct iscsi_data *hdr = (struct iscsi_data *) buf; |
466 | u32 payload_length = ntoh24(hdr->dlength); | 469 | u32 payload_length = ntoh24(hdr->dlength); |
467 | 470 | ||
468 | pdu = iscsit_get_pdu_holder(cmd, hdr->offset, payload_length); | 471 | pdu = iscsit_get_pdu_holder(cmd, be32_to_cpu(hdr->offset), |
472 | payload_length); | ||
469 | if (!pdu) | 473 | if (!pdu) |
470 | return DATAOUT_CANNOT_RECOVER; | 474 | return DATAOUT_CANNOT_RECOVER; |
471 | 475 | ||
@@ -479,7 +483,7 @@ static int iscsit_dataout_pre_datapduinorder_no( | |||
479 | case ISCSI_PDU_RECEIVED_OK: | 483 | case ISCSI_PDU_RECEIVED_OK: |
480 | pr_err("Command ITT: 0x%08x received already gotten" | 484 | pr_err("Command ITT: 0x%08x received already gotten" |
481 | " Offset: %u, Length: %u\n", cmd->init_task_tag, | 485 | " Offset: %u, Length: %u\n", cmd->init_task_tag, |
482 | hdr->offset, payload_length); | 486 | be32_to_cpu(hdr->offset), payload_length); |
483 | return iscsit_dump_data_payload(cmd->conn, payload_length, 1); | 487 | return iscsit_dump_data_payload(cmd->conn, payload_length, 1); |
484 | default: | 488 | default: |
485 | return DATAOUT_CANNOT_RECOVER; | 489 | return DATAOUT_CANNOT_RECOVER; |
@@ -553,7 +557,7 @@ static int iscsit_dataout_post_crc_passed( | |||
553 | if (cmd->unsolicited_data) { | 557 | if (cmd->unsolicited_data) { |
554 | if ((cmd->first_burst_len + payload_length) == | 558 | if ((cmd->first_burst_len + payload_length) == |
555 | conn->sess->sess_ops->FirstBurstLength) { | 559 | conn->sess->sess_ops->FirstBurstLength) { |
556 | if (iscsit_dataout_update_r2t(cmd, hdr->offset, | 560 | if (iscsit_dataout_update_r2t(cmd, be32_to_cpu(hdr->offset), |
557 | payload_length) < 0) | 561 | payload_length) < 0) |
558 | return DATAOUT_CANNOT_RECOVER; | 562 | return DATAOUT_CANNOT_RECOVER; |
559 | send_r2t = 1; | 563 | send_r2t = 1; |
@@ -561,7 +565,8 @@ static int iscsit_dataout_post_crc_passed( | |||
561 | 565 | ||
562 | if (!conn->sess->sess_ops->DataPDUInOrder) { | 566 | if (!conn->sess->sess_ops->DataPDUInOrder) { |
563 | ret = iscsit_dataout_update_datapduinorder_no(cmd, | 567 | ret = iscsit_dataout_update_datapduinorder_no(cmd, |
564 | hdr->datasn, (hdr->flags & ISCSI_FLAG_CMD_FINAL)); | 568 | be32_to_cpu(hdr->datasn), |
569 | (hdr->flags & ISCSI_FLAG_CMD_FINAL)); | ||
565 | if (ret == DATAOUT_CANNOT_RECOVER) | 570 | if (ret == DATAOUT_CANNOT_RECOVER) |
566 | return ret; | 571 | return ret; |
567 | } | 572 | } |
@@ -586,7 +591,8 @@ static int iscsit_dataout_post_crc_passed( | |||
586 | if (conn->sess->sess_ops->DataSequenceInOrder) { | 591 | if (conn->sess->sess_ops->DataSequenceInOrder) { |
587 | if ((cmd->next_burst_len + payload_length) == | 592 | if ((cmd->next_burst_len + payload_length) == |
588 | conn->sess->sess_ops->MaxBurstLength) { | 593 | conn->sess->sess_ops->MaxBurstLength) { |
589 | if (iscsit_dataout_update_r2t(cmd, hdr->offset, | 594 | if (iscsit_dataout_update_r2t(cmd, |
595 | be32_to_cpu(hdr->offset), | ||
590 | payload_length) < 0) | 596 | payload_length) < 0) |
591 | return DATAOUT_CANNOT_RECOVER; | 597 | return DATAOUT_CANNOT_RECOVER; |
592 | send_r2t = 1; | 598 | send_r2t = 1; |
@@ -594,7 +600,7 @@ static int iscsit_dataout_post_crc_passed( | |||
594 | 600 | ||
595 | if (!conn->sess->sess_ops->DataPDUInOrder) { | 601 | if (!conn->sess->sess_ops->DataPDUInOrder) { |
596 | ret = iscsit_dataout_update_datapduinorder_no( | 602 | ret = iscsit_dataout_update_datapduinorder_no( |
597 | cmd, hdr->datasn, | 603 | cmd, be32_to_cpu(hdr->datasn), |
598 | (hdr->flags & ISCSI_FLAG_CMD_FINAL)); | 604 | (hdr->flags & ISCSI_FLAG_CMD_FINAL)); |
599 | if (ret == DATAOUT_CANNOT_RECOVER) | 605 | if (ret == DATAOUT_CANNOT_RECOVER) |
600 | return ret; | 606 | return ret; |
@@ -610,7 +616,8 @@ static int iscsit_dataout_post_crc_passed( | |||
610 | 616 | ||
611 | if ((seq->next_burst_len + payload_length) == | 617 | if ((seq->next_burst_len + payload_length) == |
612 | seq->xfer_len) { | 618 | seq->xfer_len) { |
613 | if (iscsit_dataout_update_r2t(cmd, hdr->offset, | 619 | if (iscsit_dataout_update_r2t(cmd, |
620 | be32_to_cpu(hdr->offset), | ||
614 | payload_length) < 0) | 621 | payload_length) < 0) |
615 | return DATAOUT_CANNOT_RECOVER; | 622 | return DATAOUT_CANNOT_RECOVER; |
616 | send_r2t = 1; | 623 | send_r2t = 1; |
@@ -618,7 +625,7 @@ static int iscsit_dataout_post_crc_passed( | |||
618 | 625 | ||
619 | if (!conn->sess->sess_ops->DataPDUInOrder) { | 626 | if (!conn->sess->sess_ops->DataPDUInOrder) { |
620 | ret = iscsit_dataout_update_datapduinorder_no( | 627 | ret = iscsit_dataout_update_datapduinorder_no( |
621 | cmd, hdr->datasn, | 628 | cmd, be32_to_cpu(hdr->datasn), |
622 | (hdr->flags & ISCSI_FLAG_CMD_FINAL)); | 629 | (hdr->flags & ISCSI_FLAG_CMD_FINAL)); |
623 | if (ret == DATAOUT_CANNOT_RECOVER) | 630 | if (ret == DATAOUT_CANNOT_RECOVER) |
624 | return ret; | 631 | return ret; |
@@ -678,7 +685,8 @@ static int iscsit_dataout_post_crc_failed( | |||
678 | } | 685 | } |
679 | 686 | ||
680 | recover: | 687 | recover: |
681 | return iscsit_recover_dataout_sequence(cmd, hdr->offset, payload_length); | 688 | return iscsit_recover_dataout_sequence(cmd, be32_to_cpu(hdr->offset), |
689 | payload_length); | ||
682 | } | 690 | } |
683 | 691 | ||
684 | /* | 692 | /* |
diff --git a/drivers/target/iscsi/iscsi_target_erl2.c b/drivers/target/iscsi/iscsi_target_erl2.c index 660694544128..17d8c20094fd 100644 --- a/drivers/target/iscsi/iscsi_target_erl2.c +++ b/drivers/target/iscsi/iscsi_target_erl2.c | |||
@@ -36,7 +36,7 @@ | |||
36 | */ | 36 | */ |
37 | void iscsit_create_conn_recovery_datain_values( | 37 | void iscsit_create_conn_recovery_datain_values( |
38 | struct iscsi_cmd *cmd, | 38 | struct iscsi_cmd *cmd, |
39 | u32 exp_data_sn) | 39 | __be32 exp_data_sn) |
40 | { | 40 | { |
41 | u32 data_sn = 0; | 41 | u32 data_sn = 0; |
42 | struct iscsi_conn *conn = cmd->conn; | 42 | struct iscsi_conn *conn = cmd->conn; |
@@ -44,7 +44,7 @@ void iscsit_create_conn_recovery_datain_values( | |||
44 | cmd->next_burst_len = 0; | 44 | cmd->next_burst_len = 0; |
45 | cmd->read_data_done = 0; | 45 | cmd->read_data_done = 0; |
46 | 46 | ||
47 | while (exp_data_sn > data_sn) { | 47 | while (be32_to_cpu(exp_data_sn) > data_sn) { |
48 | if ((cmd->next_burst_len + | 48 | if ((cmd->next_burst_len + |
49 | conn->conn_ops->MaxRecvDataSegmentLength) < | 49 | conn->conn_ops->MaxRecvDataSegmentLength) < |
50 | conn->sess->sess_ops->MaxBurstLength) { | 50 | conn->sess->sess_ops->MaxBurstLength) { |
diff --git a/drivers/target/iscsi/iscsi_target_erl2.h b/drivers/target/iscsi/iscsi_target_erl2.h index 22f8d24780a6..63f2501f3fe0 100644 --- a/drivers/target/iscsi/iscsi_target_erl2.h +++ b/drivers/target/iscsi/iscsi_target_erl2.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef ISCSI_TARGET_ERL2_H | 1 | #ifndef ISCSI_TARGET_ERL2_H |
2 | #define ISCSI_TARGET_ERL2_H | 2 | #define ISCSI_TARGET_ERL2_H |
3 | 3 | ||
4 | extern void iscsit_create_conn_recovery_datain_values(struct iscsi_cmd *, u32); | 4 | extern void iscsit_create_conn_recovery_datain_values(struct iscsi_cmd *, __be32); |
5 | extern void iscsit_create_conn_recovery_dataout_values(struct iscsi_cmd *); | 5 | extern void iscsit_create_conn_recovery_dataout_values(struct iscsi_cmd *); |
6 | extern struct iscsi_conn_recovery *iscsit_get_inactive_connection_recovery_entry( | 6 | extern struct iscsi_conn_recovery *iscsit_get_inactive_connection_recovery_entry( |
7 | struct iscsi_session *, u16); | 7 | struct iscsi_session *, u16); |
diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 4c83d7a39bf3..cdc8a10939c3 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c | |||
@@ -192,10 +192,10 @@ int iscsi_check_for_session_reinstatement(struct iscsi_conn *conn) | |||
192 | static void iscsi_login_set_conn_values( | 192 | static void iscsi_login_set_conn_values( |
193 | struct iscsi_session *sess, | 193 | struct iscsi_session *sess, |
194 | struct iscsi_conn *conn, | 194 | struct iscsi_conn *conn, |
195 | u16 cid) | 195 | __be16 cid) |
196 | { | 196 | { |
197 | conn->sess = sess; | 197 | conn->sess = sess; |
198 | conn->cid = cid; | 198 | conn->cid = be16_to_cpu(cid); |
199 | /* | 199 | /* |
200 | * Generate a random Status sequence number (statsn) for the new | 200 | * Generate a random Status sequence number (statsn) for the new |
201 | * iSCSI connection. | 201 | * iSCSI connection. |
@@ -230,7 +230,7 @@ static int iscsi_login_zero_tsih_s1( | |||
230 | iscsi_login_set_conn_values(sess, conn, pdu->cid); | 230 | iscsi_login_set_conn_values(sess, conn, pdu->cid); |
231 | sess->init_task_tag = pdu->itt; | 231 | sess->init_task_tag = pdu->itt; |
232 | memcpy(&sess->isid, pdu->isid, 6); | 232 | memcpy(&sess->isid, pdu->isid, 6); |
233 | sess->exp_cmd_sn = pdu->cmdsn; | 233 | sess->exp_cmd_sn = be32_to_cpu(pdu->cmdsn); |
234 | INIT_LIST_HEAD(&sess->sess_conn_list); | 234 | INIT_LIST_HEAD(&sess->sess_conn_list); |
235 | INIT_LIST_HEAD(&sess->sess_ooo_cmdsn_list); | 235 | INIT_LIST_HEAD(&sess->sess_ooo_cmdsn_list); |
236 | INIT_LIST_HEAD(&sess->cr_active_list); | 236 | INIT_LIST_HEAD(&sess->cr_active_list); |
@@ -271,7 +271,7 @@ static int iscsi_login_zero_tsih_s1( | |||
271 | * The FFP CmdSN window values will be allocated from the TPG's | 271 | * The FFP CmdSN window values will be allocated from the TPG's |
272 | * Initiator Node's ACL once the login has been successfully completed. | 272 | * Initiator Node's ACL once the login has been successfully completed. |
273 | */ | 273 | */ |
274 | sess->max_cmd_sn = pdu->cmdsn; | 274 | sess->max_cmd_sn = be32_to_cpu(pdu->cmdsn); |
275 | 275 | ||
276 | sess->sess_ops = kzalloc(sizeof(struct iscsi_sess_ops), GFP_KERNEL); | 276 | sess->sess_ops = kzalloc(sizeof(struct iscsi_sess_ops), GFP_KERNEL); |
277 | if (!sess->sess_ops) { | 277 | if (!sess->sess_ops) { |
@@ -449,7 +449,7 @@ static int iscsi_login_non_zero_tsih_s2( | |||
449 | (sess_p->time2retain_timer_flags & ISCSI_TF_EXPIRED)) | 449 | (sess_p->time2retain_timer_flags & ISCSI_TF_EXPIRED)) |
450 | continue; | 450 | continue; |
451 | if (!memcmp(sess_p->isid, pdu->isid, 6) && | 451 | if (!memcmp(sess_p->isid, pdu->isid, 6) && |
452 | (sess_p->tsih == pdu->tsih)) { | 452 | (sess_p->tsih == be16_to_cpu(pdu->tsih))) { |
453 | iscsit_inc_session_usage_count(sess_p); | 453 | iscsit_inc_session_usage_count(sess_p); |
454 | iscsit_stop_time2retain_timer(sess_p); | 454 | iscsit_stop_time2retain_timer(sess_p); |
455 | sess = sess_p; | 455 | sess = sess_p; |
@@ -951,10 +951,6 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) | |||
951 | } | 951 | } |
952 | 952 | ||
953 | pdu = (struct iscsi_login_req *) buffer; | 953 | pdu = (struct iscsi_login_req *) buffer; |
954 | pdu->cid = be16_to_cpu(pdu->cid); | ||
955 | pdu->tsih = be16_to_cpu(pdu->tsih); | ||
956 | pdu->cmdsn = be32_to_cpu(pdu->cmdsn); | ||
957 | pdu->exp_statsn = be32_to_cpu(pdu->exp_statsn); | ||
958 | 954 | ||
959 | /* | 955 | /* |
960 | * Used by iscsit_tx_login_rsp() for Login Resonses PDUs | 956 | * Used by iscsit_tx_login_rsp() for Login Resonses PDUs |
diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c index 33ed9b5209cd..e9053a04f24c 100644 --- a/drivers/target/iscsi/iscsi_target_nego.c +++ b/drivers/target/iscsi/iscsi_target_nego.c | |||
@@ -360,11 +360,9 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log | |||
360 | return -1; | 360 | return -1; |
361 | 361 | ||
362 | login->rsp_length = 0; | 362 | login->rsp_length = 0; |
363 | login_rsp->tsih = be16_to_cpu(login_rsp->tsih); | ||
364 | login_rsp->statsn = be32_to_cpu(login_rsp->statsn); | ||
365 | mutex_lock(&sess->cmdsn_mutex); | 363 | mutex_lock(&sess->cmdsn_mutex); |
366 | login_rsp->exp_cmdsn = be32_to_cpu(sess->exp_cmd_sn); | 364 | login_rsp->exp_cmdsn = cpu_to_be32(sess->exp_cmd_sn); |
367 | login_rsp->max_cmdsn = be32_to_cpu(sess->max_cmd_sn); | 365 | login_rsp->max_cmdsn = cpu_to_be32(sess->max_cmd_sn); |
368 | mutex_unlock(&sess->cmdsn_mutex); | 366 | mutex_unlock(&sess->cmdsn_mutex); |
369 | 367 | ||
370 | return 0; | 368 | return 0; |
@@ -380,10 +378,6 @@ static int iscsi_target_do_rx_login_io(struct iscsi_conn *conn, struct iscsi_log | |||
380 | 378 | ||
381 | login_req = (struct iscsi_login_req *) login->req; | 379 | login_req = (struct iscsi_login_req *) login->req; |
382 | payload_length = ntoh24(login_req->dlength); | 380 | payload_length = ntoh24(login_req->dlength); |
383 | login_req->tsih = be16_to_cpu(login_req->tsih); | ||
384 | login_req->cid = be16_to_cpu(login_req->cid); | ||
385 | login_req->cmdsn = be32_to_cpu(login_req->cmdsn); | ||
386 | login_req->exp_statsn = be32_to_cpu(login_req->exp_statsn); | ||
387 | 381 | ||
388 | pr_debug("Got Login Command, Flags 0x%02x, ITT: 0x%08x," | 382 | pr_debug("Got Login Command, Flags 0x%02x, ITT: 0x%08x," |
389 | " CmdSN: 0x%08x, ExpStatSN: 0x%08x, CID: %hu, Length: %u\n", | 383 | " CmdSN: 0x%08x, ExpStatSN: 0x%08x, CID: %hu, Length: %u\n", |
@@ -760,11 +754,11 @@ static int iscsi_target_locate_portal( | |||
760 | login->version_min = login_req->min_version; | 754 | login->version_min = login_req->min_version; |
761 | login->version_max = login_req->max_version; | 755 | login->version_max = login_req->max_version; |
762 | memcpy(login->isid, login_req->isid, 6); | 756 | memcpy(login->isid, login_req->isid, 6); |
763 | login->cmd_sn = login_req->cmdsn; | 757 | login->cmd_sn = be32_to_cpu(login_req->cmdsn); |
764 | login->init_task_tag = login_req->itt; | 758 | login->init_task_tag = login_req->itt; |
765 | login->initial_exp_statsn = login_req->exp_statsn; | 759 | login->initial_exp_statsn = be32_to_cpu(login_req->exp_statsn); |
766 | login->cid = login_req->cid; | 760 | login->cid = be16_to_cpu(login_req->cid); |
767 | login->tsih = login_req->tsih; | 761 | login->tsih = be16_to_cpu(login_req->tsih); |
768 | 762 | ||
769 | if (iscsi_target_get_initial_payload(conn, login) < 0) | 763 | if (iscsi_target_get_initial_payload(conn, login) < 0) |
770 | return -1; | 764 | return -1; |
diff --git a/drivers/target/iscsi/iscsi_target_tmr.c b/drivers/target/iscsi/iscsi_target_tmr.c index 925f829a3704..4a99820d063b 100644 --- a/drivers/target/iscsi/iscsi_target_tmr.c +++ b/drivers/target/iscsi/iscsi_target_tmr.c | |||
@@ -50,11 +50,11 @@ u8 iscsit_tmr_abort_task( | |||
50 | if (!ref_cmd) { | 50 | if (!ref_cmd) { |
51 | pr_err("Unable to locate RefTaskTag: 0x%08x on CID:" | 51 | pr_err("Unable to locate RefTaskTag: 0x%08x on CID:" |
52 | " %hu.\n", hdr->rtt, conn->cid); | 52 | " %hu.\n", hdr->rtt, conn->cid); |
53 | return ((hdr->refcmdsn >= conn->sess->exp_cmd_sn) && | 53 | return (be32_to_cpu(hdr->refcmdsn) >= conn->sess->exp_cmd_sn && |
54 | (hdr->refcmdsn <= conn->sess->max_cmd_sn)) ? | 54 | be32_to_cpu(hdr->refcmdsn) <= conn->sess->max_cmd_sn) ? |
55 | ISCSI_TMF_RSP_COMPLETE : ISCSI_TMF_RSP_NO_TASK; | 55 | ISCSI_TMF_RSP_COMPLETE : ISCSI_TMF_RSP_NO_TASK; |
56 | } | 56 | } |
57 | if (ref_cmd->cmd_sn != hdr->refcmdsn) { | 57 | if (ref_cmd->cmd_sn != be32_to_cpu(hdr->refcmdsn)) { |
58 | pr_err("RefCmdSN 0x%08x does not equal" | 58 | pr_err("RefCmdSN 0x%08x does not equal" |
59 | " task's CmdSN 0x%08x. Rejecting ABORT_TASK.\n", | 59 | " task's CmdSN 0x%08x. Rejecting ABORT_TASK.\n", |
60 | hdr->refcmdsn, ref_cmd->cmd_sn); | 60 | hdr->refcmdsn, ref_cmd->cmd_sn); |
@@ -63,8 +63,7 @@ u8 iscsit_tmr_abort_task( | |||
63 | 63 | ||
64 | se_tmr->ref_task_tag = (__force u32)hdr->rtt; | 64 | se_tmr->ref_task_tag = (__force u32)hdr->rtt; |
65 | tmr_req->ref_cmd = ref_cmd; | 65 | tmr_req->ref_cmd = ref_cmd; |
66 | tmr_req->ref_cmd_sn = hdr->refcmdsn; | 66 | tmr_req->exp_data_sn = be32_to_cpu(hdr->exp_datasn); |
67 | tmr_req->exp_data_sn = hdr->exp_datasn; | ||
68 | 67 | ||
69 | return ISCSI_TMF_RSP_COMPLETE; | 68 | return ISCSI_TMF_RSP_COMPLETE; |
70 | } | 69 | } |
@@ -173,8 +172,7 @@ u8 iscsit_tmr_task_reassign( | |||
173 | 172 | ||
174 | se_tmr->ref_task_tag = (__force u32)hdr->rtt; | 173 | se_tmr->ref_task_tag = (__force u32)hdr->rtt; |
175 | tmr_req->ref_cmd = ref_cmd; | 174 | tmr_req->ref_cmd = ref_cmd; |
176 | tmr_req->ref_cmd_sn = hdr->refcmdsn; | 175 | tmr_req->exp_data_sn = be32_to_cpu(hdr->exp_datasn); |
177 | tmr_req->exp_data_sn = hdr->exp_datasn; | ||
178 | tmr_req->conn_recovery = cr; | 176 | tmr_req->conn_recovery = cr; |
179 | tmr_req->task_reassign = 1; | 177 | tmr_req->task_reassign = 1; |
180 | /* | 178 | /* |
diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c index 22bec9e899c0..afd98ccd40ae 100644 --- a/drivers/target/iscsi/iscsi_target_util.c +++ b/drivers/target/iscsi/iscsi_target_util.c | |||
@@ -274,14 +274,14 @@ static inline int iscsit_check_received_cmdsn(struct iscsi_session *sess, u32 cm | |||
274 | int iscsit_sequence_cmd( | 274 | int iscsit_sequence_cmd( |
275 | struct iscsi_conn *conn, | 275 | struct iscsi_conn *conn, |
276 | struct iscsi_cmd *cmd, | 276 | struct iscsi_cmd *cmd, |
277 | u32 cmdsn) | 277 | __be32 cmdsn) |
278 | { | 278 | { |
279 | int ret; | 279 | int ret; |
280 | int cmdsn_ret; | 280 | int cmdsn_ret; |
281 | 281 | ||
282 | mutex_lock(&conn->sess->cmdsn_mutex); | 282 | mutex_lock(&conn->sess->cmdsn_mutex); |
283 | 283 | ||
284 | cmdsn_ret = iscsit_check_received_cmdsn(conn->sess, cmdsn); | 284 | cmdsn_ret = iscsit_check_received_cmdsn(conn->sess, be32_to_cpu(cmdsn)); |
285 | switch (cmdsn_ret) { | 285 | switch (cmdsn_ret) { |
286 | case CMDSN_NORMAL_OPERATION: | 286 | case CMDSN_NORMAL_OPERATION: |
287 | ret = iscsit_execute_cmd(cmd, 0); | 287 | ret = iscsit_execute_cmd(cmd, 0); |
@@ -289,7 +289,7 @@ int iscsit_sequence_cmd( | |||
289 | iscsit_execute_ooo_cmdsns(conn->sess); | 289 | iscsit_execute_ooo_cmdsns(conn->sess); |
290 | break; | 290 | break; |
291 | case CMDSN_HIGHER_THAN_EXP: | 291 | case CMDSN_HIGHER_THAN_EXP: |
292 | ret = iscsit_handle_ooo_cmdsn(conn->sess, cmd, cmdsn); | 292 | ret = iscsit_handle_ooo_cmdsn(conn->sess, cmd, be32_to_cpu(cmdsn)); |
293 | break; | 293 | break; |
294 | case CMDSN_LOWER_THAN_EXP: | 294 | case CMDSN_LOWER_THAN_EXP: |
295 | cmd->i_state = ISTATE_REMOVE; | 295 | cmd->i_state = ISTATE_REMOVE; |
diff --git a/drivers/target/iscsi/iscsi_target_util.h b/drivers/target/iscsi/iscsi_target_util.h index 09e2f9f563a7..44054bd35437 100644 --- a/drivers/target/iscsi/iscsi_target_util.h +++ b/drivers/target/iscsi/iscsi_target_util.h | |||
@@ -12,7 +12,7 @@ extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t); | |||
12 | extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32); | 12 | extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32); |
13 | extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *); | 13 | extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *); |
14 | extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32); | 14 | extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32); |
15 | int iscsit_sequence_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, u32 cmdsn); | 15 | int iscsit_sequence_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, __be32 cmdsn); |
16 | extern int iscsit_check_unsolicited_dataout(struct iscsi_cmd *, unsigned char *); | 16 | extern int iscsit_check_unsolicited_dataout(struct iscsi_cmd *, unsigned char *); |
17 | extern struct iscsi_cmd *iscsit_find_cmd_from_itt(struct iscsi_conn *, itt_t); | 17 | extern struct iscsi_cmd *iscsit_find_cmd_from_itt(struct iscsi_conn *, itt_t); |
18 | extern struct iscsi_cmd *iscsit_find_cmd_from_itt_or_dump(struct iscsi_conn *, | 18 | extern struct iscsi_cmd *iscsit_find_cmd_from_itt_or_dump(struct iscsi_conn *, |