fjpanag commented on code in PR #7525: URL: https://github.com/apache/nuttx/pull/7525#discussion_r1038792888
########## net/tcp/tcp_conn.c: ########## @@ -586,16 +586,32 @@ FAR struct tcp_conn_s *tcp_alloc_conn(void) void tcp_initialize(void) { -#ifndef CONFIG_NET_ALLOC_CONNS int i; +#ifndef CONFIG_NET_ALLOC_CONNS for (i = 0; i < CONFIG_NET_TCP_CONNS; i++) { /* Mark the connection closed and move it to the free list */ g_tcp_connections[i].tcpstateflags = TCP_CLOSED; dq_addlast(&g_tcp_connections[i].sconn.node, &g_free_tcp_connections); } +#else + FAR struct tcp_conn_s *conn; + + for (i = 0; i < CONFIG_NET_TCP_PREALLOC_CONNS; i++) + { + conn = kmm_zalloc(sizeof(struct tcp_conn_s)); Review Comment: I sincerely do not understand your proposition. I need the following: * It is impossible to know the maximum number of connections before-hand. Thus I need dynamic connections allocation. * I know that a temporal high-load condition may happen. After this finishes, the connections must be deallocated to allow the system to reuse the memory. It must not keep the never-to-be-used-again memory reserved! * I know that at least *some* connections are always needed, and I need them preallocated to reduce heap fragmentation, enhance performance, and reduce locking of the system (as the memory manager may do). All the above sound like very reasonable and possibly common requirements for a networking application. In fact, I cannot imagine a system with unknown number of connections behave any differently. Point 2 is especially important for safety and security reasons. Your proposal cannot satisfy all 3 requirements, at least as far as I can understand it. -- 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: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org