|
878 | 878 | /* If possible, advertise an RX window size of at least 1 MSS, otherwise |
879 | 879 | * the peer might start 'zero window probing', i.e. sending small packets |
880 | 880 | * (1, 2, 4, 8... bytes). */ |
881 | | - if( ( ulSpace < pxSocket->u.xTCP.usCurMSS ) && ( ulFrontSpace >= pxSocket->u.xTCP.usCurMSS ) ) |
| 881 | + if( ( ulSpace < pxSocket->u.xTCP.usMSS ) && ( ulFrontSpace >= pxSocket->u.xTCP.usMSS ) ) |
882 | 882 | { |
883 | | - ulSpace = pxSocket->u.xTCP.usCurMSS; |
| 883 | + ulSpace = pxSocket->u.xTCP.usMSS; |
884 | 884 | } |
885 | 885 |
|
886 | 886 | /* Avoid overflow of the 16-bit win field. */ |
|
1085 | 1085 | ipconfigTCP_MSS * pxSocket->u.xTCP.uxTxWinSize, |
1086 | 1086 | pxSocket->u.xTCP.xTCPWindow.rx.ulCurrentSequenceNumber, |
1087 | 1087 | pxSocket->u.xTCP.xTCPWindow.ulOurSequenceNumber, |
1088 | | - ( uint32_t ) pxSocket->u.xTCP.usInitMSS ); |
| 1088 | + ( uint32_t ) pxSocket->u.xTCP.usMSS ); |
1089 | 1089 | } |
1090 | 1090 | /*-----------------------------------------------------------*/ |
1091 | 1091 |
|
|
1225 | 1225 | /* Only set the SYN flag. */ |
1226 | 1226 | pxTCPPacket->xTCPHeader.ucTCPFlags = tcpTCP_FLAG_SYN; |
1227 | 1227 |
|
1228 | | - /* Set the values of usInitMSS / usCurMSS for this socket. */ |
| 1228 | + /* Set the value of usMSS for this socket. */ |
1229 | 1229 | prvSocketSetMSS( pxSocket ); |
1230 | 1230 |
|
1231 | 1231 | /* The initial sequence numbers at our side are known. Later |
|
1429 | 1429 | * endian number. */ |
1430 | 1430 | uxNewMSS = usChar2u16( &( pucPtr[ 2 ] ) ); |
1431 | 1431 |
|
1432 | | - if( pxSocket->u.xTCP.usInitMSS != uxNewMSS ) |
| 1432 | + if( pxSocket->u.xTCP.usMSS != uxNewMSS ) |
1433 | 1433 | { |
1434 | 1434 | /* Perform a basic check on the the new MSS. */ |
1435 | 1435 | if( uxNewMSS == 0U ) |
|
1441 | 1441 | } |
1442 | 1442 | else |
1443 | 1443 | { |
1444 | | - FreeRTOS_debug_printf( ( "MSS change %u -> %lu\n", pxSocket->u.xTCP.usInitMSS, uxNewMSS ) ); |
| 1444 | + FreeRTOS_debug_printf( ( "MSS change %u -> %lu\n", pxSocket->u.xTCP.usMSS, uxNewMSS ) ); |
1445 | 1445 | } |
1446 | 1446 | } |
1447 | 1447 |
|
1448 | 1448 | /* If a 'return' condition has not been found. */ |
1449 | 1449 | if( xReturn == pdFALSE ) |
1450 | 1450 | { |
1451 | | - if( pxSocket->u.xTCP.usInitMSS > uxNewMSS ) |
| 1451 | + if( pxSocket->u.xTCP.usMSS > uxNewMSS ) |
1452 | 1452 | { |
1453 | 1453 | /* our MSS was bigger than the MSS of the other party: adapt it. */ |
1454 | 1454 | pxSocket->u.xTCP.bits.bMssChange = pdTRUE_UNSIGNED; |
1455 | 1455 |
|
1456 | | - if( pxSocket->u.xTCP.usCurMSS > uxNewMSS ) |
| 1456 | + if( pxSocket->u.xTCP.usMSS > uxNewMSS ) |
1457 | 1457 | { |
1458 | 1458 | /* The peer advertises a smaller MSS than this socket was |
1459 | 1459 | * using. Use that as well. */ |
1460 | | - FreeRTOS_debug_printf( ( "Change mss %d => %lu\n", pxSocket->u.xTCP.usCurMSS, uxNewMSS ) ); |
1461 | | - pxSocket->u.xTCP.usCurMSS = ( uint16_t ) uxNewMSS; |
| 1460 | + FreeRTOS_debug_printf( ( "Change mss %d => %lu\n", pxSocket->u.xTCP.usMSS, uxNewMSS ) ); |
| 1461 | + pxSocket->u.xTCP.usMSS = ( uint16_t ) uxNewMSS; |
1462 | 1462 | } |
1463 | 1463 |
|
1464 | 1464 | pxTCPWindow->xSize.ulRxWindowLength = ( ( uint32_t ) uxNewMSS ) * ( pxTCPWindow->xSize.ulRxWindowLength / ( ( uint32_t ) uxNewMSS ) ); |
1465 | 1465 | pxTCPWindow->usMSSInit = ( uint16_t ) uxNewMSS; |
1466 | 1466 | pxTCPWindow->usMSS = ( uint16_t ) uxNewMSS; |
1467 | | - pxSocket->u.xTCP.usInitMSS = ( uint16_t ) uxNewMSS; |
1468 | | - pxSocket->u.xTCP.usCurMSS = ( uint16_t ) uxNewMSS; |
| 1467 | + pxSocket->u.xTCP.usMSS = ( uint16_t ) uxNewMSS; |
1469 | 1468 | } |
1470 | 1469 |
|
1471 | 1470 | uxIndex = tcpTCP_OPT_MSS_LEN; |
|
1595 | 1594 |
|
1596 | 1595 |
|
1597 | 1596 | /* 'xTCP.uxRxWinSize' is the size of the reception window in units of MSS. */ |
1598 | | - uxWinSize = pxSocket->u.xTCP.uxRxWinSize * ( size_t ) pxSocket->u.xTCP.usInitMSS; |
| 1597 | + uxWinSize = pxSocket->u.xTCP.uxRxWinSize * ( size_t ) pxSocket->u.xTCP.usMSS; |
1599 | 1598 | ucFactor = 0U; |
1600 | 1599 |
|
1601 | 1600 | while( uxWinSize > 0xffffUL ) |
|
1607 | 1606 |
|
1608 | 1607 | FreeRTOS_debug_printf( ( "prvWinScaleFactor: uxRxWinSize %u MSS %u Factor %u\n", |
1609 | 1608 | ( unsigned ) pxSocket->u.xTCP.uxRxWinSize, |
1610 | | - ( unsigned ) pxSocket->u.xTCP.usInitMSS, |
| 1609 | + ( unsigned ) pxSocket->u.xTCP.usMSS, |
1611 | 1610 | ucFactor ) ); |
1612 | 1611 |
|
1613 | 1612 | return ucFactor; |
|
1634 | 1633 | static UBaseType_t prvSetSynAckOptions( FreeRTOS_Socket_t * pxSocket, |
1635 | 1634 | TCPHeader_t * pxTCPHeader ) |
1636 | 1635 | { |
1637 | | - uint16_t usMSS = pxSocket->u.xTCP.usInitMSS; |
| 1636 | + uint16_t usMSS = pxSocket->u.xTCP.usMSS; |
1638 | 1637 | UBaseType_t uxOptionsLength; |
1639 | 1638 |
|
1640 | 1639 | /* We send out the TCP Maximum Segment Size option with our SYN[+ACK]. */ |
|
2047 | 2046 | * along with the position in the txStream. |
2048 | 2047 | * Why check for MSS > 1 ? |
2049 | 2048 | * Because some TCP-stacks (like uIP) use it for flow-control. */ |
2050 | | - if( pxSocket->u.xTCP.usCurMSS > 1U ) |
| 2049 | + if( pxSocket->u.xTCP.usMSS > 1U ) |
2051 | 2050 | { |
2052 | 2051 | lDataLen = ( int32_t ) ulTCPWindowTxGet( pxTCPWindow, pxSocket->u.xTCP.ulWindowSize, &lStreamPos ); |
2053 | 2052 | } |
|
2663 | 2662 |
|
2664 | 2663 | if( xTCPWindowLoggingLevel >= 0 ) |
2665 | 2664 | { |
2666 | | - FreeRTOS_debug_printf( ( "MSS: sending %d\n", pxSocket->u.xTCP.usCurMSS ) ); |
| 2665 | + FreeRTOS_debug_printf( ( "MSS: sending %d\n", pxSocket->u.xTCP.usMSS ) ); |
2667 | 2666 | } |
2668 | 2667 |
|
2669 | 2668 | pxTCPHeader->ucOptdata[ 0 ] = tcpTCP_OPT_MSS; |
2670 | 2669 | pxTCPHeader->ucOptdata[ 1 ] = tcpTCP_OPT_MSS_LEN; |
2671 | | - pxTCPHeader->ucOptdata[ 2 ] = ( uint8_t ) ( ( pxSocket->u.xTCP.usCurMSS ) >> 8 ); |
2672 | | - pxTCPHeader->ucOptdata[ 3 ] = ( uint8_t ) ( ( pxSocket->u.xTCP.usCurMSS ) & 0xffU ); |
| 2670 | + pxTCPHeader->ucOptdata[ 2 ] = ( uint8_t ) ( ( pxSocket->u.xTCP.usMSS ) >> 8 ); |
| 2671 | + pxTCPHeader->ucOptdata[ 3 ] = ( uint8_t ) ( ( pxSocket->u.xTCP.usMSS ) & 0xffU ); |
2673 | 2672 | uxOptionsLength = 4U; |
2674 | 2673 | pxTCPHeader->ucTCPOffset = ( uint8_t ) ( ( ipSIZE_OF_TCP_HEADER + uxOptionsLength ) << 2 ); |
2675 | 2674 | } |
|
2761 | 2760 | /* This socket was the one connecting actively so now perform the |
2762 | 2761 | * synchronisation. */ |
2763 | 2762 | vTCPWindowInit( &pxSocket->u.xTCP.xTCPWindow, |
2764 | | - ulSequenceNumber, pxSocket->u.xTCP.xTCPWindow.ulOurSequenceNumber, ( uint32_t ) pxSocket->u.xTCP.usCurMSS ); |
| 2763 | + ulSequenceNumber, pxSocket->u.xTCP.xTCPWindow.ulOurSequenceNumber, ( uint32_t ) pxSocket->u.xTCP.usMSS ); |
2765 | 2764 | pxTCPWindow->rx.ulHighestSequenceNumber = ulSequenceNumber + 1U; |
2766 | 2765 | pxTCPWindow->rx.ulCurrentSequenceNumber = ulSequenceNumber + 1U; |
2767 | 2766 | pxTCPWindow->tx.ulCurrentSequenceNumber++; /* because we send a TCP_SYN [ | TCP_ACK ]; */ |
|
3040 | 3039 |
|
3041 | 3040 | #if ipconfigUSE_TCP_WIN == 1 |
3042 | 3041 | { |
3043 | | - lMinLength = ( ( int32_t ) 2 ) * ( ( int32_t ) pxSocket->u.xTCP.usCurMSS ); |
| 3042 | + lMinLength = ( ( int32_t ) 2 ) * ( ( int32_t ) pxSocket->u.xTCP.usMSS ); |
3044 | 3043 |
|
3045 | 3044 | /* In case we're receiving data continuously, we might postpone sending |
3046 | 3045 | * an ACK to gain performance. */ |
|
3063 | 3062 | pxSocket->u.xTCP.pxAckMessage = *ppxNetworkBuffer; |
3064 | 3063 | } |
3065 | 3064 |
|
3066 | | - if( ( ulReceiveLength < ( uint32_t ) pxSocket->u.xTCP.usCurMSS ) || /* Received a small message. */ |
3067 | | - ( lRxSpace < ipNUMERIC_CAST( int32_t, 2U * pxSocket->u.xTCP.usCurMSS ) ) ) /* There are less than 2 x MSS space in the Rx buffer. */ |
| 3065 | + if( ( ulReceiveLength < ( uint32_t ) pxSocket->u.xTCP.usMSS ) || /* Received a small message. */ |
| 3066 | + ( lRxSpace < ipNUMERIC_CAST( int32_t, 2U * pxSocket->u.xTCP.usMSS ) ) ) /* There are less than 2 x MSS space in the Rx buffer. */ |
3068 | 3067 | { |
3069 | 3068 | pxSocket->u.xTCP.usTimeout = ( uint16_t ) tcpDELAYED_ACK_SHORT_DELAY_MS; |
3070 | 3069 | } |
|
3433 | 3432 |
|
3434 | 3433 | FreeRTOS_debug_printf( ( "prvSocketSetMSS: %lu bytes for %lxip:%u\n", ulMSS, pxSocket->u.xTCP.ulRemoteIP, pxSocket->u.xTCP.usRemotePort ) ); |
3435 | 3434 |
|
3436 | | - pxSocket->u.xTCP.usInitMSS = ( uint16_t ) ulMSS; |
3437 | | - pxSocket->u.xTCP.usCurMSS = ( uint16_t ) ulMSS; |
| 3435 | + pxSocket->u.xTCP.usMSS = ( uint16_t ) ulMSS; |
3438 | 3436 | } |
3439 | 3437 | /*-----------------------------------------------------------*/ |
3440 | 3438 |
|
|
0 commit comments