pConfigData = (VOID *)pBuffer;\r
\r
//\r
- // Attempt to use this configuration\r
+ // Validate that the port is connected\r
//\r
- Status = pPort->pfnConfigure ( pPort->pProtocol.v, pConfigData );\r
+ Status = pPort->pSocket->pApi->pfnVerifyLocalIpAddress ( pPort, pBuffer );\r
if ( EFI_ERROR ( Status )) {\r
DEBUG (( DEBUG_WARN | DEBUG_BIND,\r
- "WARNING - Port 0x%08x failed configuration, Status: %r\r\n",\r
+ "WARNING - Port 0x%08x invalid IP address: %r\r\n",\r
pPort,\r
Status ));\r
pPort->pSocket->errno = ErrnoValue;\r
}\r
else {\r
//\r
- // Reset the port\r
+ // Attempt to use this configuration\r
//\r
- Status = pPort->pfnConfigure ( pPort->pProtocol.v, NULL );\r
+ Status = pPort->pfnConfigure ( pPort->pProtocol.v, pConfigData );\r
if ( EFI_ERROR ( Status )) {\r
- DEBUG (( DEBUG_ERROR | DEBUG_BIND,\r
- "ERROR - Port 0x%08x failed configuration reset, Status: %r\r\n",\r
+ DEBUG (( DEBUG_WARN | DEBUG_BIND,\r
+ "WARNING - Port 0x%08x failed configuration, Status: %r\r\n",\r
pPort,\r
Status ));\r
- ASSERT ( EFI_SUCCESS == Status );\r
+ pPort->pSocket->errno = ErrnoValue;\r
+ }\r
+ else {\r
+ //\r
+ // Reset the port\r
+ //\r
+ Status = pPort->pfnConfigure ( pPort->pProtocol.v, NULL );\r
+ if ( EFI_ERROR ( Status )) {\r
+ DEBUG (( DEBUG_ERROR | DEBUG_BIND,\r
+ "ERROR - Port 0x%08x failed configuration reset, Status: %r\r\n",\r
+ pPort,\r
+ Status ));\r
+ ASSERT ( EFI_SUCCESS == Status );\r
+ }\r
}\r
}\r
\r
// Set the next state if connected\r
//\r
if ( EFI_NOT_READY != Status ) {\r
- if ( !EFI_ERROR ( Status )) {\r
- pSocket->State = SOCKET_STATE_CONNECTED;\r
-\r
- //\r
- // Start the receive operations\r
- //\r
- EslSocketRxStart ( pSocket->pPortList );\r
- }\r
- else {\r
+ if ( EFI_ERROR ( Status )) {\r
pSocket->State = SOCKET_STATE_BOUND;\r
}\r
}\r
<ul>\r
<li>::EslIp4Receive to restart the receive engine to release flow control.</li>\r
<li>::EslIp4RxComplete to continue the operation of the receive engine if flow control is not being applied.</li>\r
- <li>::EslIp4SocketIsConfigured to start the recevie engine for the new socket.</li>\r
+ <li>::EslIp4SocketIsConfigured to start the receive engine for the new socket.</li>\r
<li>::EslTcp4ListenComplete to start the recevie engine for the new socket.</li>\r
<li>::EslTcp4Receive to restart the receive engine to release flow control.</li>\r
<li>::EslTcp4RxComplete to continue the operation of the receive engine if flow control is not being applied.</li>\r
*ppActive = pIo;\r
}\r
else {\r
+ //\r
+ // Display the transmit error\r
+ //\r
+ DEBUG (( DEBUG_TX | DEBUG_INFO,\r
+ "0x%08x, 0x%08x: pIo, pPacket transmit failure: %r\r\n",\r
+ pIo,\r
+ pPacket,\r
+ Status ));\r
if ( EFI_SUCCESS == pSocket->TxError ) {\r
pSocket->TxError = Status;\r
}\r
\r
+ //\r
+ // Free the IO structure\r
+ //\r
+ pIo->pNext = *ppFree;\r
+ *ppFree = pIo;\r
+\r
//\r
// Discard the transmit buffer\r
//\r