Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef ISCSI_SEQ_AND_PDU_LIST_H
0003 #define ISCSI_SEQ_AND_PDU_LIST_H
0004 
0005 #include <linux/types.h>
0006 #include <linux/cache.h>
0007 
0008 /* struct iscsi_pdu->status */
0009 #define DATAOUT_PDU_SENT            1
0010 
0011 /* struct iscsi_seq->type */
0012 #define SEQTYPE_IMMEDIATE           1
0013 #define SEQTYPE_UNSOLICITED         2
0014 #define SEQTYPE_NORMAL              3
0015 
0016 /* struct iscsi_seq->status */
0017 #define DATAOUT_SEQUENCE_GOT_R2T        1
0018 #define DATAOUT_SEQUENCE_WITHIN_COMMAND_RECOVERY 2
0019 #define DATAOUT_SEQUENCE_COMPLETE       3
0020 
0021 /* iscsi_determine_counts_for_list() type */
0022 #define PDULIST_NORMAL              1
0023 #define PDULIST_IMMEDIATE           2
0024 #define PDULIST_UNSOLICITED         3
0025 #define PDULIST_IMMEDIATE_AND_UNSOLICITED   4
0026 
0027 /* struct iscsi_pdu->type */
0028 #define PDUTYPE_IMMEDIATE           1
0029 #define PDUTYPE_UNSOLICITED         2
0030 #define PDUTYPE_NORMAL              3
0031 
0032 /* struct iscsi_pdu->status */
0033 #define ISCSI_PDU_NOT_RECEIVED          0
0034 #define ISCSI_PDU_RECEIVED_OK           1
0035 #define ISCSI_PDU_CRC_FAILED            2
0036 #define ISCSI_PDU_TIMED_OUT         3
0037 
0038 /* struct iscsi_build_list->randomize */
0039 #define RANDOM_DATAIN_PDU_OFFSETS       0x01
0040 #define RANDOM_DATAIN_SEQ_OFFSETS       0x02
0041 #define RANDOM_DATAOUT_PDU_OFFSETS      0x04
0042 #define RANDOM_R2T_OFFSETS          0x08
0043 
0044 /* struct iscsi_build_list->data_direction */
0045 #define ISCSI_PDU_READ              0x01
0046 #define ISCSI_PDU_WRITE             0x02
0047 
0048 struct iscsi_build_list {
0049     int     data_direction;
0050     int     randomize;
0051     int     type;
0052     int     immediate_data_length;
0053 };
0054 
0055 struct iscsi_pdu {
0056     int     status;
0057     int     type;
0058     u8      flags;
0059     u32     data_sn;
0060     u32     length;
0061     u32     offset;
0062     u32     pdu_send_order;
0063     u32     seq_no;
0064 } ____cacheline_aligned;
0065 
0066 struct iscsi_seq {
0067     int     sent;
0068     int     status;
0069     int     type;
0070     u32     data_sn;
0071     u32     first_datasn;
0072     u32     last_datasn;
0073     u32     next_burst_len;
0074     u32     pdu_start;
0075     u32     pdu_count;
0076     u32     offset;
0077     u32     orig_offset;
0078     u32     pdu_send_order;
0079     u32     r2t_sn;
0080     u32     seq_send_order;
0081     u32     seq_no;
0082     u32     xfer_len;
0083 } ____cacheline_aligned;
0084 
0085 struct iscsit_cmd;
0086 
0087 extern int iscsit_build_pdu_and_seq_lists(struct iscsit_cmd *, u32);
0088 extern struct iscsi_pdu *iscsit_get_pdu_holder(struct iscsit_cmd *, u32, u32);
0089 extern struct iscsi_pdu *iscsit_get_pdu_holder_for_seq(struct iscsit_cmd *, struct iscsi_seq *);
0090 extern struct iscsi_seq *iscsit_get_seq_holder(struct iscsit_cmd *, u32, u32);
0091 
0092 #endif /* ISCSI_SEQ_AND_PDU_LIST_H */