svn commit: r263689 - in projects/rrs_mqueue/sys: amd64/conf dev/virtio/network dev/vmware/vmxnet3 net
Randall Stewart
rrs at FreeBSD.org
Mon Mar 24 15:22:24 UTC 2014
Author: rrs
Date: Mon Mar 24 15:22:22 2014
New Revision: 263689
URL: http://svnweb.freebsd.org/changeset/base/263689
Log:
Change to at least make it compile (-witness and -invariants to start).
> Description of fields to fill in above: 76 columns --|
> PR: If a GNATS PR is affected by the change.
> Submitted by: If someone else sent in the change.
> Reviewed by: If someone else reviewed your modification.
> Approved by: If you needed approval for this commit.
> Obtained from: If the change is from a third party.
> MFC after: N [day[s]|week[s]|month[s]]. Request a reminder email.
> Security: Vulnerability reference (one per line) or description.
> Sponsored by: If the change was sponsored by an organization.
> Empty fields above will be automatically removed.
M sys/amd64/conf/GENERIC
M sys/dev/virtio/network/if_vtnet.c
M sys/dev/vmware/vmxnet3/if_vmx.c
M sys/dev/vmware/vmxnet3/if_vmxvar.h
M sys/net/ifq.h
Modified:
projects/rrs_mqueue/sys/amd64/conf/GENERIC
projects/rrs_mqueue/sys/dev/virtio/network/if_vtnet.c
projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmx.c
projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmxvar.h
projects/rrs_mqueue/sys/net/ifq.h
Modified: projects/rrs_mqueue/sys/amd64/conf/GENERIC
==============================================================================
--- projects/rrs_mqueue/sys/amd64/conf/GENERIC Mon Mar 24 13:50:11 2014 (r263688)
+++ projects/rrs_mqueue/sys/amd64/conf/GENERIC Mon Mar 24 15:22:22 2014 (r263689)
@@ -78,11 +78,11 @@ options KDB_TRACE # Print a stack trac
# For full debugger support use (turn off in stable branch):
options DDB # Support DDB.
options GDB # Support remote GDB.
-options DEADLKRES # Enable the deadlock resolver
-options INVARIANTS # Enable calls of extra sanity checking
-options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS
-options WITNESS # Enable checks to detect deadlocks and cycles
-options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
+#options DEADLKRES # Enable the deadlock resolver
+#options INVARIANTS # Enable calls of extra sanity checking
+#options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS
+#options WITNESS # Enable checks to detect deadlocks and cycles
+#options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones
# Make an SMP-capable kernel by default
Modified: projects/rrs_mqueue/sys/dev/virtio/network/if_vtnet.c
==============================================================================
--- projects/rrs_mqueue/sys/dev/virtio/network/if_vtnet.c Mon Mar 24 13:50:11 2014 (r263688)
+++ projects/rrs_mqueue/sys/dev/virtio/network/if_vtnet.c Mon Mar 24 15:22:22 2014 (r263689)
@@ -2263,7 +2263,7 @@ vtnet_txq_mq_start_locked(struct vtnet_t
while ((m = drbr_peek(ifp, br, &qnum)) != NULL) {
if (virtqueue_full(vq)) {
- drbr_putback(ifp, br, m);
+ drbr_putback(ifp, br, m, qnum);
error = ENOBUFS;
break;
}
Modified: projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmx.c
==============================================================================
--- projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmx.c Mon Mar 24 13:50:11 2014 (r263688)
+++ projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmx.c Mon Mar 24 15:22:22 2014 (r263689)
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
#include <net/if_vlan_var.h>
#include <net/bpf.h>
+#include <net/drbr.h>
#include <netinet/in_systm.h>
#include <netinet/in.h>
@@ -986,7 +987,7 @@ vmxnet3_init_txq(struct vmxnet3_softc *s
#ifndef VMXNET3_LEGACY_TX
TASK_INIT(&txq->vxtxq_defrtask, 0, vmxnet3_txq_tq_deferred, txq);
- txq->vxtxq_br = buf_ring_alloc(VMXNET3_DEF_BUFRING_SIZE, M_DEVBUF,
+ txq->vxtxq_br = drbr_alloc(M_DEVBUF,
M_NOWAIT, &txq->vxtxq_mtx);
if (txq->vxtxq_br == NULL)
return (ENOMEM);
@@ -1068,7 +1069,7 @@ vmxnet3_destroy_txq(struct vmxnet3_txque
#ifndef VMXNET3_LEGACY_TX
if (txq->vxtxq_br != NULL) {
- buf_ring_free(txq->vxtxq_br, M_DEVBUF);
+ drbr_free(txq->vxtxq_br, M_DEVBUF);
txq->vxtxq_br = NULL;
}
#endif
@@ -2901,9 +2902,10 @@ vmxnet3_txq_mq_start_locked(struct vmxne
{
struct vmxnet3_softc *sc;
struct vmxnet3_txring *txr;
- struct buf_ring *br;
+ struct drbr_ring *br;
struct ifnet *ifp;
int tx, avail, error;
+ uint8_t qused;
sc = txq->vxtxq_sc;
br = txq->vxtxq_br;
@@ -2928,13 +2930,13 @@ vmxnet3_txq_mq_start_locked(struct vmxne
}
while ((avail = VMXNET3_TXRING_AVAIL(txr)) >= 2) {
- m = drbr_peek(ifp, br);
+ m = drbr_peek(ifp, br, &qused);
if (m == NULL)
break;
/* Assume worse case if this mbuf is the head of a chain. */
if (m->m_next != NULL && avail < VMXNET3_TX_MAXSEGS) {
- drbr_putback(ifp, br, m);
+ drbr_putback(ifp, br, m, qused);
error = ENOBUFS;
break;
}
@@ -2942,12 +2944,12 @@ vmxnet3_txq_mq_start_locked(struct vmxne
error = vmxnet3_txq_encap(txq, &m);
if (error) {
if (m != NULL)
- drbr_putback(ifp, br, m);
+ drbr_putback(ifp, br, m, qused);
else
- drbr_advance(ifp, br);
+ drbr_advance(ifp, br, qused);
break;
}
- drbr_advance(ifp, br);
+ drbr_advance(ifp, br, qused);
tx++;
ETHER_BPF_MTAP(ifp, m);
@@ -3267,7 +3269,6 @@ vmxnet3_qflush(struct ifnet *ifp)
{
struct vmxnet3_softc *sc;
struct vmxnet3_txqueue *txq;
- struct mbuf *m;
int i;
sc = ifp->if_softc;
@@ -3276,8 +3277,7 @@ vmxnet3_qflush(struct ifnet *ifp)
txq = &sc->vmx_txq[i];
VMXNET3_TXQ_LOCK(txq);
- while ((m = buf_ring_dequeue_sc(txq->vxtxq_br)) != NULL)
- m_freem(m);
+ drbr_flush(ifp, txq->vxtxq_br);
VMXNET3_TXQ_UNLOCK(txq);
}
Modified: projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmxvar.h
==============================================================================
--- projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmxvar.h Mon Mar 24 13:50:11 2014 (r263688)
+++ projects/rrs_mqueue/sys/dev/vmware/vmxnet3/if_vmxvar.h Mon Mar 24 15:22:22 2014 (r263689)
@@ -132,7 +132,7 @@ struct vmxnet3_txqueue {
struct mtx vxtxq_mtx;
struct vmxnet3_softc *vxtxq_sc;
#ifndef VMXNET3_TX_LEGACY
- struct buf_ring *vxtxq_br;
+ struct drbr_ring *vxtxq_br;
#endif
int vxtxq_id;
int vxtxq_intr_idx;
Modified: projects/rrs_mqueue/sys/net/ifq.h
==============================================================================
--- projects/rrs_mqueue/sys/net/ifq.h Mon Mar 24 13:50:11 2014 (r263688)
+++ projects/rrs_mqueue/sys/net/ifq.h Mon Mar 24 15:22:22 2014 (r263689)
@@ -313,165 +313,6 @@ do { \
IFQ_PURGE(ifq); \
} while (0)
-static __inline int
-drbr_enqueue(struct ifnet *ifp, struct buf_ring *br, struct mbuf *m)
-{
- int error = 0;
-
-#ifdef ALTQ
- if (ALTQ_IS_ENABLED(&ifp->if_snd)) {
- IFQ_ENQUEUE(&ifp->if_snd, m, error);
- return (error);
- }
-#endif
- error = buf_ring_enqueue(br, m);
- if (error)
- m_freem(m);
-
- return (error);
-}
-
-static __inline void
-drbr_putback(struct ifnet *ifp, struct buf_ring *br, struct mbuf *new)
-{
- /*
- * The top of the list needs to be swapped
- * for this one.
- */
-#ifdef ALTQ
- if (ifp != NULL && ALTQ_IS_ENABLED(&ifp->if_snd)) {
- /*
- * Peek in altq case dequeued it
- * so put it back.
- */
- IFQ_DRV_PREPEND(&ifp->if_snd, new);
- return;
- }
-#endif
- buf_ring_putback_sc(br, new);
-}
-
-static __inline struct mbuf *
-drbr_peek(struct ifnet *ifp, struct buf_ring *br)
-{
-#ifdef ALTQ
- struct mbuf *m;
- if (ifp != NULL && ALTQ_IS_ENABLED(&ifp->if_snd)) {
- /*
- * Pull it off like a dequeue
- * since drbr_advance() does nothing
- * for altq and drbr_putback() will
- * use the old prepend function.
- */
- IFQ_DEQUEUE(&ifp->if_snd, m);
- return (m);
- }
-#endif
- return(buf_ring_peek(br));
-}
-
-static __inline void
-drbr_flush(struct ifnet *ifp, struct buf_ring *br)
-{
- struct mbuf *m;
-
-#ifdef ALTQ
- if (ifp != NULL && ALTQ_IS_ENABLED(&ifp->if_snd))
- IFQ_PURGE(&ifp->if_snd);
-#endif
- while ((m = buf_ring_dequeue_sc(br)) != NULL)
- m_freem(m);
-}
-
-static __inline void
-drbr_free(struct buf_ring *br, struct malloc_type *type)
-{
-
- drbr_flush(NULL, br);
- buf_ring_free(br, type);
-}
-
-static __inline struct mbuf *
-drbr_dequeue(struct ifnet *ifp, struct buf_ring *br)
-{
-#ifdef ALTQ
- struct mbuf *m;
-
- if (ifp != NULL && ALTQ_IS_ENABLED(&ifp->if_snd)) {
- IFQ_DEQUEUE(&ifp->if_snd, m);
- return (m);
- }
-#endif
- return (buf_ring_dequeue_sc(br));
-}
-
-static __inline void
-drbr_advance(struct ifnet *ifp, struct buf_ring *br)
-{
-#ifdef ALTQ
- /* Nothing to do here since peek dequeues in altq case */
- if (ifp != NULL && ALTQ_IS_ENABLED(&ifp->if_snd))
- return;
-#endif
- return (buf_ring_advance_sc(br));
-}
-
-
-static __inline struct mbuf *
-drbr_dequeue_cond(struct ifnet *ifp, struct buf_ring *br,
- int (*func) (struct mbuf *, void *), void *arg)
-{
- struct mbuf *m;
-#ifdef ALTQ
- if (ALTQ_IS_ENABLED(&ifp->if_snd)) {
- IFQ_LOCK(&ifp->if_snd);
- IFQ_POLL_NOLOCK(&ifp->if_snd, m);
- if (m != NULL && func(m, arg) == 0) {
- IFQ_UNLOCK(&ifp->if_snd);
- return (NULL);
- }
- IFQ_DEQUEUE_NOLOCK(&ifp->if_snd, m);
- IFQ_UNLOCK(&ifp->if_snd);
- return (m);
- }
-#endif
- m = buf_ring_peek(br);
- if (m == NULL || func(m, arg) == 0)
- return (NULL);
-
- return (buf_ring_dequeue_sc(br));
-}
-
-static __inline int
-drbr_empty(struct ifnet *ifp, struct buf_ring *br)
-{
-#ifdef ALTQ
- if (ALTQ_IS_ENABLED(&ifp->if_snd))
- return (IFQ_IS_EMPTY(&ifp->if_snd));
-#endif
- return (buf_ring_empty(br));
-}
-
-static __inline int
-drbr_needs_enqueue(struct ifnet *ifp, struct buf_ring *br)
-{
-#ifdef ALTQ
- if (ALTQ_IS_ENABLED(&ifp->if_snd))
- return (1);
-#endif
- return (!buf_ring_empty(br));
-}
-
-static __inline int
-drbr_inuse(struct ifnet *ifp, struct buf_ring *br)
-{
-#ifdef ALTQ
- if (ALTQ_IS_ENABLED(&ifp->if_snd))
- return (ifp->if_snd.ifq_len);
-#endif
- return (buf_ring_count(br));
-}
-
extern int ifqmaxlen;
void if_qflush(struct ifnet *);
More information about the svn-src-projects
mailing list