dpif-linux: fix the size of n_masks
authorFrancesco Fusco <ffusco@redhat.com>
Tue, 17 Dec 2013 19:18:18 +0000 (20:18 +0100)
committerBen Pfaff <blp@nicira.com>
Tue, 17 Dec 2013 21:20:28 +0000 (13:20 -0800)
commit1ce3fa06fc82210e2ed70b36e2842fe39d91b995
treeecf7e2599920284ca446810bb70ba4008064e8e2
parent428b2eddc9c47d8306252f0fc5218839d2ff017c
dpif-linux: fix the size of n_masks

The command ovs-dpctl can wrongly output the masks even if the
datapath does not implement mega flows. In this case the output
will be similar to the following:

system@ovs-system:
lookups: hit:14 missed:41 lost:0
flows: 0
masks: hit:18446744073709551615 total:4294967295
hit/pkt:335395346794719104.00
port 0: ovs-system (internal)
port 1: gre_system (gre: df_default=false, ttl=0)
port 2: ots-br0 (internal)
port 3: int0 (internal)
port 4: vnet0
port 5: vnet1

The problem depends on the fact that n_masks stats is stored as a
uint32 in the struct ovs_dp_megaflow_stats and as a uint64 in the
struct dpif_dp_stats. UINT32_MAX instead of UINT64_MAX should be
used to detect if the datapath supports megaflows or not.

Signed-off-by: Francesco Fusco <ffusco@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
AUTHORS
lib/dpif-netdev.c
lib/dpif.h
utilities/ovs-dpctl.c