Hi Zhe, This looks ok, but you should post this as a merge request at sourceforge. Then I or Ying can apply it.
BR ///jon > -----Original Message----- > From: zhe...@windriver.com <zhe...@windriver.com> > Sent: 23-Jul-19 05:19 > To: tipc-discussion@lists.sourceforge.net > Subject: [tipc-discussion] [tipc-tipcutils][PATCH] test: ptts: Set recv > buffer size > too max to receive as many packets as possible > > From: He Zhe <zhe...@windriver.com> > > Flooding multicast may make the rcv buffer overrun and is considered > premature messages later and thus cause the following error. > > "Ignoring premature msg 16, currently handling 12" > > This patch sets SO_RCVBUF the of socket to max int value to receive as many > packets as possible, and give a hint to user when possible overrun occurs. > Note > that the value of SO_RCVBUF will be limited up to min(INT_MAX/2, > sysctl_rmem_max) in kernel. > > Signed-off-by: He Zhe <zhe...@windriver.com> > --- > test/ptts/tipc_ts_server.c | 18 ++++++++++++++++-- > 1 file changed, 16 insertions(+), 2 deletions(-) > > diff --git a/test/ptts/tipc_ts_server.c b/test/ptts/tipc_ts_server.c index > a286daa..cc69e6e 100644 > --- a/test/ptts/tipc_ts_server.c > +++ b/test/ptts/tipc_ts_server.c > @@ -641,8 +641,9 @@ void server_mcast > if (rc < 0) > err("multicast message not received"); > if (msgno != *(int*) buf) { > - dbg1("Ignoring premature msg %u, > currently > handling %u\n", > - *(int*)buf, msgno); > + dbg1("Ignoring premature msg %u, > currently > handling %u\n" > + "You can enlarge > /proc/sys/net/core/rmem_max and > try again\n", > + *(int*)buf, msgno); > continue; > } > rc = recvfrom(sd[i], buf, > expected_szs[numSubTest], > @@ -687,8 +688,21 @@ void server_test_multicast(void) > FD_ZERO(&readfds); > > for (i = 0; i < TIPC_MCAST_SOCKETS; i++) { > + int optval = (int)(~0U >> 1); > + socklen_t optlen = sizeof(optval); > + int rc = 0; > + > sd[i] = createSocketTIPC (SOCK_RDM); > FD_SET(sd[i], &readfds); > + > + /* > + * Flooding multicast may make the rcv buffer overrun and is > considered premature msg later. > + * Set SO_RCVBUF to max int value to receive as many as > possible. > + * Note that it will be limited up to min(INT_MAX/2, > sysctl_rmem_max) in kernel. > + */ > + rc = setsockopt(sd[i], SOL_SOCKET, SO_RCVBUF, (const > char*)&optval, optlen); > + if(rc != 0) > + strerror(errno); > } > > server_bindMulticast( 0, 99, sd[0]); > -- > 2.7.4 > > > > _______________________________________________ > tipc-discussion mailing list > tipc-discussion@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/tipc-discussion _______________________________________________ tipc-discussion mailing list tipc-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tipc-discussion