summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2014-05-16 14:07:36 +0200
committerMichael Brown2014-05-16 14:15:40 +0200
commit4e4fc678c27fc8020e8ebab3a2bcf6570a75155c (patch)
treef064710dac16eea1577beb20bfb4f1d9ebc43e1c /src
parent[nfs] Fix an invalid free() when loading a regular (non-symlink) file (diff)
downloadipxe-4e4fc678c27fc8020e8ebab3a2bcf6570a75155c.tar.gz
ipxe-4e4fc678c27fc8020e8ebab3a2bcf6570a75155c.tar.xz
ipxe-4e4fc678c27fc8020e8ebab3a2bcf6570a75155c.zip
[intel] Increase receive ring fill level
As of commit d28bb51 ("[tcp] Defer sending ACKs until all received packets have been processed"), increasing the RX ring size will increase the number of received packets per transmitted ACK (since each poll will process up to one complete receive ring). Under KVM, this can make a substantial (up to ~200%) difference to the overall download speed, since transmissions are very expensive. Increase the ring fill level from four to eight packets: this increases the download speed by around 50% at a cost of around 8kB of heap space. Further speedups are possible by increasing the ring size further, but it would be preferable to find alternative methods which do not use noticeable amounts of heap space. Tested-by: Robin Smidsrød <robin@smidsrod.no> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/drivers/net/intel.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/drivers/net/intel.h b/src/drivers/net/intel.h
index 8ce9ea97..e200e2ae 100644
--- a/src/drivers/net/intel.h
+++ b/src/drivers/net/intel.h
@@ -138,10 +138,10 @@ enum intel_descriptor_status {
* Minimum value is 8, since the descriptor ring length must be a
* multiple of 128.
*/
-#define INTEL_NUM_RX_DESC 8
+#define INTEL_NUM_RX_DESC 16
/** Receive descriptor ring fill level */
-#define INTEL_RX_FILL 4
+#define INTEL_RX_FILL 8
/** Receive buffer length */
#define INTEL_RX_MAX_LEN 2048