Date: Sat, 18 Nov 2017 20:38:05 +0000 (UTC) From: Emmanuel Vadot <manu@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r325977 - head/sys/arm/allwinner Message-ID: <201711182038.vAIKc5rr017618@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: manu Date: Sat Nov 18 20:38:05 2017 New Revision: 325977 URL: https://svnweb.freebsd.org/changeset/base/325977 Log: if_awg: only request completion interrupt on the last descriptor of a tx frame The hardware will not issue a completion interrupt for a descriptor with TX_INT_CTL set if it doesn't also have TX_LAST_DESC set. Submitted by: Guy Yur <guyyur_gmail.com> Differential Revision: https://reviews.freebsd.org/D13029 Modified: head/sys/arm/allwinner/if_awg.c Modified: head/sys/arm/allwinner/if_awg.c ============================================================================== --- head/sys/arm/allwinner/if_awg.c Sat Nov 18 20:32:09 2017 (r325976) +++ head/sys/arm/allwinner/if_awg.c Sat Nov 18 20:38:05 2017 (r325977) @@ -169,6 +169,7 @@ struct awg_txring { bus_dma_tag_t buf_tag; struct awg_bufmap buf_map[TX_DESC_COUNT]; u_int cur, next, queued; + u_int segs; }; struct awg_rxring { @@ -399,8 +400,6 @@ awg_setup_txdesc(struct awg_softc *sc, int index, int } else { status = TX_DESC_CTL; size = flags | len; - if ((index & (awg_tx_interval - 1)) == 0) - size |= TX_INT_CTL; ++sc->tx.queued; } @@ -449,8 +448,18 @@ awg_setup_txbuf(struct awg_softc *sc, int index, struc for (cur = index, i = 0; i < nsegs; i++) { sc->tx.buf_map[cur].mbuf = (i == 0 ? m : NULL); - if (i == nsegs - 1) + sc->tx.segs++; + if (i == nsegs - 1) { flags |= TX_LAST_DESC; + /* + * Can only request TX completion + * interrupt on last descriptor. + */ + if (sc->tx.segs >= awg_tx_interval) { + sc->tx.segs = 0; + flags |= TX_INT_CTL; + } + } awg_setup_txdesc(sc, cur, flags, segs[i].ds_addr, segs[i].ds_len); flags &= ~TX_FIR_DESC;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201711182038.vAIKc5rr017618>