Date: Sun, 7 Jun 2009 03:51:52 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r193607 - user/kmacy/releng_7_2_fcs/sys/dev/cxgb Message-ID: <200906070351.n573pqhG080656@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kmacy Date: Sun Jun 7 03:51:52 2009 New Revision: 193607 URL: http://svn.freebsd.org/changeset/base/193607 Log: - simplify t3_encap by only calliing txq_prod at the start - change the unacked overflow to 8 down from 32 like the linux driver Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c 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 Sun Jun 7 01:38:14 2009 (r193606) +++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c Sun Jun 7 03:51:52 2009 (r193607) @@ -1055,8 +1055,8 @@ txq_prod(struct sge_txq *txq, unsigned i */ txqs->gen = txq->gen; txq->unacked += ndesc; - txqs->compl = (txq->unacked & 32) << (S_WR_COMPL - 5); - txq->unacked &= 31; + txqs->compl = (txq->unacked & 8) << (S_WR_COMPL - 3); + txq->unacked &= 7; txqs->pidx = txq->pidx; txq->pidx += ndesc; #ifdef INVARIANTS @@ -1090,7 +1090,7 @@ calc_tx_descs(const struct mbuf *m, int { unsigned int flits; - if (m->m_pkthdr.len <= WR_LEN - sizeof(struct cpl_tx_pkt)) + if (m->m_pkthdr.len <= PIO_LEN) return 1; flits = sgl_len(nsegs) + 2; @@ -1365,11 +1365,17 @@ t3_encap(struct sge_qset *qs, struct mbu #endif 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); - } + ndesc = 1; + } else { + if ((err = busdma_map_sg_collapse(&m0, segs, &nsegs))) { + if (cxgb_debug) + printf("failed ... err=%d\n", err); + return (err); + } + ndesc = calc_tx_descs(m0, nsegs); + } + txq_prod(txq, ndesc, &txqs); + KASSERT(m0->m_pkthdr.len, ("empty packet nsegs=%d", nsegs)); txsd->m = m0; @@ -1382,7 +1388,6 @@ t3_encap(struct sge_qset *qs, struct mbu txq->txq_coalesced += nsegs; wrp = (struct work_request_hdr *)txd; flits = nsegs*2 + 1; - txq_prod(txq, 1, &txqs); for (fidx = 1, i = 0; i < nsegs; i++, fidx += 2) { struct cpl_tx_pkt_batch_entry *cbe = &cpl_batch->pkt_entry[i]; @@ -1472,7 +1477,6 @@ t3_encap(struct sge_qset *qs, struct mbu DPRINTF("**5592 Fix** mbuf=%p,len=%d,tso_segsz=%d,csum_flags=%#x,flags=%#x", m0, mlen, m0->m_pkthdr.tso_segsz, m0->m_pkthdr.csum_flags, m0->m_flags); txsd->m = NULL; - txq_prod(txq, 1, &txqs); m_copydata(m0, 0, mlen, (caddr_t)&txd->flit[3]); flits = (mlen + 7) / 8 + 3; wr_hi = htonl(V_WR_BCNTLFLT(mlen & 7) | @@ -1501,7 +1505,6 @@ t3_encap(struct sge_qset *qs, struct mbu if (mlen <= PIO_LEN) { txsd->m = NULL; - txq_prod(txq, 1, &txqs); m_copydata(m0, 0, mlen, (caddr_t)&txd->flit[2]); flits = (mlen + 7) / 8 + 2; @@ -1518,15 +1521,12 @@ t3_encap(struct sge_qset *qs, struct mbu flits = 2; } wrp = (struct work_request_hdr *)txd; - - ndesc = calc_tx_descs(m0, nsegs); - sgp = (ndesc == 1) ? (struct sg_ent *)&txd->flit[flits] : sgl; make_sgl(sgp, segs, nsegs); sgl_flits = sgl_len(nsegs); - txq_prod(txq, ndesc, &txqs); + KASSERT(ndesc <= 4, ("ndesc too large %d", ndesc)); wr_hi = htonl(V_WR_OP(FW_WROPCODE_TUNNEL_TX_PKT) | txqs.compl); wr_lo = htonl(V_WR_TID(txq->token)); write_wr_hdr_sgl(ndesc, txd, &txqs, txq, sgl, flits,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906070351.n573pqhG080656>