Results 101 comments of jwt27

Looking at Wireshark on the Linux side: ![image](https://github.com/gvanem/Watt-32/assets/5897442/c3304225-5d60-4452-b3df-2ed504aaa068) It uses the TCP timestamp option and window size of 3MB. Window size does always stay constant. ACKs are sent fairly late....

Thinking out loud: Problem is the delay between receiving the last packet and sending a window update. We can receive packets pretty quick, but then it takes a while before...

Hm, not likely. I do think the Nagle implementation is slightly wrong, but that is another topic. I've done some more experimenting. If I remove the window update treshold, the...

To elaborate on the "slightly wrong" Nagle mode: While there is still unacked data, it's supposed to send only whole segments. But if we have a whole segment and a...

Oh now you're on to something. I had been using the default, which I thought should be rdtsc. I saw you can toggle it with environment var `USE_RDTSC`. So I...

This would all make sense if the timer code was using `gettimeofday()` since that is a very slow function. So that could be the "fairly constant delay" I was talking...

I did some benchmarking: ```c #include #include static uint64_t rdtsc() { uint64_t count; asm volatile ("rdtsc" : "=A" (count)); return count; } int main() { uint64_t begin, end; init_misc(); //hires_timer(0);...

> > But maybe there is some reason why you hadn't done that? > > Perhaps. But like I wrote earlier, there is some years since I wrote that. >...

Was wondering, why does the BSD interface call `tcp_Retransmitter (TRUE)` everywhere? Is it just to poll for ARP lookups?

I see, there's a lot going on there. But normally that is on a timer (`tcp_RETRAN_TIME`), called from `tcp_tick()`. Why does the BSD interface need to bypass that timer? I...