Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Aug 2013 05:26:46 +0000 (UTC)
From:      Bryan Venteicher <bryanv@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r254679 - projects/vmxnet/sys/dev/vmware/vmxnet3
Message-ID:  <201308230526.r7N5QknM003598@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bryanv
Date: Fri Aug 23 05:26:45 2013
New Revision: 254679
URL: http://svnweb.freebsd.org/changeset/base/254679

Log:
  Fix typo that could give us the wrong number of avail Tx descriptors
  
  Add a few more error statistics

Modified:
  projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c
  projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmxvar.h

Modified: projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c
==============================================================================
--- projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c	Fri Aug 23 02:10:21 2013	(r254678)
+++ projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c	Fri Aug 23 05:26:45 2013	(r254679)
@@ -1633,7 +1633,7 @@ vmxnet3_newbuf(struct vmxnet3_softc *sc,
 
 	m = m_getjcl(M_NOWAIT, MT_DATA, flags, clsize);
 	if (m == NULL) {
-		sc->vmx_stats.vmst_getcl_failed++;
+		sc->vmx_stats.vmst_mgetcl_failed++;
 		return (ENOBUFS);
 	}
 
@@ -1647,6 +1647,7 @@ vmxnet3_newbuf(struct vmxnet3_softc *sc,
 	    BUS_DMA_NOWAIT);
 	if (error) {
 		m_freem(m);
+		sc->vmx_stats.vmst_mbuf_load_failed++;;
 		return (error);
 	}
 	KASSERT(nsegs == 1,
@@ -2442,6 +2443,7 @@ vmxnet3_txq_encap(struct vmxnet3_txqueue
 	} else if (m->m_pkthdr.csum_flags & VMXNET3_CSUM_ALL_OFFLOAD) {
 		error = vmxnet3_txq_offload_ctx(m, &etype, &proto, &start);
 		if (error) {
+			txq->vxtxq_stats.vtxrs_offload_failed++;
 			vmxnet3_txq_unload_mbuf(txq, dmap);
 			m_freem(m);
 			*m0 = NULL;
@@ -2944,6 +2946,8 @@ vmxnet3_setup_txq_sysctl(struct vmxnet3_
 
 	SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "ringfull", CTLFLAG_RD,
 	    &stats->vtxrs_full, "Tx ring full");
+	SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "offload_failed", CTLFLAG_RD,
+	    &stats->vtxrs_offload_failed, "Tx checksum offload failed");
 
 	/*
 	 * Add statistics reported by the host. These are updated once
@@ -3114,10 +3118,12 @@ vmxnet3_setup_sysctl(struct vmxnet3_soft
 	    &sc->vmx_nrxqueues, 0, "Number of Rx queues");
 
 	stats = &sc->vmx_stats;
-	SYSCTL_ADD_UQUAD(ctx, child, OID_AUTO, "collapsed", CTLFLAG_RD,
-	    &stats->vmst_collapsed, "Tx mbuf chains collapsed");
-	SYSCTL_ADD_UQUAD(ctx, child, OID_AUTO, "getcl_failed", CTLFLAG_RD,
-	    &stats->vmst_getcl_failed, "Alloc of mbuf cluster failed");
+	SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "collapsed", CTLFLAG_RD,
+	    &stats->vmst_collapsed, 0, "Tx mbuf chains collapsed");
+	SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "mgetcl_failed", CTLFLAG_RD,
+	    &stats->vmst_mgetcl_failed, 0, "mbuf cluster allocation failed");
+	SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "mbuf_load_failed", CTLFLAG_RD,
+	    &stats->vmst_mbuf_load_failed, 0, "mbuf load segments failed");
 
 	vmxnet3_setup_queue_sysctl(sc, ctx, child);
 }

Modified: projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmxvar.h
==============================================================================
--- projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmxvar.h	Fri Aug 23 02:10:21 2013	(r254678)
+++ projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmxvar.h	Fri Aug 23 05:26:45 2013	(r254679)
@@ -73,8 +73,12 @@ struct vmxnet3_txring {
 	struct vmxnet3_dma_alloc vxtxr_dma;
 };
 
-#define VMXNET3_TXRING_AVAIL(_txr) \
-    (((_txr)->vxtxr_head - (_txr)->vxtxr_head - 1) % VMXNET3_MAX_TX_NDESC)
+static inline int
+VMXNET3_TXRING_AVAIL(struct vmxnet3_txring *txr)
+{
+	int avail = txr->vxtxr_next - txr->vxtxr_head - 1;
+	return (avail < 0 ? txr->vxtxr_ndesc + avail : avail);
+}
 
 struct vmxnet3_rxbuf {
 	bus_dmamap_t		 vrxb_dmamap;
@@ -116,6 +120,7 @@ struct vmxnet3_comp_ring {
 
 struct vmxnet3_txq_stats {
 	uint64_t		vtxrs_full;
+	uint64_t		vtxrs_offload_failed;
 
 };
 
@@ -166,8 +171,9 @@ struct vmxnet3_rxqueue {
     mtx_assert(&(_rxq)->vxrxq_mtx, MA_NOTOWNED)
 
 struct vmxnet3_statistics {
-	uint64_t		vmst_collapsed;
-	uint64_t		vmst_getcl_failed;
+	uint32_t		vmst_collapsed;
+	uint32_t		vmst_mgetcl_failed;
+	uint32_t		vmst_mbuf_load_failed;
 
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308230526.r7N5QknM003598>