git: df40e30c9786 - main - netmap: Try to count packet drops in emulated mode
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 23 Jan 2023 19:52:48 UTC
The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=df40e30c9786ccbf51e3acdf936d5c0e20815652 commit df40e30c9786ccbf51e3acdf936d5c0e20815652 Author: Mark Johnston <markj@FreeBSD.org> AuthorDate: 2023-01-23 19:42:41 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2023-01-23 19:42:41 +0000 netmap: Try to count packet drops in emulated mode Right now we have little visibility into packet drops within netmap. Start trying to make packet loss issues more visible by counting queue drops in the transmit path, and in the input path for interfaces running in emulated mode, where we place received packets in a bounded software queue that is processed by rxsync. Reviewed by: vmaffione MFC after: 1 week Sponsored by: Zenarmor Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D38064 --- sys/dev/netmap/netmap.c | 4 +++- sys/dev/netmap/netmap_generic.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c index 448d9a81eefb..37723fb36fe8 100644 --- a/sys/dev/netmap/netmap.c +++ b/sys/dev/netmap/netmap.c @@ -4329,8 +4329,10 @@ netmap_transmit(struct ifnet *ifp, struct mbuf *m) mbq_unlock(q); done: - if (m) + if (m) { + if_inc_counter(ifp, IFCOUNTER_OQDROPS, 1); m_freem(m); + } /* unconditionally wake up listeners */ kring->nm_notify(kring, 0); /* this is normally netmap_notify(), but for nics diff --git a/sys/dev/netmap/netmap_generic.c b/sys/dev/netmap/netmap_generic.c index f075cd4bd306..83908f10a3fe 100644 --- a/sys/dev/netmap/netmap_generic.c +++ b/sys/dev/netmap/netmap_generic.c @@ -837,8 +837,10 @@ generic_rx_handler(struct ifnet *ifp, struct mbuf *m) * support RX scatter-gather. */ nm_prlim(2, "Warning: driver pushed up big packet " "(size=%d)", (int)MBUF_LEN(m)); + if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1); m_freem(m); } else if (unlikely(mbq_len(&kring->rx_queue) > na->num_rx_desc)) { + if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1); m_freem(m); } else { mbq_safe_enqueue(&kring->rx_queue, m);