[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-users] TCP - "last_unsent->oversize_left >= oversize_used" asserts
From: |
Sylvain Rochet |
Subject: |
[lwip-users] TCP - "last_unsent->oversize_left >= oversize_used" asserts |
Date: |
Sat, 30 Jun 2012 18:37:35 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Hi,
I am using the TCP raw API for a tiny-tiny telnet implementation. I am
enqueuing output data using tcp_write(). Actually I am currently using
tcp_write() to do all the queueing job by calling it even 10 or 20 times
in a row with small amount of data, especially when output is mostly
made of static strings.
Finally, once the telnet output of the processed shell command is
enqueued, I am calling tcp_output() in order to improve telnet shell
responsiveness.
While I am queuing less data than TCP_MSS, everything works perfectly.
However, if I am queueing more than TCP_MSS but still less than
TCP_SND_BUF, I am starting having the following assert:
"last_unsent->oversize_left >= oversize_used
unsent_oversize mismatch (pcb->unsent is NULL)"
Generally followed by this assert for each next tcp_write():
"tcp_write: pbufs on queue => at least one queue non-empty
tcp_receive: valid queue length"
Note that tcp_write() always returns ERR_OK. Also, I am calling
tcp_write() and tcp_output() out of the lwIP thread, I supposed the lwIP
RAW API thread safe.
Here are the relevant part of lwipopts.h:
#define MEMP_NUM_TCP_PCB 10
#define MEMP_NUM_TCP_PCB_LISTEN 1
#define MEMP_NUM_TCP_SEG 12
#define TCP_TTL 255
#define TCP_WND 2048
#define TCP_QUEUE_OOSEQ 1
#define TCP_MSS 1024
#define TCP_SND_BUF 2048
#define TCP_SND_QUEUELEN 6 * TCP_SND_BUF/TCP_MSS
#define TCP_MAXRTX 6
#define TCP_SYNMAXRTX 6
What I am doing wrong ? :-)
Thank you very much.
Sylvain
signature.asc
Description: Digital signature
- [lwip-users] TCP - "last_unsent->oversize_left >= oversize_used" asserts,
Sylvain Rochet <=