svn commit: r185149 - user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb

Kip Macy kmacy at FreeBSD.org
Thu Nov 20 22:01:06 PST 2008


Author: kmacy
Date: Fri Nov 21 06:01:05 2008
New Revision: 185149
URL: http://svn.freebsd.org/changeset/base/185149

Log:
  enable ALTQ support using ifp's sendq

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:49:15 2008	(r185148)
+++ user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_multiq.c	Fri Nov 21 06:01:05 2008	(r185149)
@@ -148,7 +148,11 @@ cxgb_pcpu_enqueue_packet(struct ifnet *i
 	qidx = 0;
 #endif	    
 	qs = &pi->adapter->sge.qs[qidx];
-	err = cxgb_pcpu_enqueue_packet_(qs, m);
+	if (ALTQ_IS_ENABLED(&ifp->if_snd)) {
+		IFQ_ENQUEUE(&ifp->if_snd, m, err);
+	} else {
+		err = cxgb_pcpu_enqueue_packet_(qs, m);
+	}
 	return (err);
 }
 
@@ -174,7 +178,15 @@ cxgb_dequeue_packet(struct sge_txq *txq,
 	m_vec[0] = m;
 	return (1);
 #endif
-
+	if (ALTQ_ENABLED(&pi->ifp->if_snd)) {
+		IFQ_DRV_DEQUEUE(&pi->ifp->if_snd, m);
+		if (m == NULL)
+			return (0);
+	
+		m_vec[0] = m;
+		return (1);		
+	}
+	
 	mtx_assert(&txq->lock, MA_OWNED);
 	coalesced = count = size = 0;
 	qs = txq_to_qset(txq, TXQ_ETH);
@@ -294,7 +306,8 @@ cxgb_pcpu_start_(struct sge_qset *qs, st
 		initerr = ENXIO;
 	else if (immpkt) {
 
-		if (!buf_ring_empty(txq->txq_mr)) 
+		if (!buf_ring_empty(txq->txq_mr)
+		    || ALTQ_ENABLED(&pi->ifp->if_snd)) 
 			initerr = cxgb_pcpu_enqueue_packet_(qs, immpkt);
 		else
 			txq->immpkt = immpkt;


More information about the svn-src-user mailing list