I'm agree with Simon, your recvmbox should be big enought to recv enought 
packets (more than TCP_WND - problem, TCP_WND is in bytes, the recvmbox will 
contains packets). So, find the good nucleus setting, or implement your own one 
(take a look to unix or msvc6 port).

About the CS8900A driver, take a look to these links

http://cvs.savannah.nongnu.org/viewvc/*checkout*/contrib/ports/old/c16x/netif/cs8900if.c?root=lwip
https://savannah.nongnu.org/bugs/index.php?20531
  ----- Original Message ----- 
  From: Bikram Chatterjee 
  To: Mailing list for lwIP users 
  Sent: Tuesday, November 06, 2007 8:00 PM
  Subject: [lwip-users] Deadlock


  Hello everybody,

  If you already have discussed it in some threads please forgive me and help 
me with a link to that thread.

  I was porting lwIP (I am using latest code from CVS, not any stable build) 
for Nucleus running on a ARM9 core uP. I am stuck with the following problem; 
this looks like a deadlock: 

  I have a TCP client (a single socket in a single thread) doing HTTP download 
from a remote server. I have CS8900A ethernet driver (btw I have heard in some 
sites that there is a CS8900A driver implementation available for lwIP, but 
could not find any). posting packets throught netif->input (tcpip_input) into 
'mbox' mailbox. After receiving a few segments everything stops working. I did 
some investigation and saw that tcpip_thread is waiting on conn->recvmbox to 
post received packets as mailbox posts on full mailboxes are blocking. Driver 
is waiting on mbox to post packets it has received. Application is waiting on 
mbox to post do_recv API message. I have investigated further and found out 
that in netconn_recv we should actually keep emptying conn->recvmbox in order 
for the tcpip_thread to keep going. 

  In the case of Nucleus the mailbox size is only four and if it so happen that 
to consume a single TCP segment application thread  takes as much time as 9 
segments are produced by the driver then by the time application thread comes 
to post do_recv into mbox it is already filled up by driver. 

  I have observed that adjusting the priority of three threads properly; it can 
be handled but for multiple thread each fetching using a number of sockets will 
lead to the same problem.

  Please help me with some light. Am I missing something obvious? 

  Thanks in advance,
  Bikram

  -- 
  Bikram Chatterjee
  Senior Engineer
  Alumnus Software Limited
  Kolkata 


------------------------------------------------------------------------------


  _______________________________________________
  lwip-users mailing list
  lwip-users@nongnu.org
  http://lists.nongnu.org/mailman/listinfo/lwip-users
_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to