zhhyu7 commented on PR #17358:
URL: https://github.com/apache/nuttx/pull/17358#issuecomment-3726933939

   > 
   > Surely but with 10.3.0 atleast IOB could get full and not deadlock this 
easily, right now the first occurence of a full with IOB with TCP traffic 
yields a deadlock for me, This is most likely more logical/state machine 
problem.
   Hi @PetervdPerk-NXP , The issue of the protocol stack getting stuck, caused 
by the case where TCP cannot process TCP_ACK because the transmit queue fills 
up the IOB so the driver fails to allocate an IOB, which in turn leads to the 
inability to release TCP write buffer resources, should have always existed, 
especially in scenarios where the total amount of iob is small, such as less 
than 16k. Another scenario that can cause the protocol stack getting stuck is 
when the application never reads the packets in the protocol stack's readahead. 
The probability of the second scenario occurring can be reduced by limiting 
CONFIG_NET_RECV_BUFSIZE.
   
   Let's focus on the first scenario. To avoid the occurrence of this scenario.
   If it is a scenario where CONFIG_IOB_THROTTLE=0, then 
CONFIG_NET_SEND_BUFSIZE needs to be restricted to be less than 
```CONFIG_IOB_NBUFFERS*CONFIG_IOB_BUFSIZE / The number of TCP sockets that the 
business may create```, can largely alleviate this problem, but since IOB may 
not always fully utilize all buffers, there is still a certain risk.
   If it is a scenario where CONFIG_IOB_THROTTLE>0, we'd better set IOB in the 
TX direction to throttle=true and in the RX direction to throttle=false, which 
is not quite consistent with the current allocation logic. If this suggestion 
is approved, a patch needs to be submitted to modify the IOB allocation logic 
accordingly. In this case, there is no need to impose overly strict 
restrictions on CONFIG_NET_SEND_BUFSIZE, but scenarios where the application 
does not read readahead for a long time still need to be avoided. Therefore, it 
is best to impose appropriate restrictions on CONFIG_NET_RECV_BUFSIZE, which 
should completely avoid the issue of the protocol stack getting stuck.
   
   Optimization of performance requires further specialized analysis and 
solution design.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to