summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/e1000
Commit message (Collapse)AuthorAgeFilesLines
* [intel] Replace driver for Intel Gigabit NICsMichael Brown2012-04-2423-15729/+0Star
| | | | | | Tested-by: Robin Smidsrød <robin@smidsrod.no> Tested-by: Thomas Miletich <thomas.miletich@gmail.com> 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>
* [e1000] Remove unused variable when ICR register is simply clearedMichael Brown2011-03-165-12/+10Star
| | | | | | | | | | | | | 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>
* [pci] Make driver PCI ID a property of the PCI deviceMichael Brown2011-02-172-4/+2Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [e1000] Strip the Ethernet CRC from received packetsMichael Brown2010-09-151-1/+1
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [netdevice] Call netdev_link_[up|down|err]() only while registeredMichael Brown2010-09-051-3/+3
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [build] Rename gPXE to iPXEMichael Brown2010-04-202-8/+8
| | | | | | | | | | | Access to the gpxe.org and etherboot.org domains and associated resources has been revoked by the registrant of the domain. Work around this problem by renaming project from gPXE to iPXE, and updating URLs to match. Also update README, LOG and COPYRIGHTS to remove obsolete information. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [e1000] Update e1000 driverMarty Connor2010-03-1724-13857/+15347
| | | | | | | | | | | | This commit replaces the current gPXE e1000 driver with one ported from Intel source code available at http://sourceforge.net/projects/e1000/ which is upstream source for the Linux kernel e1000 drivers, and should support most if not all PCI e1000 variants. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000] Remove deprecated IRQ_FORCE action from e1000_irq()Thomas Miletich2010-01-051-23/+4Star
| | | | | | | The gPXE driver API does not have a "force interrupt" function. Remove legacy code. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000] Enable interrupts in a more UNDI compatible wayThomas Miletich2009-11-251-2/+1Star
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000] Use the alternate MAC in NVRAM when availableAlex Williamson2009-11-222-3/+51
| | | | | | | | | | | | The 82571 supports an alternate MAC address location in NVRAM. When this is set, use this for the MAC rather than the default physical MAC address. Ported from linux-2.6.git 93ca161027eb6a1761fb674ad7b995aedccf5f6e Signed-off-by: Alex Williamson <alex.williamson@hp.com> Tested-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000] Implement zero-copy receiveThomas Miletich2009-11-221-63/+83
| | | | | Co-Authored by: Marty Connor <mdc@etherboot.org> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000] Add 82576 supportSimon Horman2009-10-163-24/+181
| | | | | | | | | | | | | | | | | | | Add the 82576 to the e1000 driver. - Examining the Linux 2.6.30-rc4 igb driver, which supports this card and; - Information available in the Intel® 82576 Gigabit Ethernet Controller Datasheet v2.1, which is available from Intel's web site. I only have a dual-ported card with Copper PHY, so any code paths relating to Fibre haven't been tested. Also, I have only tested using auto-negotiation of speed and duplex, and no flow control. Other code paths relating to those settings also have not been exercised. Signed-off-by: Simon Horman <horms@verge.net.au> Sponsored-by: Thomas Miletich <thomas.miletich@gmail.com> Modified-by: Thomas Miletich <thomas.miletich@gmail.com> Modified-by: Marty Connor <mdc@etherboot.org> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [netdevice] Separate out the concept of hardware and link-layer addressesMichael Brown2009-08-121-1/+1
| | | | | | | | | | | The hardware address is an intrinsic property of the hardware, while the link-layer address can be changed at runtime. This separation is exposed via APIs such as PXE and EFI, but is currently elided by gPXE. Expose the hardware and link-layer addresses as separate properties within a net device. Drivers should now fill in hw_addr, which will be used to initialise ll_addr at the time of calling register_netdev().
* [e1000] Ensure descriptor is fully written before sending packetMichael Brown2009-06-231-0/+1
| | | | Reported-by: Mark McLoughlin <markmc@redhat.com>
* [legal] Add a selection of FILE_LICENCE declarationsMichael Brown2009-05-185-0/+9
| | | | | Add FILE_LICENCE declarations to almost all files that make up the various standard builds of gPXE.
* [pci] Add driver_data field to struct pci_device_idThomas Miletich2009-03-261-62/+62
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [e1000] Use PCI_BASE_ADDRESS_* symbols instead of integersMarty Connor2008-12-051-2/+2
| | | | | | | | | | | When compiling for the Linux kernel, PCI_BASE_ADDRESS_0 == 0, and PCI_BASE_ADDRESS_1 == 1. This is not so when compiling for gPXE. We must use the symbolic names rather than integers to get the correct values. Bug identified and patch supplied by: George Chou <george.chou@advantech.com>
* [i386] Change [u]int32_t to [unsigned] int, rather than [unsigned] longMichael Brown2008-11-192-22/+22
| | | | | | This brings us in to line with Linux definitions, and also simplifies adding x86_64 support since both platforms have 2-byte shorts, 4-byte ints and 8-byte long longs.
* [e1000] Add missing #include <string.h>Michael Brown2008-10-121-0/+1
|
* [ioapi] Remove old io.h file and switch all users over to <gpxe/io.h>Michael Brown2008-10-122-2/+2
|
* [e1000] Fix dubious syntax in e1000 I/O wrapper macrosMichael Brown2008-10-121-24/+24
|
* [NETDEV] Add notion of link stateMichael Brown2008-04-221-0/+3
| | | | | | | | | | | Add ability for network devices to flag link up/down state to the networking core. Autobooting code will now wait for link-up before attempting DHCP. IPoIB reflects the Infiniband link state as the network device link state (which is not strictly correct; we also need a succesful IPoIB IPv4 broadcast group join), but is probably more informative.
* Modify gPXE core and drivers to work with the new timer subsystemAlexey Zaytsev2008-03-022-2/+1Star
| | | | Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
* Fix e1000 receive tail pointer (RDT) handlingMarty Connor2007-12-172-7/+7
| | | | e1000 should now work in VMware.
* Correct e1000 interrupt routine to enable on 1 disable on 0. duh.Marty Connor2007-12-131-2/+2
| | | | | | The e1000_irq() routine should (per mcb30) do enable on non-zero, disable on zero. This is not consistent in all drivers, so I'll wait to update it when doing a global sweep.
* Various warnings fixups for OpenBSD with gcc-3.3.5.Michael Brown2007-12-071-1/+1
|
* Add copyright, clean up comments a bit, remove unnecessary code.Marty Connor2007-12-031-178/+102Star
| | | | Cleanups for e1000.c.
* Fixed receive instability by not enabling interrupts. duh.Marty Connor2007-11-212-19/+27
| | | | | I have successfully booted DOS via iSCSI and PXELINUX via TFTP with this version of the e1000 driver.
* This version now transmits and receives.Marty Connor2007-11-202-220/+138Star
| | | | | | There may still be an issue with memory handling, since it seems to die ungracefully when ARP packets come in after loading a kernel. Something to debug.
* Autonegotiation fixes. NIC now autonegotiates to whatever the switch supports.Marty Connor2007-11-203-18/+22
|
* A version of the new e1000 driver that transmits.Marty Connor2007-11-203-254/+351
| | | | autonegotiation still needs work. receive is not working yet.
* Rename e1000_main.c to e1000.c to so we can type 'make bin/e1000.dsk' ↵Marty Connor2007-11-181-0/+0
| | | | instead of 'make bin/e1000_main.dsk'
* Introduce files for new e1000 driverMarty Connor2007-11-185-0/+14074