4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The header file of iSCSI Protocol that defines many specific data structures.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// RFC 1982 Serial Number Arithmetic, SERIAL_BITS = 32
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (((INT32) (s1) < (INT32) (s2)) && (s2 - s1) < ((UINT32) 1 << 31)) || \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (((INT32) (s1) > (INT32) (s2)) && (s1 - s2) > ((UINT32) 1 << 31)) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (((INT32) (s1) < (INT32) (s2)) && (s2 - s1) > ((UINT32) 1 << 31)) || \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (((INT32) (s1) > (INT32) (s2)) && (s1 - s2) < ((UINT32) 1 << 31)) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_TARGET_PORTAL_GROUP_TAG "TargetPortalGroupTag"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_FIRST_BURST_LENGTH "FirstBurstLength"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_DEFAULT_TIME2WAIT "DefaultTime2Wait"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_DEFAULT_TIME2RETAIN "DefaultTime2Retain"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_MAX_OUTSTANDING_R2T "MaxOutstandingR2T"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_DATA_PDU_IN_ORDER "DataPDUInOrder"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_DATA_SEQUENCE_IN_ORDER "DataSequenceInOrder"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_ERROR_RECOVERY_LEVEL "ErrorRecoveryLevel"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_KEY_MAX_RECV_DATA_SEGMENT_LENGTH "MaxRecvDataSegmentLength"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// connection state for initiator
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// session state for initiator
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef enum {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_SET_OPCODE(PduHdr, Op, Flgs) ((((ISCSI_BASIC_HEADER *) (PduHdr))->OpCode) = ((Op) | (Flgs)))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_GET_OPCODE(PduHdr) ((((ISCSI_BASIC_HEADER *) (PduHdr))->OpCode) & ISCSI_OPCODE_MASK)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_CHECK_OPCODE(PduHdr, Op) ((((PduHdr)->OpCode) & ISCSI_OPCODE_MASK) == (Op))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_IMMEDIATE_ON(PduHdr) ((PduHdr)->OpCode & ISCSI_REQ_IMMEDIATE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_SET_FLAG(PduHdr, Flag) (((ISCSI_BASIC_HEADER *) (PduHdr))->Flags |= (BOOLEAN)(Flag))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_CLEAR_FLAG(PduHdr, Flag) (((ISCSI_BASIC_HEADER *) (PduHdr))->Flags &= ~(Flag))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_FLAG_ON(PduHdr, Flag) ((((ISCSI_BASIC_HEADER *) (PduHdr))->Flags & (Flag)) == (Flag))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_SET_STAGES(PduHdr, Cur, Nxt) ((PduHdr)->Flags = (UINT8) ((PduHdr)->Flags | ((Cur) << 2 | (Nxt))))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_GET_CURRENT_STAGE(PduHdr) (((PduHdr)->Flags >> 2) & 0x3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_GET_NEXT_STAGE(PduHdr) (((PduHdr)->Flags) & 0x3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_GET_PAD_LEN(DataLen) ((~(DataLen) + 1) & 0x3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_ROUNDUP(DataLen) (((DataLen) + 3) &~(0x3))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } while (0);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define NTOH24(src) (((src)[0] << 16) | ((src)[1] << 8) | ((src)[2]))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_GET_DATASEG_LEN(PduHdr) NTOH24 (((ISCSI_BASIC_HEADER *) (PduHdr))->DataSegmentLength)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_SET_DATASEG_LEN(PduHdr, Len) HTON24 (((ISCSI_BASIC_HEADER *) (PduHdr))->DataSegmentLength, (Len))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// initiator opcodes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// target opcodes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// iSCSI Basic Header Segment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Defined AHS types, others are reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// task attributes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SCSI Command
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// flag bit definitions in SCSI response
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// iSCSI service response codes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_SERVICE_RSP_COMMAND_COMPLETE_AT_TARGET 0x00
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SCSI Response
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// iSCSI Task Managment Function Request
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_TMF_RSP_PDU_RSP_TASK_STILL_ALLEGIANT 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_TMF_RSP_PDU_RSP_TASK_REASSGIN_NOT_SUPPORTED 4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_TMF_RSP_PDU_RSP_FUNCTION_AHTH_FAILED 6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// iSCSI Task Management Function Response
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SCSI Data-Out
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCSI_DATA_IN_PDU_FLAG_OVERFLOW SCSI_RSP_PDU_FLAG_OVERFLOW
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCSI_DATA_IN_PDU_FLAG_UNDERFLOW SCSI_RSP_PDU_FLAG_UNDERFLOW
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SCSI Data-In
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_GET_BUFFER_OFFSET(PduHdr) NTOHL (((ISCSI_SCSI_DATA_IN *) (PduHdr))->BufferOffset)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Ready To Transfer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Login Request
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_LOGIN_RSP_PDU_FLAG_TRANSIT ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_LOGIN_RSP_PDU_FLAG_CONTINUE ISCSI_LOGIN_REQ_PDU_FLAG_CONTINUE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Login Response
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_LOGOUT_REASON_REMOVE_CONNECTION_FOR_RECOVERY 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Logout Request
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_LOGOUT_RESPONSE_SESSION_CLOSED_SUCCESS 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_LOGOUT_RESPONSE_RECOVERY_NOT_SUPPORTED 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Logout Response
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SNACK Request
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef enum {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Attach the iSCSI connection to the iSCSI session.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Session The iSCSI session.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Conn The iSCSI connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Detach the iSCSI connection from the session it belongs to.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Conn The iSCSI connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function does the iSCSI connection login.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Conn The iSCSI connection to login.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI connection is logged into the iSCSI target.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_TIMEOUT Timeout happened during the login procedure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Create a TCP connection for the iSCSI session.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private The iSCSI driver data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Session Maximum CmdSN from the target.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The newly created iSCSI connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Destroy an iSCSI connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Conn The connection to destroy.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Login the iSCSI session.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private The iSCSI driver data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI session login procedure finished.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NO_MEDIA There was a media error.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Build and send the iSCSI login request to the iSCSI target according to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the current login stage.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Conn The connection in the iSCSI login phase.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI login request PDU is built and sent on this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR Some kind of device error happened.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Receive and process the iSCSI login response.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Conn The connection in the iSCSI login phase.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI login response PDU is received and processed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Add an iSCSI key-value pair as a string into the data segment of the Login Request PDU.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The DataSegmentLength and the actual size of the net buffer containing this PDU will be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Pdu The iSCSI PDU whose data segment the key-value pair will
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be added to.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Key The key name string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Value The value string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The key-valu pair is added to the PDU's datasegment and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the correspondence length fields are updated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES There is not enough space in the PDU to add the key-value
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Prepare the iSCSI login request to be sent according to the current login status.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Conn The connection in the iSCSI login phase.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The pointer to the net buffer containing the iSCSI login request built.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Process the iSCSI Login Response.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Conn The connection on which the iSCSI login response is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Pdu The iSCSI login response PDU.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI login response PDU is processed and all check are passed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_MEDIA_CHANGED Target is redirected.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Updated the target information according the data received in the iSCSI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync login response with an target redirection status.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Session The iSCSI session.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Data The data segment which should contain the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TargetAddress key-value list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Len Length of the data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The target address is updated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The TargetAddress key is not found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The callback function to free the net buffer list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Arg The opaque parameter.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Receive an iSCSI response PDU. An iSCSI response PDU contains an iSCSI PDU header and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync an optional data segment. The two parts will be put into two blocks of buffers in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync net buffer. The digest check will be conducted in this function if needed and the digests
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync will be trimmed from the PDU buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Conn The iSCSI connection to receive data from.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Pdu The received iSCSI pdu.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Context The context used to describe information on the caller provided
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buffer to receive data segment of the iSCSI pdu, it's optional.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] HeaderDigest Whether there will be header digest received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DataDigest Whether there will be data digest.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] TimeoutEvent The timeout event, it's optional.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS An iSCSI pdu is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Check and get the result of the prameter negotiation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Conn The connection in iSCSI login.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The parmeter check is passed and negotiation is finished.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Fill the oprational prameters.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Conn The connection in iSCSI login.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Pdu The iSCSI login request PDU to fill the parameters.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The parmeters are filled into the iSCSI login request PDU.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Pad the iSCSI AHS or data segment to an integer number of 4 byte words.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Pdu The iSCSI pdu which contains segments to pad.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Len The length of the last semgnet in the PDU.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The segment is padded or no need to pad it.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES There is not enough remaining free space to add the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync padding bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Build a key-value list from the data segment.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Data The data segment containing the key-value pairs.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Len Length of the data segment.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The key-value list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Get the value string by the key name from the key-value list. If found,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the key-value entry will be removed from the list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] KeyValueList The key-value list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Key The key name to find.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The value string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Free the key-value list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] KeyValueList The key-value list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Normalize the iSCSI name according to RFC.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Name The iSCSI name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Len length of the iSCSI name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI name is valid and normalized.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_PROTOCOL_ERROR The iSCSI name is mal-formatted or not in the IQN format.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Execute the SCSI command issued through the EXT SCSI PASS THRU protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PassThru The EXT SCSI PASS THRU protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Target The target ID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Lun The LUN.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Packet The request packet containing IO request, SCSI command
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buffer and buffers to read/write.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCES The SCSI command is executed and the result is updated to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the Packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR Session state was not as required.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Other errors as indicated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Reinstate the session on some error.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Private The iSCSI driver data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCES The session is reinstated from some error.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Other Reinstatement failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Initialize some session parameters before login.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Session The iSCSI session.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Recovery Whether the request is from a fresh new start or recovery.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Abort the iSCSI session, that is, reset all the connection and free the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Session The iSCSI session.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCES The session is aborted.