dpif: Minimize memory copy for revalidation.
authorJoe Stringer <joestringer@nicira.com>
Sun, 5 Oct 2014 22:14:08 +0000 (11:14 +1300)
committerJoe Stringer <joestringer@nicira.com>
Tue, 2 Dec 2014 22:55:55 +0000 (14:55 -0800)
commit64bb477f05688e61cf1ca062e2e47c69c5c49735
tree1517021bdc650ce841faaf1ab7764b249aa87759
parent70e5ed6f39f02e1b378908f045d4ba2ab2000513
dpif: Minimize memory copy for revalidation.

One of the limiting factors on the number of flows that can be supported
in the datapath is the overhead of assembling flow dump messages in the
datapath. This patch modifies the dpif to allow revalidators to skip
dumping the key, mask and actions from the datapath, by making use of
the unique flow identifiers introduced in earlier patches.

For each flow dump, the dpif user specifies whether to skip these
attributes, allowing the common case to only dump a pair of 128-bit ID
and flow stats. With datapath support, this increases the number of
flows that a revalidator can handle per second by 50% or more. Support
in dpif-netdev and dpif-netlink is added in this patch; kernel support
is left for future patches.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
lib/dpctl.c
lib/dpif-netdev.c
lib/dpif-netlink.c
lib/dpif-provider.h
lib/dpif.c
lib/dpif.h
ofproto/ofproto-dpif-upcall.c
ofproto/ofproto-dpif.c
tests/dpif-netdev.at
tests/ofproto-dpif.at