Use ATH_MAX_SCATTER rather than ATH_TXDESC.
ATH_MAX_SCATTER is used to size the ath_buf DMA segment array. We thus should use it when checking sizes of things.
This commit is contained in:
parent
80b87f1814
commit
09067b6e9a
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=248985
@ -3276,7 +3276,7 @@ ath_desc_alloc(struct ath_softc *sc)
|
||||
int error;
|
||||
|
||||
error = ath_descdma_setup(sc, &sc->sc_txdma, &sc->sc_txbuf,
|
||||
"tx", sc->sc_tx_desclen, ath_txbuf, ATH_TXDESC);
|
||||
"tx", sc->sc_tx_desclen, ath_txbuf, ATH_MAX_SCATTER);
|
||||
if (error != 0) {
|
||||
return error;
|
||||
}
|
||||
|
@ -312,7 +312,7 @@ ath_tx_dmasetup(struct ath_softc *sc, struct ath_buf *bf, struct mbuf *m0)
|
||||
BUS_DMA_NOWAIT);
|
||||
if (error == EFBIG) {
|
||||
/* XXX packet requires too many descriptors */
|
||||
bf->bf_nseg = ATH_TXDESC+1;
|
||||
bf->bf_nseg = ATH_MAX_SCATTER + 1;
|
||||
} else if (error != 0) {
|
||||
sc->sc_stats.ast_tx_busdma++;
|
||||
ath_freetx(m0);
|
||||
@ -323,9 +323,9 @@ ath_tx_dmasetup(struct ath_softc *sc, struct ath_buf *bf, struct mbuf *m0)
|
||||
* require too many TX descriptors. We try to convert
|
||||
* the latter to a cluster.
|
||||
*/
|
||||
if (bf->bf_nseg > ATH_TXDESC) { /* too many desc's, linearize */
|
||||
if (bf->bf_nseg > ATH_MAX_SCATTER) { /* too many desc's, linearize */
|
||||
sc->sc_stats.ast_tx_linear++;
|
||||
m = m_collapse(m0, M_NOWAIT, ATH_TXDESC);
|
||||
m = m_collapse(m0, M_NOWAIT, ATH_MAX_SCATTER);
|
||||
if (m == NULL) {
|
||||
ath_freetx(m0);
|
||||
sc->sc_stats.ast_tx_nombuf++;
|
||||
@ -340,7 +340,7 @@ ath_tx_dmasetup(struct ath_softc *sc, struct ath_buf *bf, struct mbuf *m0)
|
||||
ath_freetx(m0);
|
||||
return error;
|
||||
}
|
||||
KASSERT(bf->bf_nseg <= ATH_TXDESC,
|
||||
KASSERT(bf->bf_nseg <= ATH_MAX_SCATTER,
|
||||
("too many segments after defrag; nseg %u", bf->bf_nseg));
|
||||
} else if (bf->bf_nseg == 0) { /* null packet, discard */
|
||||
sc->sc_stats.ast_tx_nodata++;
|
||||
|
Loading…
Reference in New Issue
Block a user