david/ipxe
Archived
1
0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src/drivers/net
Michael Brown 2d3f2b2446 [ncm] Use large multi-packet buffers by default
Some devices have a very small number of internal buffers, and rely on
being able to pack multiple packets into each buffer.  Using 2048-byte
buffers on such devices produces throughput of around 100Mbps.  Using
a small number of much larger buffers (e.g. 32kB) increases the
throughput to around 780Mbps.  (The full 1Gbps is not reached because
the high RTT induced by the use of multi-packet buffers causes us to
saturate our 256kB TCP window.)

Since allocation of large buffers is very likely to fail, allocate the
buffer set only once when the device is opened and recycle buffers
immediately after use.  Received data is now always copied to
per-packet buffers.

If allocation of large buffers fails, fall back to allocating a larger
number of smaller buffers.  This will give reduced performance, but
the device will at least still be functional.

Share code between the interrupt and bulk IN endpoint handlers, since
the buffer handling is now very similar.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-02-06 09:54:04 +00:00
..
ath [legal] Add missing FILE_LICENCE declarations 2013-07-15 13:41:46 +02:00
efi [efi] Include NII driver within "snp" and "snponly" build targets 2014-10-17 16:52:31 +01:00
igbvf [igbvf] Allow changing of MAC address 2014-06-12 17:46:12 +01:00
phantom [settings] Explicitly separate the concept of a completed fetched setting 2013-12-05 00:37:02 +00:00
rtl818x [build] Fix dubious uses of bitwise operators 2013-04-28 17:31:23 +01:00
tg3 [tg3] Fix various tg3 issues 2013-03-04 21:56:24 +00:00
vxge [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
3c5x9.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
3c90x.c [3c90x] Fix High-MTU packet reception 2013-08-20 14:38:33 +01:00
3c90x.h [3c90x] Don't round up transmit packet length 2013-08-20 14:37:05 +01:00
3c503.c [ns8390] Use stub files instead of src/Config 2008-06-30 12:26:12 -07:00
3c509-eisa.c [console] Move putchar() and getchar() declarations to stdio.h 2012-03-26 14:43:52 +01:00
3c509.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
3c509.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
3c515.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
3c515.txt Initial revision 2005-03-08 18:53:11 +00:00
3c529.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
3c595.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
3c595.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
amd8111e.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
amd8111e.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
atl1e.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
atl1e.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
b44.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
b44.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
bnx2_fw.h Ported bnx2 driver from Etherboot 5.4. 2007-03-13 23:03:50 +00:00
bnx2.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
bnx2.h [ethernet] Update mii.h and use it in drivers that had a private copy 2009-05-26 11:30:31 +01:00
cs89x0.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
cs89x0.h [cs89x0] Remove conflicting macro definitions 2013-03-25 22:23:04 +00:00
cs89x0.txt ]Drivers] Update licensing for cs89x0.[ch] and cs89x0.txt 2008-03-18 22:31:26 -04:00
davicom.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
depca.c [console] Move putchar() and getchar() declarations to stdio.h 2012-03-26 14:43:52 +01:00
dmfe.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
ecm.c [ncm] Add support for CDC-NCM USB Ethernet devices 2015-02-03 12:33:35 +00:00
ecm.h [ncm] Add support for CDC-NCM USB Ethernet devices 2015-02-03 12:33:35 +00:00
eepro100.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
eepro100.h [pci] Make driver PCI ID a property of the PCI device 2011-02-17 01:25:12 +00:00
eepro.c [eepro] Avoid unused variable warning in gcc 4.6 2011-03-16 19:51:02 +00:00
epic100.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
epic100.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
etherfabric_nic.h [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
etherfabric.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
etherfabric.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
forcedeth.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
forcedeth.h [forcedeth] Increase TX ring size to prevent dropped packets 2012-10-29 10:14:00 +00:00
hfa384x.h [prism2] Use standard type names 2013-03-27 15:16:52 +00:00
intel.c [intel] Use autoloaded MAC address instead of EEPROM MAC address 2014-10-31 15:24:40 +00:00
intel.h [intel] Apply PBS/PBA errata workaround only to ICH8 PCI device IDs 2014-08-21 00:40:22 +01:00
intelx.c [intel] Add 8086:1557 card (Intel 82599 10G ethernet mezz) 2014-10-03 13:22:09 +01:00
intelx.h [intel] Add intelx driver for Intel 10 Gigabit Ethernet NICs 2013-04-18 23:56:06 +01:00
ipoib.c [netdevice] Add method for generating EUI-64 address from link-layer address 2013-09-03 01:24:15 +01:00
jme.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
jme.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
legacy.c [netdevice] Call netdev_link_[up|down|err]() only while registered 2010-09-05 02:51:46 +01:00
mii.c [mii] Add separate mii_restart() function 2012-08-23 21:25:51 +01:00
myri10ge_mcp.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
myri10ge.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
myson.c [myson] Check for ioremap() failures 2014-07-16 15:53:43 +01:00
myson.h [myson] Replace driver for Myson Technology NICs 2012-04-27 11:46:58 +01:00
natsemi.c [natsemi] Check for ioremap() failures 2014-07-16 15:54:49 +01:00
natsemi.h [natsemi] Fix test for addresses below 4GB 2012-04-27 01:22:02 +01:00
ncm.c [ncm] Use large multi-packet buffers by default 2015-02-06 09:54:04 +00:00
ncm.h [ncm] Use large multi-packet buffers by default 2015-02-06 09:54:04 +00:00
ne2k_isa.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
ne.c [ns8390] Use stub files instead of src/Config 2008-06-30 12:26:12 -07:00
netfront.c [xen] Cope with unexpected initial backend states 2014-08-14 00:14:51 +01:00
netfront.h [xen] Add support for Xen netfront virtual NICs 2014-07-29 15:57:56 +01:00
netvsc.c [hyperv] Assume that VMBus xfer page ranges correspond to RNDIS messages 2014-12-20 21:33:53 +00:00
netvsc.h [hyperv] Increase TX ring size 2014-12-20 12:41:42 +00:00
ns8390.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
ns8390.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
p80211hdr.h [prism2] Use standard type names 2013-03-27 15:16:52 +00:00
pcnet32.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
pcnet32.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
pnic_api.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
pnic.c [pci] Make driver PCI ID a property of the PCI device 2011-02-17 01:25:12 +00:00
prism2_pci.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
prism2_plx.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
prism2.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
realtek.c [realtek] Check for ioremap() failures 2014-07-16 15:50:18 +01:00
realtek.h [realtek] Clear bit 24 of RCR 2014-03-20 15:54:25 +00:00
rhine.c [rhine] Rewrite VIA Rhine driver 2013-07-14 18:09:01 +02:00
rhine.h [rhine] Rewrite VIA Rhine driver 2013-07-14 18:09:01 +02:00
sis190.c [sis190] Avoid unused variable warning in gcc 4.6 2011-03-16 19:32:24 +00:00
sis190.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
sis900.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
sis900.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
skeleton.c [skel] Check for ioremap() failures 2014-07-16 15:52:48 +01:00
skeleton.h [skel] Add skeleton network driver 2012-04-21 08:05:24 +01:00
skge.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
skge.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
sky2.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
sky2.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
smc9000.c [smc9000] Avoid using CONFIG as a preprocessor macro 2014-08-19 14:38:27 +01:00
smc9000.h [smc9000] Avoid using CONFIG as a preprocessor macro 2014-08-19 14:38:27 +01:00
sundance.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
tlan.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
tlan.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
tulip.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
tulip.txt Update email addresses in drivers 2007-06-09 15:23:17 -04:00
velocity.c [velocity] Rewrite VIA Velocity driver 2013-07-15 11:25:51 +02:00
velocity.h [velocity] Rewrite VIA Velocity driver 2013-07-15 11:25:51 +02:00
virtio-net.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
virtio-net.h [virtio] Add legacy driver for KVM virtio-net 2008-08-01 16:55:49 +01:00
vmxnet3.c [vmxnet3] Add profiling code to exclude time spent in the hypervisor 2014-12-12 10:18:03 +00:00
vmxnet3.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
w89c840.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
wd.c [ns8390] Use stub files instead of src/Config 2008-06-30 12:26:12 -07:00
wlan_compat.h [prism2] Use standard type names 2013-03-27 15:16:52 +00:00