svn commit: r308126 - head/sys/dev/xen/netfront
Roger Pau Monné
royger at FreeBSD.org
Mon Oct 31 11:31:13 UTC 2016
Author: royger
Date: Mon Oct 31 11:31:11 2016
New Revision: 308126
URL: https://svnweb.freebsd.org/changeset/base/308126
Log:
xen/netfront: fix statistics
Fix the statistics used by netfront.
Reported by: Trond.Endrestol at ximalas.info
Submitted by: ae
Reviewed by: royger, Wei Liu <wei.liu2 at citrix.com>
MFC after: 4 weeks
PR: 213439
Modified:
head/sys/dev/xen/netfront/netfront.c
Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c Mon Oct 31 11:30:01 2016 (r308125)
+++ head/sys/dev/xen/netfront/netfront.c Mon Oct 31 11:31:11 2016 (r308126)
@@ -156,21 +156,6 @@ static int xn_get_responses(struct netfr
#define virt_to_mfn(x) (vtophys(x) >> PAGE_SHIFT)
#define INVALID_P2M_ENTRY (~0UL)
-
-struct xn_rx_stats
-{
- u_long rx_packets; /* total packets received */
- u_long rx_bytes; /* total bytes received */
- u_long rx_errors; /* bad packets received */
-};
-
-struct xn_tx_stats
-{
- u_long tx_packets; /* total packets transmitted */
- u_long tx_bytes; /* total bytes transmitted */
- u_long tx_errors; /* packet transmit problems */
-};
-
#define XN_QUEUE_NAME_LEN 8 /* xn{t,r}x_%u, allow for two digits */
struct netfront_rxq {
struct netfront_info *info;
@@ -190,8 +175,6 @@ struct netfront_rxq {
struct lro_ctrl lro;
struct callout rx_refill;
-
- struct xn_rx_stats stats;
};
struct netfront_txq {
@@ -215,8 +198,6 @@ struct netfront_txq {
struct task defrtask;
bool full;
-
- struct xn_tx_stats stats;
};
struct netfront_info {
@@ -1191,7 +1172,7 @@ xn_rxeof(struct netfront_rxq *rxq)
if (__predict_false(err)) {
if (m)
(void )mbufq_enqueue(&mbufq_errq, m);
- rxq->stats.rx_errors++;
+ if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1);
continue;
}
@@ -1216,9 +1197,6 @@ xn_rxeof(struct netfront_rxq *rxq)
m->m_pkthdr.csum_flags |= CSUM_TSO;
}
- rxq->stats.rx_packets++;
- rxq->stats.rx_bytes += m->m_pkthdr.len;
-
(void )mbufq_enqueue(&mbufq_rxq, m);
rxq->ring.rsp_cons = i;
}
@@ -1304,12 +1282,6 @@ xn_txeof(struct netfront_txq *txq)
"trying to free it again!"));
M_ASSERTVALID(m);
- /*
- * Increment packet count if this is the last
- * mbuf of the chain.
- */
- if (!m->m_next)
- if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
if (__predict_false(gnttab_query_foreign_access(
txq->grant_ref[id]) != 0)) {
panic("%s: grant id %u still in use by the "
@@ -1701,10 +1673,12 @@ xn_assemble_tx_request(struct netfront_t
}
BPF_MTAP(ifp, m_head);
- xn_txeof(txq);
+ if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
+ if_inc_counter(ifp, IFCOUNTER_OBYTES, m_head->m_pkthdr.len);
+ if (m_head->m_flags & M_MCAST)
+ if_inc_counter(ifp, IFCOUNTER_OMCASTS, 1);
- txq->stats.tx_bytes += m_head->m_pkthdr.len;
- txq->stats.tx_packets++;
+ xn_txeof(txq);
return (0);
}
More information about the svn-src-all
mailing list