//\r
if ( SOCKET_STATE_CONNECTED == pSocket->State ) {\r
//\r
- // Locate the port\r
+ // Verify that there is enough room to buffer another\r
+ // transmit operation\r
//\r
- pPort = pSocket->pPortList;\r
- if ( NULL != pPort ) {\r
+ pTxBytes = &pSocket->TxBytes;\r
+ if ( pSocket->MaxTxBuf > *pTxBytes ) {\r
//\r
- // Determine the queue head\r
+ // Locate the port\r
//\r
- pUdp4 = &pPort->Context.Udp4;\r
- pTxBytes = &pSocket->TxBytes;\r
+ pPort = pSocket->pPortList;\r
+ while ( NULL != pPort ) {\r
+ //\r
+ // Determine the queue head\r
+ //\r
+ pUdp4 = &pPort->Context.Udp4;\r
\r
- //\r
- // Verify that there is enough room to buffer another\r
- // transmit operation\r
- //\r
- if ( pSocket->MaxTxBuf > *pTxBytes ) {\r
//\r
// Attempt to allocate the packet\r
//\r
// Free the packet\r
//\r
EslSocketPacketFree ( pPacket, DEBUG_TX );\r
+ break;\r
}\r
\r
//\r
// Packet allocation failed\r
//\r
pSocket->errno = ENOMEM;\r
+ break;\r
}\r
- }\r
- else {\r
+\r
//\r
- // Not enough buffer space available\r
+ // Set the next port\r
//\r
- pSocket->errno = EAGAIN;\r
- Status = EFI_NOT_READY;\r
+ pPort = pPort->pLinkSocket;\r
}\r
}\r
+ else {\r
+ //\r
+ // Not enough buffer space available\r
+ //\r
+ pSocket->errno = EAGAIN;\r
+ Status = EFI_NOT_READY;\r
+ }\r
}\r
\r
//\r