-
Notifications
You must be signed in to change notification settings - Fork 3k
lwIP: Enable TCP out-of-order processing #6882
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Our config file for lwIP had TCP_QUEUE_OOSEQ disabled - this can cause significant performance problems, as observed during testing. One lost packet can lock an input stream into a mode where the transmitter keeps thinking packets are being lost, so keeps slowing down. This caused test failures - a transfer that would normally take 10s hit a 60s timeout. Turning this on increases code size, but doesn't significantly increase static memory use. The memory used for out-of-order packets comes from the same pbuf pool as for outgoing TCP segments, so there is contention when running bidirectionally. Out-of-order processing is on by default for lwIP - this seems to be another example of us excessively paring it back.
This is intended to solve a problem observed here: #6665 |
Static memory change with this, for development build. Current build:
Enabling
This increase is only for images using lwIP with TCP enabled. |
/morph build |
Build : SUCCESSBuild number : 1990 Triggering tests/morph test |
Test : SUCCESSBuild number : 1801 |
Exporter Build : SUCCESSBuild number : 1643 |
Description
Our config file for lwIP had TCP_QUEUE_OOSEQ disabled - this can
cause significant performance problems, as observed during testing.
One lost packet can lock an input stream into a mode where the
transmitter keeps thinking packets are being lost, so keeps slowing
down. This caused test failures - a transfer that would normally
take 10s hit a 60s timeout.
Turning this on increases code size, but doesn't significantly increase
static memory use. The memory used for out-of-order packets comes from
the same pbuf pool as for outgoing TCP segments, so there is contention
when running bidirectionally.
Out-of-order processing is on by default for lwIP - this seems to be
another example of us excessively paring it back.
Pull request type