mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
Fix an off-by-one error when deciding to request a tx interrupt
The canonical check for whether or not a ring is drainable is TXQ_AVAIL() > MAX_TX_DESC() + 2. Use this same construct here, in order to avoid a potential off-by-one error where we might otherwise fail to request an interrupt. Reviewed by: mmacy Sponsored by: Netflix
This commit is contained in:
parent
f185a3dc33
commit
1f7ce05d1d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=333329
|
@ -3299,7 +3299,7 @@ iflib_encap(iflib_txq_t txq, struct mbuf **m_headp)
|
|||
*/
|
||||
txq->ift_rs_pending += nsegs + 1;
|
||||
if (txq->ift_rs_pending > TXQ_MAX_RS_DEFERRED(txq) ||
|
||||
iflib_no_tx_batch || (TXQ_AVAIL(txq) - nsegs - 1) <= MAX_TX_DESC(ctx)) {
|
||||
iflib_no_tx_batch || (TXQ_AVAIL(txq) - nsegs) <= MAX_TX_DESC(ctx) + 2) {
|
||||
pi.ipi_flags |= IPI_TX_INTR;
|
||||
txq->ift_rs_pending = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue