On Wed, Nov 16, 2022 at 10:59 AM Tobias Fiebig <tob...@fiebig.nl> wrote: > > Heho, > I just tested around with the patch; > Good news: Certainly my builds are being executed. Also, if I patch the old > code to have a MAX_MTU <= the max MTU on my path, throughput is ok. > > Bad news: Something is wrong with getting the MSS in the patch you shared. > When enabling DPRINT, values are off (sent MSS vs. printed MSS): > 600 2060 > 800 2308 > 1000 2316 > 1023 2307 > 1200 3076 > 1400 3340 (most likely clamped to 1320) > > Fiddling around a bit more, I found txdw0 printed earlier in the stack as hex > (sent MSS, txdw0): > 769 900502f5 > 1000 900503dc > 1280 900504f4 > 1281 900504f5 > 1301 90050509 > 1317 90050519 > 1320 9005051c > > This maps rather well to: > MSS = txdw0 - 2416246772 > MSS = txdw0 - 9004FFF4 > > Sadly, my C is 'non-existent' and it is kind-of 4AM, so also not in the > brainspace to fill those gaps. But if one of you could look at the patch > again, that would be nice. Otherwise, I should have some brainspace for this > tomorrow night (UTC) again. >
Ok, I think I found at least one issue: /* large send MSS mask, bits 16...25 */ #define CP_TC_LGSEN_MSS_MASK ((1 << 12) - 1) First, MSS occupies 11 bits from 16 to 26 Second, the mask is wrong it should be ((1 << 11) - 1) Thanks > With best regards, > Tobias >