//\r
// set the default connection-only parameters\r
//\r
- Conn->MaxRecvDataSegmentLength = MAX_RECV_DATA_SEG_LEN_IN_FFP;\r
+ Conn->MaxRecvDataSegmentLength = DEFAULT_MAX_RECV_DATA_SEG_LEN;\r
Conn->HeaderDigest = ISCSI_DIGEST_NONE;\r
Conn->DataDigest = ISCSI_DIGEST_NONE;\r
\r
}\r
\r
LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufAllocSpace (Nbuf, sizeof (ISCSI_LOGIN_REQUEST), NET_BUF_TAIL);\r
+ ASSERT (LoginReq != NULL);\r
ZeroMem (LoginReq, sizeof (ISCSI_LOGIN_REQUEST));\r
\r
//\r
NET_BUF *DataSeg;\r
UINT32 PadAndCRC32[2];\r
\r
- NbufList = AllocatePool (sizeof (LIST_ENTRY ));\r
+ NbufList = AllocatePool (sizeof (LIST_ENTRY));\r
if (NbufList == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
Len = sizeof (ISCSI_BASIC_HEADER) + (HeaderDigest ? sizeof (UINT32) : 0);\r
PduHdr = NetbufAlloc (Len);\r
if (PduHdr == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ON_EXIT;\r
+ gBS->FreePool (NbufList);\r
+ return EFI_OUT_OF_RESOURCES;\r
}\r
\r
Header = NetbufAllocSpace (PduHdr, Len, NET_BUF_TAIL);\r
+ ASSERT (Header != NULL);\r
InsertTailList (NbufList, &PduHdr->List);\r
\r
//\r
// The first to receive the useful data. The second to receive the padding.\r
//\r
Fragment[1].Len = PadLen + (DataDigest ? sizeof (UINT32) : 0);\r
- Fragment[1].Bulk = (UINT8 *) ((UINTN) &PadAndCRC32[1] - PadLen);\r
-\r
+ Fragment[1].Bulk = (UINT8 *)((UINTN) &PadAndCRC32[0] + (4 - PadLen));\r
FragmentCount = 2;\r
} else {\r
FragmentCount = 1;\r
Session->ImmediateData = (BOOLEAN) (Session->ImmediateData && (AsciiStrCmp (Value, "Yes") == 0));\r
\r
//\r
- // MaxRecvDataSegmentLength, result function is Mininum.\r
+ // MaxRecvDataSegmentLength is declarative.\r
//\r
Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_MAX_RECV_DATA_SEGMENT_LENGTH);\r
if (Value != NULL) {\r
- //\r
- // MaxRecvDataSegmentLength is declarative.\r
- //\r
- NumericValue = AsciiStrDecimalToUintn (Value);\r
-\r
- Conn->MaxRecvDataSegmentLength = (UINT32) MIN (Conn->MaxRecvDataSegmentLength, NumericValue);\r
+ Conn->MaxRecvDataSegmentLength = (UINT32) AsciiStrDecimalToUintn (Value);\r
}\r
//\r
// MaxBurstLength, result funtion is Mininum.\r
//\r
// FirstBurstLength, result function is Minimum. Irrelevant when InitialR2T=Yes and\r
// ImmediateData=No.\r
+ // This Key/Value is negotiation type.\r
//\r
Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_FIRST_BURST_LENGTH);\r
- if ((Value == NULL) && !(Session->InitialR2T && !Session->ImmediateData)) {\r
+ if (Value == NULL) {\r
goto ON_ERROR;\r
}\r
\r
AsciiSPrint (Value, sizeof (Value), "%a", Session->ImmediateData ? "Yes" : "No");\r
IScsiAddKeyValuePair (Pdu, ISCSI_KEY_IMMEDIATE_DATA, Value);\r
\r
- AsciiSPrint (Value, sizeof (Value), "%d", Conn->MaxRecvDataSegmentLength);\r
+ AsciiSPrint (Value, sizeof (Value), "%d", MAX_RECV_DATA_SEG_LEN_IN_FFP);\r
IScsiAddKeyValuePair (Pdu, ISCSI_KEY_MAX_RECV_DATA_SEGMENT_LENGTH, Value);\r
\r
AsciiSPrint (Value, sizeof (Value), "%d", Session->MaxBurstLength);\r
LIST_ENTRY *ListHead;\r
ISCSI_KEY_VALUE_PAIR *KeyValuePair;\r
\r
- ListHead = AllocatePool (sizeof (LIST_ENTRY ));\r
+ ListHead = AllocatePool (sizeof (LIST_ENTRY));\r
if (ListHead == NULL) {\r
return NULL;\r
}\r
}\r
\r
ScsiCmd = (SCSI_COMMAND *) NetbufAllocSpace (PduHeader, Length, NET_BUF_TAIL);\r
+ if (ScsiCmd == NULL) {\r
+ NetbufFree (PduHeader);\r
+ return NULL;\r
+ } \r
Header = (ISCSI_ADDITIONAL_HEADER *) (ScsiCmd + 1);\r
\r
ZeroMem (ScsiCmd, Length);\r
goto ON_EXIT;\r
}\r
\r
- NbufList = AllocatePool (sizeof (LIST_ENTRY ));\r
+ NbufList = AllocatePool (sizeof (LIST_ENTRY));\r
if (NbufList == NULL) {\r
NetbufFree (PduHeader);\r
NetbufFree (DataSeg);\r
) {\r
//\r
// Unsolicited data out sequence is not allowed,\r
- // or FirstBustLength data is already sent out by immediate data\r
+ // or FirstBurstLength data is already sent out by immediate data\r
// or all the OUT data accompany this SCSI packet is sent as\r
// immediate data, the final flag should be set on this SCSI Command\r
// PDU.\r
ISCSI_SCSI_DATA_OUT *DataOutHdr;\r
ISCSI_XFER_CONTEXT *XferContext;\r
\r
- NbufList = AllocatePool (sizeof (LIST_ENTRY ));\r
+ NbufList = AllocatePool (sizeof (LIST_ENTRY));\r
if (NbufList == NULL) {\r
return NULL;\r
}\r
InsertTailList (NbufList, &PduHdr->List);\r
\r
DataOutHdr = (ISCSI_SCSI_DATA_OUT *) NetbufAllocSpace (PduHdr, sizeof (ISCSI_SCSI_DATA_OUT), NET_BUF_TAIL);\r
+ ASSERT (DataOutHdr != NULL);\r
XferContext = &Tcb->XferContext;\r
\r
ZeroMem (DataOutHdr, sizeof (ISCSI_SCSI_DATA_OUT));\r
ISCSI_CONNECTION *Conn;\r
ISCSI_XFER_CONTEXT *XferContext;\r
\r
- PduList = AllocatePool (sizeof (LIST_ENTRY ));\r
+ PduList = AllocatePool (sizeof (LIST_ENTRY));\r
if (PduList == NULL) {\r
return NULL;\r
}\r