The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/iscsi/iscsi_proto.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2012 The FreeBSD Foundation
    5  *
    6  * This software was developed by Edward Tomasz Napierala under sponsorship
    7  * from the FreeBSD Foundation.
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  * 1. Redistributions of source code must retain the above copyright
   13  *    notice, this list of conditions and the following disclaimer.
   14  * 2. Redistributions in binary form must reproduce the above copyright
   15  *    notice, this list of conditions and the following disclaimer in the
   16  *    documentation and/or other materials provided with the distribution.
   17  *
   18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   28  * SUCH DAMAGE.
   29  *
   30  * $FreeBSD$
   31  */
   32 
   33 #ifndef ISCSI_PROTO_H
   34 #define ISCSI_PROTO_H
   35 
   36 #ifndef CTASSERT
   37 #define CTASSERT(x)             _CTASSERT(x, __LINE__)
   38 #define _CTASSERT(x, y)         __CTASSERT(x, y)
   39 #define __CTASSERT(x, y)        typedef char __assert_ ## y [(x) ? 1 : -1]
   40 #endif
   41 
   42 #define ISCSI_SNGT(x, y)        ((int32_t)(x) - (int32_t)(y) > 0)
   43 #define ISCSI_SNLT(x, y)        ((int32_t)(x) - (int32_t)(y) < 0)
   44 
   45 #define ISCSI_BHS_SIZE                  48
   46 #define ISCSI_HEADER_DIGEST_SIZE        4
   47 #define ISCSI_DATA_DIGEST_SIZE          4
   48 
   49 #define ISCSI_BHS_OPCODE_IMMEDIATE      0x40
   50 
   51 #define ISCSI_BHS_OPCODE_NOP_OUT        0x00
   52 #define ISCSI_BHS_OPCODE_SCSI_COMMAND   0x01
   53 #define ISCSI_BHS_OPCODE_TASK_REQUEST   0x02
   54 #define ISCSI_BHS_OPCODE_LOGIN_REQUEST  0x03
   55 #define ISCSI_BHS_OPCODE_TEXT_REQUEST   0x04
   56 #define ISCSI_BHS_OPCODE_SCSI_DATA_OUT  0x05
   57 #define ISCSI_BHS_OPCODE_LOGOUT_REQUEST 0x06
   58 
   59 #define ISCSI_BHS_OPCODE_NOP_IN         0x20
   60 #define ISCSI_BHS_OPCODE_SCSI_RESPONSE  0x21
   61 #define ISCSI_BHS_OPCODE_TASK_RESPONSE  0x22
   62 #define ISCSI_BHS_OPCODE_LOGIN_RESPONSE 0x23
   63 #define ISCSI_BHS_OPCODE_TEXT_RESPONSE  0x24
   64 #define ISCSI_BHS_OPCODE_SCSI_DATA_IN   0x25
   65 #define ISCSI_BHS_OPCODE_LOGOUT_RESPONSE        0x26
   66 #define ISCSI_BHS_OPCODE_R2T            0x31
   67 #define ISCSI_BHS_OPCODE_ASYNC_MESSAGE  0x32
   68 #define ISCSI_BHS_OPCODE_REJECT         0x3f
   69 
   70 struct iscsi_bhs {
   71         uint8_t         bhs_opcode;
   72         uint8_t         bhs_opcode_specific1[3];
   73         uint8_t         bhs_total_ahs_len;
   74         uint8_t         bhs_data_segment_len[3];
   75         uint64_t        bhs_lun;
   76         uint8_t         bhs_inititator_task_tag[4];
   77         uint8_t         bhs_opcode_specific4[28];
   78 };
   79 CTASSERT(sizeof(struct iscsi_bhs) == ISCSI_BHS_SIZE);
   80 
   81 #define BHSSC_FLAGS_F           0x80
   82 #define BHSSC_FLAGS_R           0x40
   83 #define BHSSC_FLAGS_W           0x20
   84 #define BHSSC_FLAGS_ATTR        0x07
   85 
   86 #define BHSSC_FLAGS_ATTR_UNTAGGED       0
   87 #define BHSSC_FLAGS_ATTR_SIMPLE         1
   88 #define BHSSC_FLAGS_ATTR_ORDERED        2
   89 #define BHSSC_FLAGS_ATTR_HOQ            3
   90 #define BHSSC_FLAGS_ATTR_ACA            4
   91 
   92 #define BHSSC_PRI_MASK          0xf0
   93 #define BHSSC_PRI_SHIFT         4
   94 
   95 struct iscsi_bhs_scsi_command {
   96         uint8_t         bhssc_opcode;
   97         uint8_t         bhssc_flags;
   98         uint8_t         bhssc_pri;
   99         uint8_t         bhssc_reserved;
  100         uint8_t         bhssc_total_ahs_len;
  101         uint8_t         bhssc_data_segment_len[3];
  102         uint64_t        bhssc_lun;
  103         uint32_t        bhssc_initiator_task_tag;
  104         uint32_t        bhssc_expected_data_transfer_length;
  105         uint32_t        bhssc_cmdsn;
  106         uint32_t        bhssc_expstatsn;
  107         uint8_t         bhssc_cdb[16];
  108 };
  109 CTASSERT(sizeof(struct iscsi_bhs_scsi_command) == ISCSI_BHS_SIZE);
  110 
  111 #define BHSSR_FLAGS_RESIDUAL_UNDERFLOW          0x02
  112 #define BHSSR_FLAGS_RESIDUAL_OVERFLOW           0x04
  113 
  114 #define BHSSR_RESPONSE_COMMAND_COMPLETED        0x00
  115 
  116 struct iscsi_bhs_scsi_response {
  117         uint8_t         bhssr_opcode;
  118         uint8_t         bhssr_flags;
  119         uint8_t         bhssr_response;
  120         uint8_t         bhssr_status;
  121         uint8_t         bhssr_total_ahs_len;
  122         uint8_t         bhssr_data_segment_len[3];
  123         uint16_t        bhssr_status_qualifier;
  124         uint16_t        bhssr_reserved;
  125         uint32_t        bhssr_reserved2;
  126         uint32_t        bhssr_initiator_task_tag;
  127         uint32_t        bhssr_snack_tag;
  128         uint32_t        bhssr_statsn;
  129         uint32_t        bhssr_expcmdsn;
  130         uint32_t        bhssr_maxcmdsn;
  131         uint32_t        bhssr_expdatasn;
  132         uint32_t        bhssr_bidirectional_read_residual_count;
  133         uint32_t        bhssr_residual_count;
  134 };
  135 CTASSERT(sizeof(struct iscsi_bhs_scsi_response) == ISCSI_BHS_SIZE);
  136 
  137 #define BHSTMR_FUNCTION_ABORT_TASK              1
  138 #define BHSTMR_FUNCTION_ABORT_TASK_SET          2
  139 #define BHSTMR_FUNCTION_CLEAR_ACA               3
  140 #define BHSTMR_FUNCTION_CLEAR_TASK_SET          4
  141 #define BHSTMR_FUNCTION_LOGICAL_UNIT_RESET      5
  142 #define BHSTMR_FUNCTION_TARGET_WARM_RESET       6
  143 #define BHSTMR_FUNCTION_TARGET_COLD_RESET       7
  144 #define BHSTMR_FUNCTION_TASK_REASSIGN           8
  145 #define BHSTMR_FUNCTION_QUERY_TASK              9
  146 #define BHSTMR_FUNCTION_QUERY_TASK_SET          10
  147 #define BHSTMR_FUNCTION_I_T_NEXUS_RESET         11
  148 #define BHSTMR_FUNCTION_QUERY_ASYNC_EVENT       12
  149 
  150 struct iscsi_bhs_task_management_request {
  151         uint8_t         bhstmr_opcode;
  152         uint8_t         bhstmr_function;
  153         uint8_t         bhstmr_reserved[2];
  154         uint8_t         bhstmr_total_ahs_len;
  155         uint8_t         bhstmr_data_segment_len[3];
  156         uint64_t        bhstmr_lun;
  157         uint32_t        bhstmr_initiator_task_tag;
  158         uint32_t        bhstmr_referenced_task_tag;
  159         uint32_t        bhstmr_cmdsn;
  160         uint32_t        bhstmr_expstatsn;
  161         uint32_t        bhstmr_refcmdsn;
  162         uint32_t        bhstmr_expdatasn;
  163         uint64_t        bhstmr_reserved2;
  164 };
  165 CTASSERT(sizeof(struct iscsi_bhs_task_management_request) == ISCSI_BHS_SIZE);
  166 
  167 #define BHSTMR_RESPONSE_FUNCTION_COMPLETE       0
  168 #define BHSTMR_RESPONSE_TASK_DOES_NOT_EXIST     1
  169 #define BHSTMR_RESPONSE_LUN_DOES_NOT_EXIST      2
  170 #define BHSTMR_RESPONSE_TASK_STILL_ALLEGIANT    3
  171 #define BHSTMR_RESPONSE_TASK_ALL_REASS_NOT_SUPP 4
  172 #define BHSTMR_RESPONSE_FUNCTION_NOT_SUPPORTED  5
  173 #define BHSTMR_RESPONSE_FUNCTION_AUTH_FAIL      6
  174 #define BHSTMR_RESPONSE_FUNCTION_SUCCEEDED      7
  175 #define BHSTMR_RESPONSE_FUNCTION_REJECTED       255
  176 
  177 struct iscsi_bhs_task_management_response {
  178         uint8_t         bhstmr_opcode;
  179         uint8_t         bhstmr_flags;
  180         uint8_t         bhstmr_response;
  181         uint8_t         bhstmr_reserved;
  182         uint8_t         bhstmr_total_ahs_len;
  183         uint8_t         bhstmr_data_segment_len[3];
  184         uint8_t         bhstmr_additional_reponse_information[3];
  185         uint8_t         bhstmr_reserved2[5];
  186         uint32_t        bhstmr_initiator_task_tag;
  187         uint32_t        bhstmr_reserved3;
  188         uint32_t        bhstmr_statsn;
  189         uint32_t        bhstmr_expcmdsn;
  190         uint32_t        bhstmr_maxcmdsn;
  191         uint8_t         bhstmr_reserved4[12];
  192 };
  193 CTASSERT(sizeof(struct iscsi_bhs_task_management_response) == ISCSI_BHS_SIZE);
  194 
  195 #define BHSLR_FLAGS_TRANSIT             0x80
  196 #define BHSLR_FLAGS_CONTINUE            0x40
  197 
  198 #define BHSLR_STAGE_SECURITY_NEGOTIATION        0
  199 #define BHSLR_STAGE_OPERATIONAL_NEGOTIATION     1
  200 #define BHSLR_STAGE_FULL_FEATURE_PHASE          3 /* Yes, 3. */
  201 
  202 struct iscsi_bhs_login_request {
  203         uint8_t         bhslr_opcode;
  204         uint8_t         bhslr_flags;
  205         uint8_t         bhslr_version_max;
  206         uint8_t         bhslr_version_min;
  207         uint8_t         bhslr_total_ahs_len;
  208         uint8_t         bhslr_data_segment_len[3];
  209         uint8_t         bhslr_isid[6];
  210         uint16_t        bhslr_tsih;
  211         uint32_t        bhslr_initiator_task_tag;
  212         uint16_t        bhslr_cid;
  213         uint16_t        bhslr_reserved;
  214         uint32_t        bhslr_cmdsn;
  215         uint32_t        bhslr_expstatsn;
  216         uint8_t         bhslr_reserved2[16];
  217 };
  218 CTASSERT(sizeof(struct iscsi_bhs_login_request) == ISCSI_BHS_SIZE);
  219 
  220 struct iscsi_bhs_login_response {
  221         uint8_t         bhslr_opcode;
  222         uint8_t         bhslr_flags;
  223         uint8_t         bhslr_version_max;
  224         uint8_t         bhslr_version_active;
  225         uint8_t         bhslr_total_ahs_len;
  226         uint8_t         bhslr_data_segment_len[3];
  227         uint8_t         bhslr_isid[6];
  228         uint16_t        bhslr_tsih;
  229         uint32_t        bhslr_initiator_task_tag;
  230         uint32_t        bhslr_reserved;
  231         uint32_t        bhslr_statsn;
  232         uint32_t        bhslr_expcmdsn;
  233         uint32_t        bhslr_maxcmdsn;
  234         uint8_t         bhslr_status_class;
  235         uint8_t         bhslr_status_detail;
  236         uint16_t        bhslr_reserved2;
  237         uint8_t         bhslr_reserved3[8];
  238 };
  239 CTASSERT(sizeof(struct iscsi_bhs_login_response) == ISCSI_BHS_SIZE);
  240 
  241 #define BHSTR_FLAGS_FINAL               0x80
  242 #define BHSTR_FLAGS_CONTINUE            0x40
  243 
  244 struct iscsi_bhs_text_request {
  245         uint8_t         bhstr_opcode;
  246         uint8_t         bhstr_flags;
  247         uint16_t        bhstr_reserved;
  248         uint8_t         bhstr_total_ahs_len;
  249         uint8_t         bhstr_data_segment_len[3];
  250         uint64_t        bhstr_lun;
  251         uint32_t        bhstr_initiator_task_tag;
  252         uint32_t        bhstr_target_transfer_tag;
  253         uint32_t        bhstr_cmdsn;
  254         uint32_t        bhstr_expstatsn;
  255         uint8_t         bhstr_reserved2[16];
  256 };
  257 CTASSERT(sizeof(struct iscsi_bhs_text_request) == ISCSI_BHS_SIZE);
  258 
  259 struct iscsi_bhs_text_response {
  260         uint8_t         bhstr_opcode;
  261         uint8_t         bhstr_flags;
  262         uint16_t        bhstr_reserved;
  263         uint8_t         bhstr_total_ahs_len;
  264         uint8_t         bhstr_data_segment_len[3];
  265         uint64_t        bhstr_lun;
  266         uint32_t        bhstr_initiator_task_tag;
  267         uint32_t        bhstr_target_transfer_tag;
  268         uint32_t        bhstr_statsn;
  269         uint32_t        bhstr_expcmdsn;
  270         uint32_t        bhstr_maxcmdsn;
  271         uint8_t         bhstr_reserved2[12];
  272 };
  273 CTASSERT(sizeof(struct iscsi_bhs_text_response) == ISCSI_BHS_SIZE);
  274 
  275 #define BHSDO_FLAGS_F   0x80
  276 
  277 struct iscsi_bhs_data_out {
  278         uint8_t         bhsdo_opcode;
  279         uint8_t         bhsdo_flags;
  280         uint8_t         bhsdo_reserved[2];
  281         uint8_t         bhsdo_total_ahs_len;
  282         uint8_t         bhsdo_data_segment_len[3];
  283         uint64_t        bhsdo_lun;
  284         uint32_t        bhsdo_initiator_task_tag;
  285         uint32_t        bhsdo_target_transfer_tag;
  286         uint32_t        bhsdo_reserved2;
  287         uint32_t        bhsdo_expstatsn;
  288         uint32_t        bhsdo_reserved3;
  289         uint32_t        bhsdo_datasn;
  290         uint32_t        bhsdo_buffer_offset;
  291         uint32_t        bhsdo_reserved4;
  292 };
  293 CTASSERT(sizeof(struct iscsi_bhs_data_out) == ISCSI_BHS_SIZE);
  294 
  295 #define BHSDI_FLAGS_F   0x80
  296 #define BHSDI_FLAGS_A   0x40
  297 #define BHSDI_FLAGS_O   0x04
  298 #define BHSDI_FLAGS_U   0x02
  299 #define BHSDI_FLAGS_S   0x01
  300 
  301 struct iscsi_bhs_data_in {
  302         uint8_t         bhsdi_opcode;
  303         uint8_t         bhsdi_flags;
  304         uint8_t         bhsdi_reserved;
  305         uint8_t         bhsdi_status;
  306         uint8_t         bhsdi_total_ahs_len;
  307         uint8_t         bhsdi_data_segment_len[3];
  308         uint64_t        bhsdi_lun;
  309         uint32_t        bhsdi_initiator_task_tag;
  310         uint32_t        bhsdi_target_transfer_tag;
  311         uint32_t        bhsdi_statsn;
  312         uint32_t        bhsdi_expcmdsn;
  313         uint32_t        bhsdi_maxcmdsn;
  314         uint32_t        bhsdi_datasn;
  315         uint32_t        bhsdi_buffer_offset;
  316         uint32_t        bhsdi_residual_count;
  317 };
  318 CTASSERT(sizeof(struct iscsi_bhs_data_in) == ISCSI_BHS_SIZE);
  319 
  320 struct iscsi_bhs_r2t {
  321         uint8_t         bhsr2t_opcode;
  322         uint8_t         bhsr2t_flags;
  323         uint16_t        bhsr2t_reserved;
  324         uint8_t         bhsr2t_total_ahs_len;
  325         uint8_t         bhsr2t_data_segment_len[3];
  326         uint64_t        bhsr2t_lun;
  327         uint32_t        bhsr2t_initiator_task_tag;
  328         uint32_t        bhsr2t_target_transfer_tag;
  329         uint32_t        bhsr2t_statsn;
  330         uint32_t        bhsr2t_expcmdsn;
  331         uint32_t        bhsr2t_maxcmdsn;
  332         uint32_t        bhsr2t_r2tsn;
  333         uint32_t        bhsr2t_buffer_offset;
  334         uint32_t        bhsr2t_desired_data_transfer_length;
  335 };
  336 CTASSERT(sizeof(struct iscsi_bhs_r2t) == ISCSI_BHS_SIZE);
  337 
  338 struct iscsi_bhs_nop_out {
  339         uint8_t         bhsno_opcode;
  340         uint8_t         bhsno_flags;
  341         uint16_t        bhsno_reserved;
  342         uint8_t         bhsno_total_ahs_len;
  343         uint8_t         bhsno_data_segment_len[3];
  344         uint64_t        bhsno_lun;
  345         uint32_t        bhsno_initiator_task_tag;
  346         uint32_t        bhsno_target_transfer_tag;
  347         uint32_t        bhsno_cmdsn;
  348         uint32_t        bhsno_expstatsn;
  349         uint8_t         bhsno_reserved2[16];
  350 };
  351 CTASSERT(sizeof(struct iscsi_bhs_nop_out) == ISCSI_BHS_SIZE);
  352 
  353 struct iscsi_bhs_nop_in {
  354         uint8_t         bhsni_opcode;
  355         uint8_t         bhsni_flags;
  356         uint16_t        bhsni_reserved;
  357         uint8_t         bhsni_total_ahs_len;
  358         uint8_t         bhsni_data_segment_len[3];
  359         uint64_t        bhsni_lun;
  360         uint32_t        bhsni_initiator_task_tag;
  361         uint32_t        bhsni_target_transfer_tag;
  362         uint32_t        bhsni_statsn;
  363         uint32_t        bhsni_expcmdsn;
  364         uint32_t        bhsni_maxcmdsn;
  365         uint8_t         bhsno_reserved2[12];
  366 };
  367 CTASSERT(sizeof(struct iscsi_bhs_nop_in) == ISCSI_BHS_SIZE);
  368 
  369 #define BHSLR_REASON_CLOSE_SESSION              0
  370 #define BHSLR_REASON_CLOSE_CONNECTION           1
  371 #define BHSLR_REASON_REMOVE_FOR_RECOVERY        2
  372 
  373 struct iscsi_bhs_logout_request {
  374         uint8_t         bhslr_opcode;
  375         uint8_t         bhslr_reason;
  376         uint16_t        bhslr_reserved;
  377         uint8_t         bhslr_total_ahs_len;
  378         uint8_t         bhslr_data_segment_len[3];
  379         uint64_t        bhslr_reserved2;
  380         uint32_t        bhslr_initiator_task_tag;
  381         uint16_t        bhslr_cid;
  382         uint16_t        bhslr_reserved3;
  383         uint32_t        bhslr_cmdsn;
  384         uint32_t        bhslr_expstatsn;
  385         uint8_t         bhslr_reserved4[16];
  386 };
  387 CTASSERT(sizeof(struct iscsi_bhs_logout_request) == ISCSI_BHS_SIZE);
  388 
  389 #define BHSLR_RESPONSE_CLOSED_SUCCESSFULLY      0
  390 #define BHSLR_RESPONSE_RECOVERY_NOT_SUPPORTED   2
  391 
  392 struct iscsi_bhs_logout_response {
  393         uint8_t         bhslr_opcode;
  394         uint8_t         bhslr_flags;
  395         uint8_t         bhslr_response;
  396         uint8_t         bhslr_reserved;
  397         uint8_t         bhslr_total_ahs_len;
  398         uint8_t         bhslr_data_segment_len[3];
  399         uint64_t        bhslr_reserved2;
  400         uint32_t        bhslr_initiator_task_tag;
  401         uint32_t        bhslr_reserved3;
  402         uint32_t        bhslr_statsn;
  403         uint32_t        bhslr_expcmdsn;
  404         uint32_t        bhslr_maxcmdsn;
  405         uint32_t        bhslr_reserved4;
  406         uint16_t        bhslr_time2wait;
  407         uint16_t        bhslr_time2retain;
  408         uint32_t        bhslr_reserved5;
  409 };
  410 CTASSERT(sizeof(struct iscsi_bhs_logout_response) == ISCSI_BHS_SIZE);
  411 
  412 #define BHSAM_EVENT_TARGET_REQUESTS_LOGOUT              1
  413 #define BHSAM_EVENT_TARGET_TERMINATES_CONNECTION        2
  414 #define BHSAM_EVENT_TARGET_TERMINATES_SESSION           3
  415 
  416 struct iscsi_bhs_asynchronous_message {
  417         uint8_t         bhsam_opcode;
  418         uint8_t         bhsam_flags;
  419         uint16_t        bhsam_reserved;
  420         uint8_t         bhsam_total_ahs_len;
  421         uint8_t         bhsam_data_segment_len[3];
  422         uint64_t        bhsam_lun;
  423         uint32_t        bhsam_0xffffffff;
  424         uint32_t        bhsam_reserved2;
  425         uint32_t        bhsam_statsn;
  426         uint32_t        bhsam_expcmdsn;
  427         uint32_t        bhsam_maxcmdsn;
  428         uint8_t         bhsam_async_event;
  429         uint8_t         bhsam_async_vcode;
  430         uint16_t        bhsam_parameter1;
  431         uint16_t        bhsam_parameter2;
  432         uint16_t        bhsam_parameter3;
  433         uint32_t        bhsam_reserved3;
  434 };
  435 CTASSERT(sizeof(struct iscsi_bhs_asynchronous_message) == ISCSI_BHS_SIZE);
  436 
  437 #define BHSSR_REASON_DATA_DIGEST_ERROR  0x02
  438 #define BHSSR_PROTOCOL_ERROR            0x04
  439 #define BHSSR_COMMAND_NOT_SUPPORTED     0x05
  440 #define BHSSR_INVALID_PDU_FIELD         0x09
  441 
  442 struct iscsi_bhs_reject {
  443         uint8_t         bhsr_opcode;
  444         uint8_t         bhsr_flags;
  445         uint8_t         bhsr_reason;
  446         uint8_t         bhsr_reserved;
  447         uint8_t         bhsr_total_ahs_len;
  448         uint8_t         bhsr_data_segment_len[3];
  449         uint64_t        bhsr_reserved2;
  450         uint32_t        bhsr_0xffffffff;
  451         uint32_t        bhsr_reserved3;
  452         uint32_t        bhsr_statsn;
  453         uint32_t        bhsr_expcmdsn;
  454         uint32_t        bhsr_maxcmdsn;
  455         uint32_t        bhsr_datasn_r2tsn;
  456         uint32_t        bhsr_reserved4;
  457         uint32_t        bhsr_reserved5;
  458 };
  459 CTASSERT(sizeof(struct iscsi_bhs_reject) == ISCSI_BHS_SIZE);
  460 
  461 #endif /* !ISCSI_PROTO_H */

Cache object: cea1a4805a164cbfeb1b5f735541be1a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.