summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2009-05-27 13:59:17 +0000
committeradrian <adrian@FreeBSD.org>2009-05-27 13:59:17 +0000
commit6e53147404a7f4fb4173694bc812d9d23efd9fef (patch)
treef63b8fce438e28f4c74f2ba9ade8a25eeb1650ce
parent63bb0d13abb334cce96d3c28be655a52cd8d50a8 (diff)
downloadFreeBSD-src-6e53147404a7f4fb4173694bc812d9d23efd9fef.zip
FreeBSD-src-6e53147404a7f4fb4173694bc812d9d23efd9fef.tar.gz
Clear IFF_DRV_OACTIVE if at least one TX xen/mbuf ring slot has been freed.
-rw-r--r--sys/dev/xen/netfront/netfront.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/xen/netfront/netfront.c b/sys/dev/xen/netfront/netfront.c
index 3498e5d..046cd65 100644
--- a/sys/dev/xen/netfront/netfront.c
+++ b/sys/dev/xen/netfront/netfront.c
@@ -1099,6 +1099,8 @@ xn_txeof(struct netfront_info *np)
panic("netif_release_tx_bufs: tx_chain_cnt must be >= 0");
}
m_free(m);
+ /* Only mark the queue active if we've freed up at least one slot to try */
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
}
np->tx.rsp_cons = prod;
@@ -1115,7 +1117,6 @@ xn_txeof(struct netfront_info *np)
prod + ((np->tx.sring->req_prod - prod) >> 1) + 1;
mb();
-
} while (prod != np->tx.sring->rsp_prod);
out:
OpenPOWER on IntegriCloud