Date: Fri, 21 Nov 2008 04:44:50 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r185144 - user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb Message-ID: <200811210444.mAL4ioW6074175@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kmacy Date: Fri Nov 21 04:44:49 2008 New Revision: 185144 URL: http://svn.freebsd.org/changeset/base/185144 Log: check that dequeue and peek match Modified: user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_multiq.c Modified: user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_multiq.c ============================================================================== --- user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_multiq.c Fri Nov 21 04:41:53 2008 (r185143) +++ user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_multiq.c Fri Nov 21 04:44:49 2008 (r185144) @@ -88,7 +88,7 @@ __FBSDID("$FreeBSD$"); extern int txq_fills; int multiq_tx_enable = 1; -int coalesce_tx_enable = 1; +int coalesce_tx_enable = 0; extern struct sysctl_oid_list sysctl__hw_cxgb_children; static int sleep_ticks = 1; @@ -155,16 +155,17 @@ cxgb_pcpu_enqueue_packet(struct ifnet *i static int cxgb_dequeue_packet(struct sge_txq *txq, struct mbuf **m_vec) { - struct mbuf *m; + struct mbuf *m, *m0; struct sge_qset *qs; int count, size, coalesced; struct adapter *sc; + #ifndef IFNET_MULTIQUEUE struct port_info *pi = txq->port; + mtx_assert(&txq->lock, MA_OWNED); if (txq->immpkt != NULL) panic("immediate packet set"); - mtx_assert(&txq->lock, MA_OWNED); IFQ_DRV_DEQUEUE(&pi->ifp->if_snd, m); if (m == NULL) @@ -174,6 +175,7 @@ cxgb_dequeue_packet(struct sge_txq *txq, return (1); #endif + mtx_assert(&txq->lock, MA_OWNED); coalesced = count = size = 0; qs = txq_to_qset(txq, TXQ_ETH); if (qs->qs_flags & QS_EXITING) @@ -192,9 +194,7 @@ cxgb_dequeue_packet(struct sge_txq *txq, return (0); count = 1; - KASSERT(m->m_type == MT_DATA, - ("m=%p is bad mbuf type %d from ring cons=%d prod=%d", m, - m->m_type, txq->txq_mr.br_cons, txq->txq_mr.br_prod)); + m_vec[0] = m; if (m->m_pkthdr.tso_segsz > 0 || m->m_pkthdr.len > TX_WR_SIZE_MAX || m->m_next != NULL || (coalesce_tx_enable == 0)) { @@ -209,7 +209,11 @@ cxgb_dequeue_packet(struct sge_txq *txq, size + m->m_pkthdr.len > TX_WR_SIZE_MAX || m->m_next != NULL) break; - buf_ring_dequeue_sc(txq->txq_mr); + m0 = buf_ring_dequeue_sc(txq->txq_mr); +#ifdef DEBUG_BUFRING + if (m0 != m) + panic("peek and dequeue don't match"); +#endif size += m->m_pkthdr.len; m_vec[count++] = m;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811210444.mAL4ioW6074175>