summaryrefslogtreecommitdiffstats
path: root/src/drivers/net
Commit message (Collapse)AuthorAgeFilesLines
* [rtl818x] Remove broken mmio register supportStefan Hajnoczi2010-01-251-3/+0Star
| | | | | | | | | | | | The rtl818x driver uses programmed I/O but has a fallback to memory-mapped I/O registers. The fallback currently will not work since the registers are accessed using inl()/outl() programmed I/O functions in the driver. This patch removes the fallback to we fail cleanly when programmed I/O is not possible. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [natsemi] Convert stray mmio readl() to pio inl()Stefan Hajnoczi2010-01-251-1/+1
| | | | | | | | | | This driver uses programmed I/O to access hardware registers. There is a stray memory-mapped I/O read on a programmed I/O address. Perhaps this is an artifact of porting the driver. Fix this by converting it to programmed I/O. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [skge] Note correct author of akge driverThomas Miletich2010-01-141-4/+5
| | | | | | | | | The previous [skge] commit should have been recorded as authored by Thomas Miletich <thomas.miletich@gmail.com> I mistakenly committed it improperly after fixing a merge issue. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [skge] Add driver for skge NICsMarty Connor2010-01-142-0/+5094
| | | | | | | | | | | | | | This code is based on the linux skge driver. It supports Marvell Yukon and SysKonnect Gigabit chipsets. The code is based on code Michael Decker <mrd999@gmail.com> wrote for Google Summer of Code 2008. Support for dual-port cards is untested. The code, however, was left in. In my opinion it's easier to fix the code if we need to, instead of having to add support for it from scratch. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [myri10ge] Native driver for Myricom 10Gb Ethernet NICsGlenn Brown2010-01-142-0/+1555
| | | | | | | | | | This driver supports all current Myricom 10 gigabit Ethernet NICs. It was written from scratch for gPXE by Glenn Brown <glenn@myri.com>, referenencing Myricom's Linux and EFI drivers, with permission. Signed-off-by: Glenn Brown <glenn@myri.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [forcedeth] Add support for 10de:054c nforce 630a, MCP 67Thomas Horsten2010-01-141-0/+2
| | | | | | Tested-by: Boudhayan Gupta <bg13.ina@gmail.com> Signed-off-by: Thomas Horsten <thomas@horsten.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
* [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>
* [eepro100] Add missing FILE_LICENCE() to eepro100.hThomas Miletich2009-12-141-0/+2
| | | | Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
* [e1000] Enable interrupts in a more UNDI compatible wayThomas Miletich2009-11-251-2/+1Star
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [eepro100] Convert to native gPXE APIThomas Miletich2009-11-222-639/+1197
| | | | | | | | | | | | This version is Based on Michael Decker's GSoC 2008 code. A number cleanups and fixes were applied. Earlier-version-reviewed-by: Marty Connor <mdc@etherboot.org> Earlier-version-tested-by: Marty Connor <mdc@etherboot.org> Earlier-version-tested-by: Shao Miller <Shao.Miller@yrdsb.edu.on.ca> Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com> Reviewed-by: Joshua Oreman <oremanj@rwcr.net> 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>
* [ipoib] Mask out non-QPN bits in the IPoIB destination MAC when sendingMichael Brown2009-11-161-8/+7Star
| | | | | | | The first byte of the IPoIB MAC address is used for flags indicating support for "connected mode". Strip out the non-QPN bits of the first dword when constructing the address vector for transmitted IPoIB packets, so as not to end up passing an invalid QPN in the BTH.
* [ipoib] Always set the "full membership" bit in the IPv4 broadcast GIDMichael Brown2009-11-161-1/+2
| | | | | The SM always creates the IPoIB multicast groups with full membership partition keys.
* [infiniband] Report IB link status as IPoIB netdevice statusMichael Brown2009-11-161-5/+12
|
* [atl1e] Fix compilation on gcc-4.4.1-2.fc11.i586.Joshua Oreman2009-10-241-8/+9
| | | | | | | | | | | | | Error message was: [BUILD] bin/atl1e.oncc1: warnings being treated as errors drivers/net/atl1e.c: In function 'atl1e_get_permanent_address': drivers/net/atl1e.c:1326: error: dereferencing type-punned pointer will break strict-aliasing rules make: *** [bin/atl1e.o] Error 1 Reported-by: Giandomenico De Tullio <ghisha@email.it> Signed-off-by: Michael Brown <mcb30@etherboot.org> Modified-by: Michael Brown <mcb30@etherboot.org>
* [sis190] Hide the ISA bridge's PCI IDs from parserom.plThomas Miletich2009-10-241-3/+3
| | | | | Signed-off-by: Michael Brown <mcb30@etherboot.org> Modified-by: Michael Brown <mcb30@etherboot.org>
* [sis190] Insert forgotten FILE_LICENCE() to sis190.hThomas Miletich2009-10-241-1/+2
| | | | | Signed-off-by: Michael Brown <mcb30@etherboot.org> Modified-by: Michael Brown <mcb30@etherboot.org>
* [sis190] Make 'make allroms' happy.Thomas Miletich2009-10-241-2/+2
| | | | | | | | Remove spaces in 3rd PCI_ROM field. Debugged-by: Marty Connor <mdc@etherboot.org> Reported-by: Giandomenico De Tullio <ghisha@email.it> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [netdevice] Add the concept of an "Ethernet-compatible" MAC addressMichael Brown2009-10-231-0/+57
| | | | | | | | | | | | | | The iBFT is Ethernet-centric in providing only six bytes for a MAC address. This is most probably an indirect consequence of a similar design flaw in the Windows NDIS stack. (The WinOF IPoIB stack performs all sorts of contortions in order to pretend to the NDIS layer that it is dealing with six-byte MAC addresses.) There is no sensible way in which to extend the iBFT without breaking compatibility with programs that expect to parse it. Add the notion of an "Ethernet-compatible" MAC address to our link layer abstraction, so that link layers can provide their own workarounds for this limitation.
* [sis190] Fix for gcc-3.3.3 compilationShao Miller2009-10-181-1/+1
| | | | | | | | | | | | | gcc 3.3.3 gave the following error when compiling sis190.c drivers/net/sis190.c: In function 'sis190_get_mac_addr_from_apc': drivers/net/sis190.c:966: warning: 'isa_bridge' might be used uninitialized in this function make: *** [bin/sis190.o] Error 1 This patch allows error-free compilation. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [ath5k] Save proper cacheline size when fixing PCI configurationJoshua Oreman2009-10-171-1/+2
| | | | | | | | | | | | Some BIOSes set the PCI cacheline size to zero for the card; the ath5k driver fixes it to a reasonable in PCI config space, but failed to correct the internal value it had already read. This resulted in divide-by-zero errors when cacheline-aligning various data structures. Fix by setting the internal cachelsz to a sane value at the same time as we write that value to PCI config space. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [ath5k] Update for changes in kernel 2.6.31Joshua Oreman2009-10-178-5/+147
| | | | | | | | | | | This adds basic rfkill support for enabling the wireless card on certain laptops, and changes miscellaneous other details that may help in obscure cases. Also change the error handling to not report CRC errors, which due to the basic facts of wireless may happen even more frequently than valid packets. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [sis190] Add sis190/191 ethernet driverThomas Miletich2009-10-162-0/+1489
| | | | | Tested-by: Paul Hackett <paulfxhackett@gmail.com> 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>
* [atl1e] Add Attansic L1E gigabit Ethernet driverJoshua Oreman2009-10-162-0/+2788
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [sis900] Enable interrupts to allow UNDI to workThomas Miletich2009-10-151-0/+6
| | | | | | | | Enable interrupts in sis900_irq(). Doing so allows some programs using gPXE's UNDI interface to work properly, including Symantec Ghost. Tested-by: Hubert Mercier <hubert.mercier@unilim.fr> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [3c90x] Fix a3c90x_close() and a3c90x_remove() methods.Thomas Miletich2009-10-151-3/+3
| | | | | | | | | | | Both methods disabled packet tx and rx just to have it enabled again by calling a3c90x_reset(). Fixed by disabling tx and rx after the call to a3c90x_reset(). Tested by booting Ubuntu intrepid(8.10) directly from gPXE and pxelinux. Tested on 3c905, 3c905B, 3c905C. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [ath5k] Remove spurious debugging checkJoshua Oreman2009-08-181-10/+0Star
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [netdevice] Allow the hardware and link-layer addresses to differ in sizeMichael Brown2009-08-121-5/+19
| | | | | | | | | | IPoIB has a 20-byte link-layer address, of which only eight bytes represent anything relating to a "hardware address". The PXE and EFI SNP APIs expect the permanent address to be the same size as the link-layer address, so fill in the "permanent address" field with the initial link layer address (as generated by register_netdev() based upon the real hardware address).
* [netdevice] Separate out the concept of hardware and link-layer addressesMichael Brown2009-08-1214-66/+48Star
| | | | | | | | | | | 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().
* [ath5k] Add support for non-802.11n Atheros wireless NICsJoshua Oreman2009-08-0919-0/+17968
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [802.11] Enhance support for driver PHY differencesJoshua Oreman2009-08-091-24/+32
| | | | | | | | | | | | | | | | | The prior net80211 model of physical-layer behavior for drivers was overly simplistic and limited the drivers that could be written. To be more flexible, split the driver-provided list of supported rates by band, and add a means for specifying a list of supported channels. Allow drivers to specify a hardware channel value that will be tied to uses of the channel. Expose net80211_duration() to drivers, and make the rate it uses in its computations configurable, so that it can be used in calculating durations that must be set in hardware for ACK and CTS packets. Add net80211_cts_duration() for the common case of calculating the duration for a CTS packet. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [infiniband] Update all other MAD users to use a management interfaceMichael Brown2009-08-091-4/+28
|
* [sky2] Add support for Marvell Yukon-II gigabit Ethernet cardsJoshua Oreman2009-08-032-0/+4575
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [rtl818x] Add driver for Realtek 8180/8185 wireless cardsJoshua Oreman2009-08-018-0/+2605
|
* [infiniband] Add infrastructure for RC queue pairsMichael Brown2009-07-181-1/+1
| | | | | | | | | | | | | | | | | | Queue pairs are now assumed to be created in the INIT state, with a call to ib_modify_qp() required to bring the queue pair to the RTS state. ib_modify_qp() no longer takes a modification list; callers should modify the relevant queue pair parameters (e.g. qkey) directly and then call ib_modify_qp() to synchronise the changes to the hardware. The packet sequence number is now a property of the queue pair, rather than of the device. Each queue pair may have an associated address vector. For RC queue pairs, this is the address vector that will be programmed in to the hardware as the remote address. For UD queue pairs, it will be used as the default address vector if none is supplied to ib_post_send().
* [infiniband] Add notion of a queue pair typeMichael Brown2009-07-181-1/+2
|
* [ipoib] Attempt the broadcast group join only if the link is upMichael Brown2009-07-181-9/+4Star
| | | | | Attempting the broadcast group join while the link is down is harmless, but can generate annoying volumes of debug messages.
* [ipoib] Remove the queue set abstractionMichael Brown2009-07-181-20/+36
| | | | | Now that IPoIB has to deal with only one set of queues, the queue set abstraction becomes merely an inconvenient wrapper.
* [ipoib] Kill off the now-unused IPoIB metadata queue setMichael Brown2009-07-181-144/+39Star
| | | | All packets handled by the metadata queue set now go via the GMA.
* [infiniband] Provide a general mechanism for multicast group joinsMichael Brown2009-07-181-129/+13Star
| | | | Generalise out the multicast group membership record code from IPoIB.
* [infiniband] Make qkey and rate optional parameters to ib_post_send()Michael Brown2009-07-181-6/+4Star
| | | | | | | | | | The queue key is stored as a property of the queue pair, and so can optionally be added by the Infiniband core at the time of calling ib_post_send(), rather than always having to be specified by the caller. This allows IPoIB to avoid explicitly keeping track of the data queue key.
* [ipoib] Clarify new role of IPoIB peer cache as for MAC addresses onlyMichael Brown2009-07-181-39/+21Star
| | | | | | | Now that path record lookups are handled entirely via ib_resolve_path(), the only role of the IPoIB peer cache is as a lookup table for MAC addresses. Update the code structure and comments to reflect this.
* [ipoib] Expose the real broadcast MACMichael Brown2009-07-181-46/+37Star
| | | | | | | | | | | | The IPoIB broadcast MAC address varies according to the partition key. Now that the broadcast MAC address is a property of the network device rather than of the link layer, we can expose this real MAC address directly. The broadcast LID is now identified via a path record lookup; this is marginally inefficient (since it was present in the MCMemberRecord GetResponse), but avoids the need to special-case broadcasts when constructing the address vector in ipoib_transmit().
* [ipoib] Use Infiniband broadcast QPN in IPoIB broadcast MAC addressMichael Brown2009-07-181-10/+3Star
| | | | Remove the special handling of the IPoIB broadcast QPN.
* [infiniband] Provide a general mechanism for path record lookupsMichael Brown2009-07-181-108/+8Star
| | | | Generalise out the path record lookup code from IPoIB.
* [infiniband] Centralise SMA and GMA queue constantsMichael Brown2009-07-181-7/+7
|
* [infiniband] Poll completion queues automaticallyMichael Brown2009-07-181-6/+3Star
| | | | | | | | | | | | | | | | | Currently, all Infiniband users must create a process for polling their completion queues (or rely on a regular hook such as netdev_poll() in ipoib.c). Move instead to a model whereby the Infiniband core maintains a single process calling ib_poll_eq(), and polling the event queue triggers polls of the applicable completion queues. (At present, the Infiniband core simply polls all of the device's completion queues.) Polling a completion queue will now implicitly refill all attached receive work queues; this is analogous to the way that netdev_poll() implicitly refills the RX ring. Infiniband users no longer need to create a process just to poll their completion queues and refill their receive rings.
* [infiniband] Centralise assumption of 2048-byte payloadsMichael Brown2009-07-181-3/+3
| | | | | | | | | | IPoIB and the SMA have separate constants for the packet size to be used to I/O buffer allocations. Merge these into the single IB_MAX_PAYLOAD_SIZE constant. (Various other points in the Infiniband stack have hard-coded assumptions of a 2048-byte payload; we don't currently support variable MTUs.)