First of all, I apologize for the wrong subject. It should be recvmmsg() not sendmmsg(). Based on the source code (in my previous email), it doesn't seem like MSG_ALL has any effect (I don't know MSG_ALL exists either). Yes, I expect (or at least wish) recvmmsg() will return as many packet as possible before timeout, and if timeout is zero, it should keep trying to fill up the buffer until it is full or there is no more packet. The reason I expect or wish such behavior is that the main idea behind recvmmsg() is that application can reduce the number system call, and so the throughput will go up and latency will go down. Otherwise, the user could just simply use recvmsg() to mimic what recvmmsg() is doing. I don't expect recvmsg() returns more than 1 message but I do expect and wish recvmmsg() returns more than 1 message. On Friday, October 24, 2014 11:41 AM, "Valdis.Kletnieks@xxxxxx" <Valdis.Kletnieks@xxxxxx> wrote: On Thu, 23 Oct 2014 19:43:07 -0700, Hei Chan said: > Then, I found that recvmmsg() doesn't return all the packets that queued in 1 > single call. You want to receive *all* of them? Call recv() with a *buf and a len big enough to get a *lot* of msgs, and pass MSG_ALL in the flags. Why were you expecting recvmsg() to return more than one message? _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies