lwIP - A Lightweight TCP/IP stack - Patches: patch #7858, Patch for window scaling support...
You are not allowed to post comments on this tracker with your current authentication level.
patch #7858: Patch for window scaling support for lwip-1.4.0
Submitter: | christian <xtian> | ||
Submitted: | Fri 05 Oct 2012 10:35:40 AM UTC | ||
Category: | TCP | Priority: | 5 - Normal |
Status: | Done | Privacy: | Public |
Assigned to: | goldsimon | Open/Closed: | Closed |
Planned Release: | None |
Fri 07 Feb 2014 10:11:45 AM UTC, comment #3: |
christian <xtian> |
Fri 07 Feb 2014 09:43:07 AM UTC, comment #2: BTW: I dropped the changes in memp.h/.c: what did you need them for? Are there any elements bigger than 64KByte? Or did any of the pools have more that 65535 elements? |
Simon Goldschmidt <goldsimon> |
Fri 07 Feb 2014 08:53:35 AM UTC, comment #1: I've just pushed this patch, although I had to tweak a few things it applied quite cleanly. Thanks.
|
Simon Goldschmidt <goldsimon> |
Fri 05 Oct 2012 10:35:40 AM UTC, original submission:
This patch provides window scaling option on lwip-1.4.0.
|
christian <xtian> |
Depends on the following items: None found
Items that depend on this one: None found
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
Follow 7 latest changes.
Date | Changed by | Updated Field | Previous Value | => | Replaced by |
---|---|---|---|---|---|
2014-02-07 | goldsimon | Status | None | Done | |
Assigned to | None | goldsimon | |||
Open/Closed | Open | Closed | |||
2013-05-06 | alex_ab | Attached File | - | Added window_scaling_1_4_1.patch, #28026 | |
2013-01-15 | goldsimon | Category | None | TCP | |
2012-10-05 | xtian | Attached File | - | Added window_scaling.patch, #26702 | |
Carbon-Copy | - | Added -email is unavailable- |
Powered by Savane 3.13-f8d8.
Corresponding source code
Hi all:
After submitting the patch we discovered some problems when large windows are supported with high bandwidth. In tcp_receive, the pcb->acked was updated and truncated to 16 bits, limiting the effective window (and bandwidth). The original code was:
/* Update the send buffer space. Diff between the two can never exceed 64K? */
pcb->acked = (u16_t)(ackno - pcb->lastack);
To achieve high bandwidths we needed to use 32 bits because this diff can indeed be more than 64KB, and ended up with:
/* Update the send buffer space. Diff between the two can never exceed 64K? */
/* Yes, this might happen with high BW and Jumbo frames. We change the size of the acked to 32bit. Otherwise, ACKs maybe lost*/
pcb->acked = (u32_t)(ackno - pcb->lastack);
with acked field of 32 bits.
Cheers.