diff options
author | melifaro <melifaro@FreeBSD.org> | 2014-09-27 13:57:48 +0000 |
---|---|---|
committer | melifaro <melifaro@FreeBSD.org> | 2014-09-27 13:57:48 +0000 |
commit | 7d70b89c51d6f8dff25417542c5ec6bf48da64e4 (patch) | |
tree | 2c345ca698bf7f73ce5caa9902fc40f5308fc6b5 /sys/net/if_lagg.h | |
parent | ac53ffbd58ec1112dd1fa9786a490a5c84f5ded6 (diff) | |
download | FreeBSD-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.h | 19 |
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 ); |