summaryrefslogtreecommitdiffstats
path: root/src/drivers
Commit message (Collapse)AuthorAgeFilesLines
...
* [tg3] New tg3 driverThomas Miletich2012-01-315-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>
* [vmxnet3] Add VMware vmxnet3 driverMichael Brown2012-01-072-0/+1166
| | | | | Reviewed-by: Pete Holland <pholland27@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [e1000e] Strip the Ethernet CRC from received packetsMichael Brown2011-12-081-1/+1
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [e1000] Request notification of TX completionsMichael Brown2011-12-061-1/+1
| | | | | | | | | | | | | | | | | | | The RS bit is used to instruct the NIC to update the TX descriptor status byte. The RPS bit is used to instruct the NIC to defer this update until after the packet has been transmitted on the wire (rather than merely read into the transmit FIFO). The driver currently sets RPS but not RS. Some e1000 models seem to interpret this as implying that the status byte should be updated; some don't. On the ones that don't, we never see any TX completions and so rapidly run out of TX buffers. Fix by setting the RS bit in the TX descriptor. (We don't care about when the packet reaches the wire, so don't bother setting the RPS bit.) Reported-by: Miroslav Halas <miroslav.halas@bankofamerica.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [arbel] Ensure hardware is quiescent when no interfaces are openMichael Brown2011-11-162-92/+271
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [arbel] Reorder code in preparation for quiescing patchMichael Brown2011-11-151-190/+197
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hermon] Ensure hardware is quiescent when no interfaces are openMichael Brown2011-11-152-81/+217
| | | | | | | | | | | | | WinPE has been observed to call PXENV_UNDI_SHUTDOWN but not PXENV_STOP_UNDI. This means that Hermon hardware is left partially active (firmware running and one event queue mapped) when WinPE starts up, which can cause a Blue Screen of Death. Fix by ensuring that the hardware is left quiescent (with the firmware stopped) when no interfaces are open. Reported-by: Itay Gazit <itayg@mellanox.co.il> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hermon] Reorder code in preparation for quiescing patchMichael Brown2011-11-151-641/+648
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [ipoib] Report packets as broadcast when ambiguousMichael Brown2011-11-151-8/+13
| | | | | | | Avoid spurious matches for peer key 0 against empty peer cache entries, and set the LL_MULTICAST flag in addition to LL_BROADCAST. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [rtl8139] Perform only 8-bit ioport access on the ChipCmd registerJulian Pidancet2011-11-141-1/+1
| | | | | | | | | The ChipCmd register is only an 8-bit register. The 16-bit access used by iPXE was causing an issue when used with qemu emulated rtl8139 device which was improperly aligning IOs. Signed-off-by: Julian Pidancet <julian.pidancet@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [arbel] Add (not-yet-functional) support for RC queue pairsMichael Brown2011-10-242-8/+111
| | | | | | | | | | | | | Arbel seems to crash the system as soon as the first send WQE completes on an RC queue pair. (NOPs complete successfully, so this is a problem specific to the work queue rather than the completion queue.) The cause of this problem has remained unknown for over a year. Check in the non-functioning code to avoid bit-rot, and in the hope that someone will find the fix. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [ath9k] Add ath9k driverScott K Logan2011-10-1472-0/+43176
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [netdevice] Allow link layer to report broadcast/multicast packets via pull()Michael Brown2011-07-151-1/+4
| | | | | | | | Allow the link layer to directly report whether or not a packet is multicast or broadcast at the time of calling pull(), rather than relying on heuristics to determine this at a later stage. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [igb] Remove __BIG_ENDIAN conditionalThomas Miletich2011-07-151-5/+0Star
| | | | | | Reported-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [scsi] Eliminate polling while waiting for window to openMichael Brown2011-06-281-6/+13
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [process] Pass containing object pointer to process step() methodsMichael Brown2011-06-281-5/+8
| | | | | | | | | Give the step() method a pointer to the containing object, rather than a pointer to the process. This is consistent with the operation of interface methods, and allows a single function to serve as both an interface method and a process step() method. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [forcedeth] Ensure that IRQ line is deasserted when disabling interruptsMichael Brown2011-05-041-3/+2Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hermon] Remove temporary workaround for missing BOFM mport supportMichael Brown2011-05-041-39/+15Star
| | | | | | | This reverts commit 15c1200 ("[hermon] Work around missing mport support in current BOFM implementations"). Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hermon] Work around missing mport support in current BOFM implementationsMichael Brown2011-04-081-15/+39
| | | | | | | | | | | | | | | | | | | | | | | Current BOFM versions are unable to create entries with mport>1, which means that only the port 1 MAC address can be explicitly specified. Work around this by using the provided MAC address as a base address for all subsequent ports. For example, if BOFM assigns the address 00:1A:64:76:00:09 for port 1 then we will assign the addresses 00:1A:64:76:00:09 for port 1 00:1A:64:76:00:0a for port 2 Future BOFM versions that may correctly support mport will work with this scheme without modification provided that the BOFM entries are created in increasing order of mport. Since BOFM tools tend to generate entries in increasing order (of slot, port, etc), this is not an unreasonable compromise. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [arbel] Stop firmware only once on shutdownMichael Brown2011-04-081-1/+0Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hermon] Stop firmware only once on shutdownMichael Brown2011-04-081-1/+0Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [device] Make driver name a generic device propertyMichael Brown2011-04-085-6/+8
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [forcedeth] Never change the NVREG_TRANSMITPOLL_MAC_ADDR_REV flagMichael Brown2011-03-301-5/+0Star
| | | | | | | | | | | iPXE operates the forcedeth NIC in promiscuous mode, and never changes the unicast MAC address filter registers. We should not therefore set the flag indicating (to other drivers loaded later) that the MAC address order has already been corrected. Reported-by: Tal Aloni <tal.aloni.il@gmail.com> Tested-by: Tal Aloni <tal.aloni.il@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [forcedeth] Remove software unicast MAC address filterMichael Brown2011-03-291-9/+2Star
| | | | | | | | | | | | | | | | | | | The forcedeth driver currently implements unicast MAC address filtering in software. This is almost invariably the wrong thing to do (since the network stack must already be able to cope with unwanted packets) and it breaks FCoE (which requires the card to operate in promiscuous mode). Also, the implementation is buggy: is_local_ether_addr() is used to check for a locally-assigned Ethernet address (not to check for a unicast address), and the current link-layer address is in netdev->ll_addr, not netdev->hw_addr. Fix by removing this code. Reported-by: Tal Aloni <tal.aloni.il@gmail.com> Tested-by: Tal Aloni <tal.aloni.il@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [forcedeth] Avoid unused-but-set variable warning in gcc 4.6Thomas Miletich2011-03-281-3/+2Star
| | | | | | | | | Avoid unused-but-set variable warning in gcc 4.6 which was introduced by commit 9215b7f ("[forcedeth] Clear the MII link status register on link status changes"). Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [settings] Formalise notion of setting applicabilityMichael Brown2011-03-221-4/+21
| | | | | | | | | | | | | | | Expose a function setting_applies() to allow a caller to determine whether or not a particular setting is applicable to a particular settings block. Restrict DHCP-backed settings blocks to accepting only DHCP-based settings. Restrict network device settings blocks to accepting only DHCP-based settings and network device-specific settings such as "mac". Inspired-by: Glenn Brown <glenn@myri.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [forcedeth] Clear the MII link status register on link status changesYann Cézard2011-03-201-0/+6
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [qib7322] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-4/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hermon] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-2/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [arbel] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-1/+1
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [vxge] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-162-11/+1Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [ath5k] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-163-12/+1Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [eepro] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-0/+1
| | | | | | | | | | From a cursory examination, it appears as though the calculation of tx_available is redundant, since eepro_transmit() waits for transmit completion before returning anyway. Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [w89c840] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-2/+2
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [smc9000] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-3/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [etherfabric] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-6/+1Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [sis190] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-2/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [epic100] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-2/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [sky2] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-5/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [forcedeth] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-2/+2
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [ns83820] Update to standard debugging infrastructureMichael Brown2011-03-161-26/+19Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [atl1e] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-5/+1Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [via-velocity] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-16/+1Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [sis900] Avoid unused variable warning in gcc 4.6Michael Brown2011-03-161-2/+1Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [e1000] Remove unused variable when ICR register is simply clearedMichael Brown2011-03-1612-30/+24Star
| | | | | | | | | | | | | On reset and close, the ICR register is read to clear any pending interrupts, but the value is simply ignored. Avoid assigning the value to a variable, to inhibit a warning from gcc 4.6. Also fix a potential race condition in reset routines which clear interrupts before disabling them. Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [igbvf] Remove some unused Linux-specific portions of igbvf.hMichael Brown2011-03-161-2/+4
| | | | | | | | | These unused portions trigger a compiler warning under gcc 4.6, due to the ambiguity over the "page" field in struct igbvf_buffer. Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [phantom] Remove unused variable in phantom_dmesg()Michael Brown2011-03-161-2/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [eepro100] Do not discard short packetsMichael Brown2011-03-121-1/+1
| | | | | | | | | | | In a virtual environment such as qemu, we can legitimately receive packets less than 64 bytes in length, such as ARP replies. These are currently discarded, causing most IPv4 communication to fail. Fix by ignoring the RFDShort bit when receiving packets. Reported-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [console] Move include/console.h to include/ipxe/console.hMichael Brown2011-03-095-5/+5
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [spi] Reset device on each accessMichael Brown2011-03-041-0/+3
| | | | | | | | | | | | | | When chainloading rtl8139.pxe from an old Etherboot rtl8139.zrom, iPXE can end up misreading the first word of the MAC address from the EEPROM as being all zeroes. This is presumably because Etherboot has left the serial EEPROM in an unexpected state. Fix by using the chip select line to reset the SPI device before we start accessing it. Reported-by: Mandar U Jog <mandarjog@gmail.com> Tested-by: Mandar U Jog <mandarjog@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>