summaryrefslogtreecommitdiff
path: root/lib/dpif-netlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dpif-netlink.c')
-rw-r--r--lib/dpif-netlink.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/dpif-netlink.c b/lib/dpif-netlink.c
index 5f4b60c5a..b5d436e66 100644
--- a/lib/dpif-netlink.c
+++ b/lib/dpif-netlink.c
@@ -777,9 +777,18 @@ dpif_netlink_get_stats(const struct dpif *dpif_, struct dpif_dp_stats *stats)
stats->n_masks = dp.megaflow_stats->n_masks;
stats->n_mask_hit = get_32aligned_u64(
&dp.megaflow_stats->n_mask_hit);
+ stats->n_cache_hit = get_32aligned_u64(
+ &dp.megaflow_stats->n_cache_hit);
+
+ if (!stats->n_cache_hit) {
+ /* Old kernels don't use this field and always
+ * report zero instead. Disable this stat. */
+ stats->n_cache_hit = UINT64_MAX;
+ }
} else {
stats->n_masks = UINT32_MAX;
stats->n_mask_hit = UINT64_MAX;
+ stats->n_cache_hit = UINT64_MAX;
}
ofpbuf_delete(buf);
}