aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi/iscsi_proto.h
diff options
context:
space:
mode:
authorBoaz Harrosh <bharrosh@panasas.com>2007-12-13 13:43:23 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-11 19:28:23 -0500
commit004d6530f83bee43a55b51bb5960db96e7ae0ffa (patch)
treea7bb6ffb3e6e89ca6ee9b164d5f19899a0c100dd /include/scsi/iscsi_proto.h
parent7207fea452cfdd2d4e2f4419e2c31f570edbade3 (diff)
[SCSI] iscsi_tcp, libiscsi: initial AHS Support
at libiscsi generic code - currently code assumes a storage space of pdu header is allocated at llds ctask and is pointed to by iscsi_cmd_task->hdr. Here I add a hdr_max field pertaining to that storage, and an hdr_len that accumulates the current use of the pdu-header. - Add an iscsi_next_hdr() inline which returns the next free space to write new Header at. Also iscsi_next_hdr() is used to retrieve the address at which to write the header-digest. - Add iscsi_add_hdr(length). What the user do is calls iscsi_next_hdr() for address of the new header, than calls iscsi_add_hdr(length) with the size of the new header. iscsi_add_hdr() will check if space is available and update to the new size. length must be padded according to standard. - Add 2 padding inline helpers thanks to Olaf. Current patch does not use them but Following patches will. Also moved definition of ISCSI_PAD_LEN to iscsi_proto.h which had PAD_WORD_LEN that was never used anywhere. - Let iscsi_prep_scsi_cmd_pdu() signal an Error return since now it is possible that it will fail. - I was tired of yet again writing a "this is a digest" comment next to sizeof(__u32) so I defined a new ISCSI_DIGEST_SIZE. Now I don't need any comments. Changed all places that used sizeof(__u32) or "4" in connection to a digest. iscsi_tcp specific code - At struct iscsi_tcp_cmd_task allocate maximum space allowed in standard for all headers following the iscsi_cmd header. and mark it so in iscsi_tcp_session_create() - At iscsi_send_cmd_hdr() retrieve the correct headers size and write header digest at iscsi_next_hdr(). Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> Signed-off-by: Olaf Kirch <olaf.kirch@oracle.com> Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'include/scsi/iscsi_proto.h')
-rw-r--r--include/scsi/iscsi_proto.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/scsi/iscsi_proto.h b/include/scsi/iscsi_proto.h
index 751c81eaa7f3..6947082eee6d 100644
--- a/include/scsi/iscsi_proto.h
+++ b/include/scsi/iscsi_proto.h
@@ -27,7 +27,7 @@
27#define ISCSI_LISTEN_PORT 3260 27#define ISCSI_LISTEN_PORT 3260
28 28
29/* Padding word length */ 29/* Padding word length */
30#define PAD_WORD_LEN 4 30#define ISCSI_PAD_LEN 4
31 31
32/* 32/*
33 * useful common(control and data pathes) macro 33 * useful common(control and data pathes) macro
@@ -147,6 +147,14 @@ struct iscsi_rlength_ahdr {
147 __be32 read_length; 147 __be32 read_length;
148}; 148};
149 149
150/* Extended CDB AHS */
151struct iscsi_ecdb_ahdr {
152 __be16 ahslength; /* CDB length - 15, including reserved byte */
153 uint8_t ahstype;
154 uint8_t reserved;
155 uint8_t ecdb[260 - 16]; /* 4-byte aligned extended CDB spillover */
156};
157
150/* SCSI Response Header */ 158/* SCSI Response Header */
151struct iscsi_cmd_rsp { 159struct iscsi_cmd_rsp {
152 uint8_t opcode; 160 uint8_t opcode;