summaryrefslogtreecommitdiffstats
path: root/sys/net/if_lagg.h
diff options
context:
space:
mode:
authormelifaro <melifaro@FreeBSD.org>2014-09-27 13:57:48 +0000
committermelifaro <melifaro@FreeBSD.org>2014-09-27 13:57:48 +0000
commit7d70b89c51d6f8dff25417542c5ec6bf48da64e4 (patch)
tree2c345ca698bf7f73ce5caa9902fc40f5308fc6b5 /sys/net/if_lagg.h
parentac53ffbd58ec1112dd1fa9786a490a5c84f5ded6 (diff)
downloadFreeBSD-src-7d70b89c51d6f8dff25417542c5ec6bf48da64e4.zip
FreeBSD-src-7d70b89c51d6f8dff25417542c5ec6bf48da64e4.tar.gz
Use underlying ports counters to get lagg statistics instead of
per-packet accounting. This introduce user-visible changes like aggregating error counters. Reviewed by: asomers (prev.version), glebius CR: D781 MFC after: 2 weeks Sponsored by: Yandex LLC
Diffstat (limited to 'sys/net/if_lagg.h')
-rw-r--r--sys/net/if_lagg.h19
1 files changed, 6 insertions, 13 deletions
diff --git a/sys/net/if_lagg.h b/sys/net/if_lagg.h
index 1b07f7b..658d8b4 100644
--- a/sys/net/if_lagg.h
+++ b/sys/net/if_lagg.h
@@ -140,8 +140,6 @@ struct lagg_reqflags {
#ifdef _KERNEL
-#include <sys/counter.h>
-
/*
* Internal kernel part
*/
@@ -187,10 +185,13 @@ struct lagg_llq {
SLIST_ENTRY(lagg_llq) llq_entries;
};
+struct lagg_counters {
+ uint64_t val[IFCOUNTER_LAST];
+};
+
struct lagg_softc {
struct ifnet *sc_ifp; /* virtual interface */
struct rmlock sc_mtx;
- struct mtx sc_call_mtx;
int sc_proto; /* lagg protocol */
u_int sc_count; /* number of ports */
u_int sc_active; /* active port count */
@@ -202,11 +203,6 @@ struct lagg_softc {
uint32_t sc_seq; /* sequence counter */
uint32_t sc_flags;
- counter_u64_t sc_ipackets;
- counter_u64_t sc_opackets;
- counter_u64_t sc_ibytes;
- counter_u64_t sc_obytes;
-
SLIST_HEAD(__tplhd, lagg_port) sc_ports; /* list of interfaces */
SLIST_ENTRY(lagg_softc) sc_entries;
@@ -220,6 +216,7 @@ struct lagg_softc {
struct sysctl_oid *sc_oid; /* sysctl tree oid */
int use_flowid; /* use M_FLOWID */
int flowid_shift; /* shift the flowid */
+ struct lagg_counters detached_counters; /* detached ports sum */
};
struct lagg_port {
@@ -241,6 +238,7 @@ struct lagg_port {
int (*lp_ioctl)(struct ifnet *, u_long, caddr_t);
int (*lp_output)(struct ifnet *, struct mbuf *,
const struct sockaddr *, struct route *);
+ struct lagg_counters port_counters; /* ifp counters copy */
SLIST_ENTRY(lagg_port) lp_entries;
};
@@ -254,11 +252,6 @@ struct lagg_port {
#define LAGG_RLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_RLOCKED)
#define LAGG_WLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_WLOCKED)
-#define LAGG_CALLOUT_LOCK_INIT(_sc) \
- mtx_init(&(_sc)->sc_call_mtx, "if_lagg callout mutex", NULL,\
- MTX_DEF)
-#define LAGG_CALLOUT_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->sc_call_mtx)
-
extern struct mbuf *(*lagg_input_p)(struct ifnet *, struct mbuf *);
extern void (*lagg_linkstate_p)(struct ifnet *, int );
OpenPOWER on IntegriCloud