lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] 1.3.0 Converting issues - chained pbuf, parts sent twice


From: Alan L
Subject: [lwip-users] 1.3.0 Converting issues - chained pbuf, parts sent twice
Date: Wed, 30 Jul 2008 11:48:07 -0700 (PDT)

I'm running an AT91SAM7X256 port, working to update from 1.1.0.

1.3.0 is working for me, but not yet stable.
Below is the debug output and attached is the wireshark log of my recent
problem.

In the debug output, tcp_write is called 4 times to serve the web page.  The
3rd and 4th writes (37 and 407 bytes) result in tcp_enqueue chaining the
segments to a 446 byte length (1.1.0 sent them separately).  The problem is
the wireshark log shows the 446 byte packet was sent, but the ~407 bytes
that were chained are sent again, but without any tcp header - just raw data
(see wireshark No. 16, duplicate data sent in No. 12).

Maybe related, but for another post...
1. After serving the web page, sys_timeout soon locks infinitely, stuck in
the for loop with t->time = 0
                for ( t = timeouts->next; t != NULL; t = t->next )
                {
                        timeout->time -= t->time;
                        if ( t->next == NULL || t->next->time >
timeout->time )
                        {
                                if ( t->next != NULL )
                                {
                                        t->next->time -= timeout->time;
                                }
                                timeout->next = t->next;
                                t->next = timeout;
                                break;
                        }
2. Streaming sockets are also unstable, locking up after an indeterminate
time (4Hz stream, 400byte packets, ~40s).

Thanks for any clues to my problem,
Alan

Wireshark log...

http://www.nabble.com/file/p18740088/lwip1.3.0%2Bchain%2Bsegment.pcap
lwip1.3.0+chain+segment.pcap 

Debug output...

tcpip_thread: PACKET 0020b1e0
TCP connection request 3503 -> 80.
tcp_enqueue(pcb=0020a2a8, arg=00000000, len=0, flags=12, apiflags=0)
tcp_enqueue: queueing 6510:6511 (0x12)
tcp_output_segment: rtseq 6510
tcp_output_segment: 6510:6510
tcpip_thread: PACKET 0020b1ec
TCP connection established 3503 -> 80.
tcp_receive: pcb->rttest 0 rtseq 6510 ackno 6511
tcp_output: nothing to send (00000000)
tcpip_thread: PACKET 0020b1f8
tcp_receive: pcb->rttest 0 rtseq 6510 ackno 6511
tcp_output: nothing to send (00000000)
tcpip_thread: API message 00201d54
tcp_output: sending ACK for 831910837
tcp_recved: recveived 373 bytes, wnd 2920 (0).
tcpip_thread: API message 00201d5c
tcp_write(pcb=0020a2a8, data=00205694, len=979, apiflags=1)
tcp_enqueue(pcb=0020a2a8, arg=00205694, len=979, flags=0, apiflags=1)
tcp_enqueue: queueing 6511:7490 (0x0)
tcp_output_segment: rtseq 6511
tcp_output_segment: 6511:7490
tcpip_thread: API message 00201c80
tcp_write(pcb=0020a2a8, data=00205694, len=984, apiflags=1)
tcp_enqueue(pcb=0020a2a8, arg=00205694, len=984, flags=0, apiflags=1)
tcp_enqueue: queueing 7490:8474 (0x0)
tcpip_thread: PACKET 0020b204
tcp_receive: pcb->rttest 0 rtseq 6511 ackno 7490
tcp_output_segment: rtseq 7490
tcp_output_segment: 7490:8474
tcpip_thread: API message 00201d5c
tcp_write(pcb=0020a2a8, data=00205694, len=39, apiflags=1)
tcp_enqueue(pcb=0020a2a8, arg=00205694, len=39, flags=0, apiflags=1)
tcp_enqueue: queueing 8474:8513 (0x0)
tcpip_thread: API message 00201d5c
tcp_write(pcb=0020a2a8, data=00205694, len=407, apiflags=1)
tcp_enqueue(pcb=0020a2a8, arg=00205694, len=407, flags=0, apiflags=1)
tcp_enqueue: queueing 8513:8920 (0x0)
tcp_enqueue: chaining segments, new len 446
tcpip_thread: API message 00201d6c
tcp_close: closing in State: ESTABLISHED tcp_enqueue(pcb=0020a2a8,
arg=00000000, len=0, flags=1, apiflags=1)
tcp_enqueue: queueing 8920:8921 (0x1)
tcp_output_segment: rtseq 8474
tcp_output_segment: 8474:8920
tcp_output_segment: rtseq 8920
tcp_output_segment: 8920:8920
tcpip_thread: API message 00201dac
tcpip_thread: PACKET 0020b210
tcp_receive: pcb->rttest 0 rtseq 8920 ackno 8474
tcp_output: nothing to send (00000000)
tcpip_thread: PACKET 0020b1a0
tcp_receive: pcb->rttest 0 rtseq 8920 ackno 8920
tcp_output: nothing to send (00000000)
tcpip_thread: PACKET 0020b160
tcp_receive: pcb->rttest 0 rtseq 8920 ackno 8921
tcp_output: nothing to send (00000000)
tcpip_thread: PACKET 0020b120
tcp_receive: pcb->rttest 0 rtseq 8920 ackno 8921 TCP connection closed 3503
-> 80.
tcp_pcb_purge
tcp_output: sending ACK for 831910838
tcp_slowtmr: no active pcbs
tcpip: ip_reass_tmr()
tcp_slowtmr: no active pcbs
tcp_slowtmr: no active pcbs
tcpip_thread: PACKET 0020b12c
tcp_output: sending ACK for 831910838
tcp_output: nothing to send (00000000)
tcpip_thread: PACKET 0020b138
tcp_output: nothing to send (00000000)
tcpip: ip_reass_tmr()
tcp_slowtmr: no active pcbs
tcp_slowtmr: no active pcbs

-- 
View this message in context: 
http://www.nabble.com/1.3.0-Converting-issues---chained-pbuf%2C-parts-sent-twice-tp18740088p18740088.html
Sent from the lwip-users mailing list archive at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]