On 05/23/14 at 08:51am, Ben Pfaff wrote: > On Fri, May 23, 2014 at 09:03:54AM +0100, Thomas Graf wrote: > > > Using nl_sock_send_linear() can cause messages to be reordered. Do we > > > need to wait for the tx ring to empty before calling it? > > > > Are you referring to parallel usage of _send_linear() and > > _send_mmap() on the same socket? The ring does support carrying > > a do-a-linear-read event which allows parallel use while preserving > > order but the caller may not decide to do so on his own. Going from > > maped to unmapped on a live socket would be a nice feature but would > > require kernel support first. > > If we have a series of back-to-back nl_sock_send_mmap() calls, and one > or a few of them are too big for the frame size, then nothing currently > assures that the kernel will receive them in the order sent. I am not > sure that it matters, but that is what I was trying to point out.
OK, I understand now. Sending order for a single thread is guaranteed because both mmaped and unmapped messages are represented by sendmsg() syscalls (unlike in the receive scenario). The ring is checked for messages if a sendmsg() syscall is performed without payload on a socket with a ring setup. I'll add this this to the nl_sock_send_mmap() function documentation. _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
