Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F97579381
D46186.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D46186.diff
View Options
diff --git a/sys/net/iflib.h b/sys/net/iflib.h
--- a/sys/net/iflib.h
+++ b/sys/net/iflib.h
@@ -503,4 +503,10 @@
int rid, iflib_intr_type_t type,
driver_filter_t *filter, void *filter_arg,
int qid, const char *name);
+
+/*
+ * iflib managed counters support
+ */
+uint64_t iflib_if_get_counter_default(if_ctx_t ctx, ift_counter cnt);
+
#endif /* __IFLIB_H_ */
diff --git a/sys/net/iflib.c b/sys/net/iflib.c
--- a/sys/net/iflib.c
+++ b/sys/net/iflib.c
@@ -708,6 +708,7 @@
static void iflib_altq_if_start(if_t ifp);
static int iflib_altq_if_transmit(if_t ifp, struct mbuf *m);
#endif
+static void iflib_save_stats(if_ctx_t);
static int iflib_register(if_ctx_t);
static void iflib_deregister(if_ctx_t);
static void iflib_unregister_vlan_handlers(if_ctx_t ctx);
@@ -2612,6 +2613,7 @@
netmap_disable_all_rings(ctx->ifc_ifp);
iflib_debug_reset();
+ iflib_save_stats(ctx);
/* Wait for current tx queue users to exit to disarm watchdog timer. */
for (i = 0; i < scctx->isc_ntxqsets; i++, txq++) {
/* make sure all transmitters have completed before proceeding XXX */
@@ -4648,6 +4650,37 @@
return (IFDI_GET_COUNTER(ctx, cnt));
}
+uint64_t
+iflib_if_get_counter_default(if_ctx_t ctx, ift_counter cnt)
+{
+ if_t ifp = ctx->ifc_ifp;
+
+ if (cnt == IFCOUNTER_OQDROPS) {
+ uint64_t drops = 0;
+ iflib_txq_t txq = ctx->ifc_txqs;
+
+ for (int i = 0; i < ctx->ifc_softc_ctx.isc_ntxqsets; i++, txq++) {
+ drops += counter_u64_fetch(txq->ift_br->drops);
+ }
+ return (drops + if_get_counter_default(ifp, cnt));
+ }
+
+ return (if_get_counter_default(ifp, cnt));
+}
+
+static void
+iflib_save_stats(if_ctx_t ctx)
+{
+ /* Currenly only save out dropped packets */
+ uint64_t drops = 0;
+ iflib_txq_t txq = ctx->ifc_txqs;
+
+ for (int i = 0; i < ctx->ifc_softc_ctx.isc_ntxqsets; i++, txq++)
+ drops += counter_u64_fetch(txq->ift_br->drops);
+
+ if_inc_counter(ctx->ifc_ifp, IFCOUNTER_OQDROPS, drops);
+}
+
/*********************************************************************
*
* OTHER FUNCTIONS EXPORTED TO THE STACK
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Oct 1, 4:25 AM (19 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
10661754
Default Alt Text
D46186.diff (2 KB)
Attached To
Mode
D46186: iflib: Add iflib managed counters support
Attached
Detach File
Event Timeline
Log In to Comment