/** @file\r
- The implementation of IScsi protocol based on RFC3720.\r
+ The implementation of iSCSI protocol based on RFC3720.\r
\r
Copyright (c) 2004 - 2008, Intel Corporation.<BR>\r
All rights reserved. This program and the accompanying materials\r
Conn->ExpStatSN = 0;\r
Conn->PartialReqSent = FALSE;\r
Conn->PartialRspRcvd = FALSE;\r
- Conn->CID = Session->NextCID++;\r
+ Conn->Cid = Session->NextCid++;\r
\r
Status = gBS->CreateEvent (\r
EVT_TIMER,\r
ISCSI_SET_STAGES (LoginReq, Conn->CurrentStage, Conn->NextStage);\r
LoginReq->VersionMax = ISCSI_VERSION_MAX;\r
LoginReq->VersionMin = ISCSI_VERSION_MIN;\r
- LoginReq->TSIH = HTONS (Session->TSIH);\r
+ LoginReq->Tsih = HTONS (Session->Tsih);\r
LoginReq->InitiatorTaskTag = HTONL (Session->InitiatorTaskTag);\r
- LoginReq->CID = HTONS (Conn->CID);\r
+ LoginReq->Cid = HTONS (Conn->Cid);\r
LoginReq->CmdSN = HTONL (Session->CmdSN);\r
\r
//\r
// with their increasing StatSN values.\r
//\r
LoginReq->ExpStatSN = HTONL (Conn->ExpStatSN);\r
- CopyMem (LoginReq->ISID, Session->ISID, sizeof (LoginReq->ISID));\r
+ CopyMem (LoginReq->Isid, Session->Isid, sizeof (LoginReq->Isid));\r
\r
if (Conn->PartialRspRcvd) {\r
//\r
(CurrentStage != Conn->CurrentStage) ||\r
(!Conn->TransitInitiated && Transit) ||\r
(Transit && (NextStage != Conn->NextStage)) ||\r
- (CompareMem (Session->ISID, LoginRsp->ISID, sizeof (LoginRsp->ISID)) != 0) ||\r
+ (CompareMem (Session->Isid, LoginRsp->Isid, sizeof (LoginRsp->Isid)) != 0) ||\r
(LoginRsp->InitiatorTaskTag != Session->InitiatorTaskTag)\r
) {\r
//\r
// CurrentStage is iSCSI Full Feature, it's the Login-Final Response,\r
// get the TSIH from the Login Response.\r
//\r
- Session->TSIH = NTOHS (LoginRsp->TSIH);\r
+ Session->Tsih = NTOHS (LoginRsp->Tsih);\r
}\r
}\r
//\r
Len = ISCSI_GET_DATASEG_LEN (Header);\r
if (Len == 0) {\r
//\r
- // No data segment.\r
+ // No data segment.Form the pdu from a list of pdu segments.\r
//\r
- goto FORM_PDU;\r
+ *Pdu = NetbufFromBufList (NbufList, 0, 0, IScsiFreeNbufList, NbufList);\r
+ if (*Pdu == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
+ return Status;\r
}\r
//\r
// Get the length of the padding bytes of the data segment.\r
NetbufTrim (DataSeg, PadLen, NET_BUF_TAIL);\r
}\r
\r
-FORM_PDU:\r
//\r
// Form the pdu from a list of pdu segments.\r
//\r
\r
Random = NET_RANDOM (NetRandomInitSeed ());\r
\r
- Session->ISID[0] = ISID_BYTE_0;\r
- Session->ISID[1] = ISID_BYTE_1;\r
- Session->ISID[2] = ISID_BYTE_2;\r
- Session->ISID[3] = ISID_BYTE_3;\r
- Session->ISID[4] = (UINT8) Random;\r
- Session->ISID[5] = (UINT8) (Random >> 8);\r
+ Session->Isid[0] = ISID_BYTE_0;\r
+ Session->Isid[1] = ISID_BYTE_1;\r
+ Session->Isid[2] = ISID_BYTE_2;\r
+ Session->Isid[3] = ISID_BYTE_3;\r
+ Session->Isid[4] = (UINT8) Random;\r
+ Session->Isid[5] = (UINT8) (Random >> 8);\r
\r
InitializeListHead (&Session->Conns);\r
InitializeListHead (&Session->TcbList);\r
}\r
\r
- Session->TSIH = 0;\r
+ Session->Tsih = 0;\r
\r
Session->CmdSN = 1;\r
Session->InitiatorTaskTag = 1;\r
- Session->NextCID = 1;\r
+ Session->NextCid = 1;\r
\r
Session->TargetPortalGroupTag = 0;\r
Session->MaxConnections = ISCSI_MAX_CONNS_PER_SESSION;\r