aboutsummaryrefslogtreecommitdiffstats
path: root/net/packet/internal.h
diff options
context:
space:
mode:
authorWillem de Bruijn <willemb@google.com>2015-05-12 11:56:50 -0400
committerDavid S. Miller <davem@davemloft.net>2015-05-13 15:43:00 -0400
commita9b6391814d5d6b8668fca2dace86949b7244e2e (patch)
tree69d0024af991cefa3620b31bdbb094fe42723b72 /net/packet/internal.h
parentpacket: rollover huge flows before small flows (diff)
downloadlinux-dev-a9b6391814d5d6b8668fca2dace86949b7244e2e.tar.xz
linux-dev-a9b6391814d5d6b8668fca2dace86949b7244e2e.zip
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 a9d30a17c714..c035d263c1e8 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;