From owner-svn-src-user@FreeBSD.ORG Fri Jun 5 23:59:22 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4AD8A106564A; Fri, 5 Jun 2009 23:59:22 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3877C8FC13; Fri, 5 Jun 2009 23:59:22 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n55NxLgM042155; Fri, 5 Jun 2009 23:59:21 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n55NxLCq042151; Fri, 5 Jun 2009 23:59:21 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906052359.n55NxLCq042151@svn.freebsd.org> From: Kip Macy Date: Fri, 5 Jun 2009 23:59:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193551 - in user/kmacy/releng_7_2_fcs/sys/dev/cxgb: . sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Jun 2009 23:59:22 -0000 Author: kmacy Date: Fri Jun 5 23:59:21 2009 New Revision: 193551 URL: http://svn.freebsd.org/changeset/base/193551 Log: - remove count from t3_encap interface - simplify busdma_map_sg_vec Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_adapter.h user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/mvec.h user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/uipc_mvec.c Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_adapter.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_adapter.h Fri Jun 5 23:53:17 2009 (r193550) +++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_adapter.h Fri Jun 5 23:59:21 2009 (r193551) @@ -504,7 +504,6 @@ void t3_sge_stop(adapter_t *); void t3b_intr(void *data); void t3_intr_msi(void *data); void t3_intr_msix(void *data); -int t3_encap(struct sge_qset *, struct mbuf **, int); int t3_sge_init_adapter(adapter_t *); int t3_sge_reset_adapter(adapter_t *); Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c Fri Jun 5 23:53:17 2009 (r193550) +++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c Fri Jun 5 23:59:21 2009 (r193551) @@ -1276,8 +1276,8 @@ do { \ #define GET_VTAG(cntrl, m) #endif -int -t3_encap(struct sge_qset *qs, struct mbuf **m, int count) +static int +t3_encap(struct sge_qset *qs, struct mbuf **m) { adapter_t *sc; struct mbuf *m0; @@ -1311,32 +1311,34 @@ t3_encap(struct sge_qset *qs, struct mbu KASSERT(m0->m_flags & M_PKTHDR, ("not packet header\n")); #ifdef VLAN_SUPPORTED - if (count == 1 && m0->m_next != NULL && + if (m0->m_nextpkt == NULL && m0->m_next != NULL && m0->m_pkthdr.csum_flags & (CSUM_TSO)) tso_info = V_LSO_MSS(m0->m_pkthdr.tso_segsz); #endif - if (count > 1) { - busdma_map_sg_vec(m, segs, count); - nsegs = count; + if (m0->m_nextpkt != NULL) { + busdma_map_sg_vec(m0, segs, &nsegs); } else if ((err = busdma_map_sg_collapse(&m0, segs, &nsegs))) { if (cxgb_debug) printf("failed ... err=%d\n", err); return (err); } - KASSERT(m0->m_pkthdr.len, ("empty packet nsegs=%d count=%d", nsegs, count)); + KASSERT(m0->m_pkthdr.len, ("empty packet nsegs=%d", nsegs)); - if ((m0->m_pkthdr.len > PIO_LEN) || (count > 1)) + if ((m0->m_pkthdr.len > PIO_LEN) || (nsegs > 1)) txsd->m = m0; - if (count > 1) { + if (m0->m_nextpkt != NULL) { struct cpl_tx_pkt_batch *cpl_batch = (struct cpl_tx_pkt_batch *)txd; int i, fidx; + if (nsegs > 7) + panic("trying to coalesce %d packets in to one WR", nsegs); + wrp = (struct work_request_hdr *)txd; - flits = count*2 + 1; + flits = nsegs*2 + 1; txq_prod(txq, 1, &txqs); - for (fidx = 1, i = 0; i < count; i++, fidx += 2) { + for (fidx = 1, i = 0; i < nsegs; i++, fidx += 2) { struct cpl_tx_pkt_batch_entry *cbe = &cpl_batch->pkt_entry[i]; cntrl = V_TXPKT_INTF(pi->txpkt_intf); @@ -1537,12 +1539,11 @@ cxgb_start_locked(struct sge_qset *qs) { struct mbuf *m_head = NULL; struct sge_txq *txq = &qs->txq[TXQ_ETH]; - int txmax; + int avail, txmax; int in_use_init = txq->in_use; struct port_info *pi = qs->port; struct adapter *sc = pi->adapter; struct ifnet *ifp = pi->ifp; - int count, avail; struct coalesce_info ci; avail = txq->size - txq->in_use - 4; @@ -1553,11 +1554,9 @@ cxgb_start_locked(struct sge_qset *qs) (!TXQ_RING_EMPTY(qs)) && (ifp->if_drv_flags & IFF_DRV_RUNNING)) { reclaim_completed_tx(qs, (TX_ETH_Q_SIZE>>4), TXQ_ETH); check_pkt_coalesce(qs); - count = 1; if (sc->tunq_coalesce) { m_head = cxgb_dequeue_chain(qs, &ci); - count = ci.count; } else m_head = TXQ_RING_DEQUEUE(qs); @@ -1567,7 +1566,7 @@ cxgb_start_locked(struct sge_qset *qs) * Encapsulation can modify our pointer, and or make it * NULL on failure. In that event, we can't requeue. */ - if (t3_encap(qs, &m_head, count)) + if (t3_encap(qs, &m_head)) break; /* Send a copy of the frame to the BPF listener */ @@ -1576,7 +1575,7 @@ cxgb_start_locked(struct sge_qset *qs) /* * We sent via PIO, no longer need a copy */ - if (count == 1 && m_head->m_pkthdr.len <= PIO_LEN) + if (m_head->m_pkthdr.len <= PIO_LEN) m_freem(m_head); m_head = NULL; @@ -1610,7 +1609,7 @@ cxgb_transmit_locked(struct ifnet *ifp, */ if (sc->tunq_coalesce == 0 && pi->link_config.link_ok && TXQ_RING_EMPTY(qs) && avail > 4) { - if (t3_encap(qs, &m, 1)) { + if (t3_encap(qs, &m)) { if (m != NULL && (error = drbr_enqueue(ifp, br, m)) != 0) return (error); Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/mvec.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/mvec.h Fri Jun 5 23:53:17 2009 (r193550) +++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/mvec.h Fri Jun 5 23:59:21 2009 (r193551) @@ -50,7 +50,7 @@ busdma_map_mbuf_fast(struct mbuf *m, bus } int busdma_map_sg_collapse(struct mbuf **m, bus_dma_segment_t *segs, int *nsegs); -void busdma_map_sg_vec(struct mbuf **m, bus_dma_segment_t *segs, int count); +void busdma_map_sg_vec(struct mbuf *m, bus_dma_segment_t *segs, int *nsegs); static __inline int busdma_map_sgl(bus_dma_segment_t *vsegs, bus_dma_segment_t *segs, int count) { Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/uipc_mvec.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/uipc_mvec.c Fri Jun 5 23:53:17 2009 (r193550) +++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/sys/uipc_mvec.c Fri Jun 5 23:59:21 2009 (r193551) @@ -117,13 +117,10 @@ err_out: } void -busdma_map_sg_vec(struct mbuf **m, bus_dma_segment_t *segs, int pkt_count) +busdma_map_sg_vec(struct mbuf *m, bus_dma_segment_t *segs, int *nsegs) { - struct mbuf *m0; - int i; - - for (m0 = *m, i = 0; i < pkt_count; segs++, i++, m0 = m0->m_nextpkt) - busdma_map_mbuf_fast(m0, segs); + for (; m != NULL ; segs++, *nsegs += 1, m = m->m_nextpkt) + busdma_map_mbuf_fast(m, segs); }