summaryrefslogtreecommitdiff
path: root/net/packet/internal.h
diff options
context:
space:
mode:
authorWillem de Bruijn <willemb@google.com>2015-05-12 15:56:50 (GMT)
committerDavid S. Miller <davem@davemloft.net>2015-05-13 19:43:00 (GMT)
commita9b6391814d5d6b8668fca2dace86949b7244e2e (patch)
tree69d0024af991cefa3620b31bdbb094fe42723b72 /net/packet/internal.h
parent3b3a5b0aab5b9ad345d4beb9a364a7dd02c23d40 (diff)
downloadlinux-a9b6391814d5d6b8668fca2dace86949b7244e2e.tar.xz
packet: rollover statistics
Rollover indicates exceptional conditions. Export a counter to inform socket owners of this state. If no socket with sufficient room is found, rollover fails. Also count these events. Finally, also count when flows are rolled over early thanks to huge flow detection, to validate its correctness. Tested: Read counters in bench_rollover on all other tests in the patchset Signed-off-by: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/packet/internal.h')
-rw-r--r--net/packet/internal.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/packet/internal.h b/net/packet/internal.h
index a9d30a1..c035d26 100644
--- a/net/packet/internal.h
+++ b/net/packet/internal.h
@@ -89,6 +89,9 @@ struct packet_fanout {
struct packet_rollover {
int sock;
+ atomic_long_t num;
+ atomic_long_t num_huge;
+ atomic_long_t num_failed;
#define ROLLOVER_HLEN (L1_CACHE_BYTES / sizeof(u32))
u32 history[ROLLOVER_HLEN] ____cacheline_aligned;
} ____cacheline_aligned_in_smp;