/// <summary>
        /// Initialize receive SMBDirect data transfer test case
        /// And send the SMB2 READ request to peer
        /// </summary>
        /// <param name="maxReceiveCredit"></param>
        /// <param name="maxSendCredit"></param>
        /// <param name="smb2ReadResponseSize"></param>
        /// <param name="isUseMaxSendSize"></param>
        public void Initialize_ReceiveSmbdDataTransferTestCase(
            ushort maxReceiveCredit,
            ushort maxSendCredit,
            uint smb2ReadResponseSize,
            bool isUseMaxSendSize = false)
        {
            BaseTestSite.Log.Add(LogEntryKind.TestStep, "Connect to server over RDMA");
            NtStatus status = smbdAdapter.ConnectToServerOverRDMA();

            BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMBD connection is {0}", status);

            BaseTestSite.Log.Add(LogEntryKind.TestStep, "SMBD Negotiate");
            SmbdNegotiateResponse response;

            status = smbdAdapter.SmbdNegotiate(maxSendCredit, maxReceiveCredit, out response);
            BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMBD negotiate is {0}", status);

            // SMB2 Negotiate, Session Setup, Tree Connect and Create
            BaseTestSite.Log.Add(LogEntryKind.TestStep, "Establish SMB2 connection and open file " + smbdAdapter.TestConfig.TestFileName_LargeFile);
            status = smbdAdapter.Smb2EstablishSessionAndOpenFile(smbdAdapter.TestConfig.TestFileName_LargeFile);
            BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMB2 establish session and open file is {0}", status);

            // calculate file size and generate file content
            int receivedFileSize = (int)smb2ReadResponseSize -
                                   Smb2OverSmbdTestClient.READ_RESPONSE_HEADER_SIZE;// calculate the file content size

            if (isUseMaxSendSize)
            {
                receivedFileSize = (int)(smbdAdapter.ClientConnection.MaxReceiveSize -
                                         Smb2OverSmbdTestClient.READ_RESPONSE_HEADER_SIZE);
            }

            byte[] readRequestPacket = smbdAdapter.Smb2GetReadRequest((uint)receivedFileSize);

            BaseTestSite.Log.Add(LogEntryKind.TestStep, "Send SMB2 Read request over RDMA");
            status = (NtStatus)smbdAdapter.SmbdSendDataTransferMessage(
                maxReceiveCredit,
                0,
                SmbdDataTransfer_Flags.NONE,
                0,
                (uint)SmbdDataTransferMessage.DEFAULT_DATA_OFFSET,
                (uint)readRequestPacket.Length,
                readRequestPacket
                );
            BaseTestSite.Assert.AreEqual <NtStatus>(status, NtStatus.STATUS_SUCCESS, "Status of send SMB2 Read request is {0}", status);
        }