aboutsummaryrefslogtreecommitdiff
path: root/src/drivers
AgeCommit message (Collapse)AuthorFilesLines
2012-08-31[ipoib] Expose Ethernet-compatible eIPoIB link-layer addresses and headersMichael Brown1-260/+375
Almost all clients of the raw-packet interfaces (UNDI and SNP) can handle only Ethernet link layers. Expose an Ethernet-compatible link layer to local clients, while remaining compatible with IPoIB on the wire. This requires manipulation of ARP (but not DHCP) packets within the IPoIB driver. This is ugly, but it's the only viable way to allow IPoIB devices to be driven via the raw-packet interfaces. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-31[infiniband] Include destination address vector in ib_complete_recv()Michael Brown5-10/+28
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-31[infiniband] Use explicit "source" and "dest" address vector parameter namesMichael Brown5-105/+109
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-31[infiniband] Allow queue pairs to have a custom allocator for receive iobufsMichael Brown2-4/+15
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-24[realtek] Force EEPROM CS low before disabling EEPROM access modeMichael Brown2-3/+32
Some RTL8169 cards seem to drive the EEPROM CS line high (i.e. active) when 9346CR.EEM is set to "normal operating mode", with the result that the CS line is never deasserted. The symptom of this is that the first read from the EEPROM will work, while all subsequent reads will return garbage data. Reported-by: Thomas Miletich <thomas.miletich@gmail.com> Debugged-by: Thomas Miletich <thomas.miletich@gmail.com> Tested-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-24[bitbash] Add optional open() and close() methods for bit-bashing interfacesMichael Brown2-1/+16
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-23[realtek] Forcibly enable advertisement of 1000Mbps speedsMichael Brown1-7/+72
Some RTL8169 cards (observed with an RTL8169SC) power up advertising only 100Mbps, despite being capable of 1000Mbps. Forcibly enable advertisement of 1000Mbps on any RTL8169-like card. This change relies on the assumption that the CTRL1000 register will not exist on 100Mbps-only RTL8169 cards such as the RTL8101. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-23[mii] Add separate mii_restart() functionMichael Brown1-4/+32
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-23[realtek] Enable DAC only when built as a 64-bit binaryMichael Brown1-2/+7
Some RTL8169 cards (observed with an RTL8169SC) crash and burn if DAC is enabled, even if only 32-bit addresses are used. Observed behaviour includes system lockups and repeated transmission of garbage data onto the wire. This seems to be a known problem. The Linux r8169 driver disables DAC by default and provides a "use_dac" module parameter. There appears to be no known test for determining whether or not DAC will work. As a workaround, enable DAC only if we are built as as 64-bit binary. This at least eliminates the problem in the common case of a 32-bit build, which will never use 64-bit addresses anyway. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-23[realtek] Use read-modify-write to check for C+ Command registerMichael Brown1-3/+4
Some bits in the C+ Command register are always one. Testing for the presence of the register must allow for this. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-23[realtek] Use explicit value for TCR.MXDMAMichael Brown2-0/+13
Some RTL8169 cards (observed with an RTL8169SC) power up with TCR.MXDMA set to 16 bytes. While this does not prevent proper operation, it almost certainly degrades performance. Fix by explicitly setting TCR.MXDMA to "unlimited". Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-23[realtek] Use explicit values for RCR.RXFTH and RCR.MXDMAMichael Brown2-2/+10
Some RTL8169 cards (observed with an RTL8169SC) power up with invalid values in RCR.RXFTH and RCR.MXDMA, causing receive DMA to fail. Fix by setting explicit values for both fields. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-23[realtek] Always set high dword of ring address registersMichael Brown1-4/+2
Some RTL8169 cards (observed with an RTL8169SC) power up with garbage values in the ring address registers, and do not clear the registers on reset. Fix by always setting the high dword of the ring address registers. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-08-20[tg3] Fix driver for BCM5719, BCM5720, BCM5764M, BCM57762Kevin Tran4-19/+29
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-24[tg3] Fix excessive DMA alignment.Thomas Miletich1-2/+1
Change the DMA alignment from 4096 bytes to 16 bytes, to conserve available DMA memory. The hardware doesn't have any specific alignment requirements. Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-23[epic100] Fix wrong field used as rx packet lengthAlexey1-2/+2
Datasheet pp. 41-42 defines 'rx packet length' as upper word of 'status' dword field of the receive descriptor table. http://www.smsc.com/media/Downloads_Archive/discontinued/83c171.pdf Tested on SMC EtherPower II. Signed-off-by: Alexey Smazhenko <darkover@corbina.com.ua> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-20[legal] Update FSF mailing address in GPL licence textsMichael Brown53-55/+106
Suggested-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-20[qib7322] Fix compiler warning on gcc 4.7Michael Brown1-0/+3
Originally-fixed-by: Christian Hesse <list@eworm.de> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-20[isa] Avoid spurious compiler warning on gcc 4.7Michael Brown1-3/+3
gcc 4.7 produces a spurious warning about an array subscript being out of bounds. Use a pointer dereference instead of an array lookup to inhibit this spurious warning. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-19[skel] Add missing iounmap()Michael Brown1-0/+2
Reported-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-19[myson] Add missing iounmap()Michael Brown1-0/+2
Reported-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-19[natsemi] Add missing iounmap()Michael Brown1-0/+2
Reported-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-19[realtek] Add missing iounmap()Michael Brown1-0/+2
Reported-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-19[intel] Add missing iounmap()Michael Brown1-0/+2
Reported-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-17[b44] Eliminate call to get_memmap()Michael Brown1-26/+31
get_memmap() is not available under all runtime environments. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-10[intel] Explicitly enable descriptor queuesMichael Brown2-0/+10
On i350 the datasheet contradicts itself in stating that the default value of RXDCTL.ENABLE for queue zero is both set (according to the "Receive Initialization" section) and unset (according to the "Receive Descriptor Control - RXDCTL" section). Empirical evidence suggests that the default value is unset. Explicitly enable both transmit and receive queues to avoid any ambiguity. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-07-10[intel] Refill receive ring only after enabling receiverMichael Brown1-3/+3
On 82576 (and probably others), the datasheet states that "the tail register of the queue (RDT[n]) should not be bumped until the queue is enabled". There is some confusion over exactly what constitutes "enabled": the initialisation blurb says that we should "poll the RXDCTL register until the ENABLE bit is set", while the description for the RXDCTL register says that the ENABLE bit is set by default (for queue zero). Empirical evidence suggests that the ENABLE bit reads as set immediately after writing to RCTL.EN, and so polling is not necessary. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-06-27[realtek] Add missing cpu_to_le16()Michael Brown1-1/+1
Reported-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-06-27[sky2] Fix invalid memory accessValentine Barshak1-1/+1
Use hw pointer in PCI driver data as expected by sky2_remove(). Signed-off-by: Valentine Barshak <gvaxon@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-28[realtek] Support RTL8139 cards within generic Realtek driverMichael Brown3-649/+400
RTL8139C+ cards use essentially the same datapath as RTL8169, which is zerocopy and 64-bit capable. Older RTL8139 cards use a single receive ring buffer rather than a descriptor ring, but still share substantial amounts of functionality with RTL8169. Include support for RTL8139 cards within the generic Realtek driver, since there is no way to differentiate between RTL8139 and RTL8139C+ cards based on the PCI IDs alone. Many thanks to all the people who worked on the rtl8139 driver over the years. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-27[myson] Replace driver for Myson Technology NICsMichael Brown3-1022/+868
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-27[natsemi] Fix test for addresses below 4GBMichael Brown1-2/+2
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-26[natsemi] Replace driver for National Semicondutor NICsMichael Brown3-1682/+1095
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-23[intel] Replace driver for Intel Gigabit NICsMichael Brown64-47324/+1198
Tested-by: Robin Smidsrød <robin@smidsrod.no> Tested-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-23[realtek] Update link state when device is openedMichael Brown1-0/+3
The link state is currently set at probe time, and updated only when the device is polled. This results in the user seeing a misleading stale "Link: down" message, if autonegotiation did not complete within the short timespan of the probe routine. Fix by updating the link state when the device is opened, so that the message that ends up being displayed to the user reflects the real link state at device open time. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-21[skel] Add skeleton network driverMichael Brown2-0/+331
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-18[realtek] Replace driver for Realtek Gigabit NICsMichael Brown4-2718/+984
Tested-by: Thomas Miletich <thomas.miletich@gmail.com> Debugged-by: Thomas Miletich <thomas.miletich@gmail.com> Tested-by: Robin Smidsrød <robin@smidsrod.no> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-18[mii] Add generic MII reset functionMichael Brown1-0/+85
iPXE provides no support for manually configuring the link speed. Provide a generic routine which should be able to reset any MII/GMII PHY and enable autonegotiation. Prototyped-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-18[mii] Synchronise constants with current Linux include/linux/mii.hMichael Brown1-1/+0
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-10[igbvf] Add i350 virtual function supportErik Jacobson2-1/+3
Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-04-10[e1000e] Basic 82579 supportDaniel Hokka Zakrisson7-15/+67
Add support for 82579-based chips such as those found on Sandy Bridge motherboards. Based on d3738bb8203acf8552c3ec8b3447133fc0938ddd in Linux. Signed-off-by: Daniel Hokka Zakrisson <daniel@hozac.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-03-26[console] Move putchar() and getchar() declarations to stdio.hMichael Brown5-5/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-03-16[myri10ge] Fix compilation error in myri10ge_command() with gcc 4.7Olaf Hering2-4/+4
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-03-14[eepro100] Add PCI ID 8086:10fe1d 2k1-0/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-03-13[forcedeth] Use standard random() functionMichael Brown1-2/+1
It seems unlikely that a network card driver requires cryptographically secure random numbers. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-03-09[ath9k] Fix compilation on older gcc versionsMichael Brown2-3/+2
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-02-12[snpnet] Give up entirely on the transmit queueJarrod Johnson1-32/+13
Practically speaking, it seems the convention is to only have one packet pending and not rely upon any mechanism to associate returned txbuf with txqueue. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-02-10[tg3] Remove tg3_calc_dma_bndry()Thomas Miletich3-29/+6
This function never did much in this driver anyway, and after commit b5ed30b2 ("[tg3] Fix compilation on newer gcc versions") it became apparent that its remaining functionality could be easily moved to tg3_test_dma(). Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-02-09[tg3] Fix compilation on newer gcc versionsChristian Hesse3-13/+2
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-01-30[tg3] New tg3 driverThomas Miletich5-3905/+7000
Replace the old Etherboot tg3 driver with a more up-to-date driver using the iPXE API. Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>