summaryrefslogtreecommitdiffstats
path: root/src/drivers/net
Commit message (Collapse)AuthorAgeFilesLines
* [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.)
* [infiniband] Split queue set functionality out of ipoib.c to ib_qset.cMichael Brown2009-07-181-137/+32Star
|
* [netdevice] Make ll_broadcast per-netdevice rather than per-ll_protocolMichael Brown2009-07-183-7/+22
| | | | | | | | | IPoIB has a link-layer broadcast address that varies according to the partition key. We currently go through several contortions to pretend that the link-layer address is a fixed constant; by making the broadcast address a property of the network device rather than the link-layer protocol it will be possible to simplify IPoIB's broadcast handling.
* [rtl8139] Split debug messages into DBGLVL_LOG and DBGLVL_EXTRAMichael Brown2009-06-231-13/+18
|
* [e1000] Ensure descriptor is fully written before sending packetMichael Brown2009-06-231-0/+1
| | | | Reported-by: Mark McLoughlin <markmc@redhat.com>
* [netdevice] Add netdev argument to link-layer push and pull handlersJoshua Oreman2009-06-231-2/+6
| | | | | | | | | | | | | | | In order to construct outgoing link-layer frames or parse incoming ones properly, some protocols (such as 802.11) need more state than is available in the existing variables passed to the link-layer protocol handlers. To remedy this, add struct net_device *netdev as the first argument to each of these functions, so that more information can be fetched from the link layer-private part of the network device. Updated all three call sites (netdevice.c, efi_snp.c, pxe_undi.c) and both implementations (ethernet.c, ipoib.c) of ll_protocol to use the new argument. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [misc] Fix source files erroneously marked as executableMichael Brown2009-06-021-0/+0
|
* [ethernet] Update mii.h and use it in drivers that had a private copyDaniel Verkamp2009-05-2612-531/+91Star
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [ethernet] Move struct mii_if_info to mii.hDaniel Verkamp2009-05-262-13/+0Star
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [legal] Add a selection of FILE_LICENCE declarationsMichael Brown2009-05-1872-0/+147
| | | | | Add FILE_LICENCE declarations to almost all files that make up the various standard builds of gPXE.
* [3c90x] Add missing size_t format specifierJoshua Oreman2009-03-311-1/+1
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pcnet32] Fix received packet corruptionMichael Brown2009-03-261-3/+3
| | | | | | | | | | The pcnet32 driver mismanages its RX buffers, with the result that packets get corrupted if more than one packet arrives between calls to poll(). Originally-fixed-by: Bill Lortz <Bill.Lortz@premier.org> Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com> Tested-by: Stefan Hajnoczi <stefanha@gmail.com>
* [forcedeth] Add support for newer forcedeth NICsThomas Miletich2009-03-261-7/+34
| | | | | | | Also adds the MAC_ADDR_CORRECT flag, to indicate whether or not the MAC address needs to be fixed up by the driver. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pci] Add driver_data field to struct pci_device_idThomas Miletich2009-03-2633-318/+318
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [3c90x] Remove src/drivers/3c90x.txtMarty Connor2009-03-131-307/+0Star
| | | | | | | Most of the 3c90x.txt file is obsolete. The content from the file has been placed here: http://etherboot.org/wiki/appnotes/3c90x_issues
* [3c90x] 3c90x driver rewrite using gPXE APIThomas Miletich2009-03-132-935/+1200
| | | | | | | | | | | | | | | This is a major rewrite of the legacy etherboot 3c90x driver using the gPXE API for much improved performance over the legacy driver it replaces. This driver has been tested on 3c905, 3c905B, and 3c905C cards. Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com> Reviewed-by: Marty Connor <mdc@etherboot.org> Tested-by: Marty Connor <mdc@etherboot.org> Tested-by: Daniel Verkamp <daniel@drv.nu> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [sundance] Add reset completion checkThomas Miletich2009-02-271-0/+16
| | | | | | | | Following the example of the Linux driver, we add a check and delay to make sure that the NIC has finished resetting before the driver issues any additional commands. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [infiniband] Kill off obsolete mlx_ipoib directoryMichael Brown2009-02-2529-16486/+0Star
| | | | | | This directory contains the old Etherboot implementation of IPoIB boot from Mellanox, which has long been obsoleted by gPXE's own implementation.
* [mtnic] Add multiport support and some minor fixesItay Gazit2009-02-092-600/+702
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [sundance] Added NIC variantThomas Miletich2009-02-061-0/+1
| | | | | | | | | This previously unsupported NIC variant was was found to work using the current driver: PCI_ROM(0x13f0, 0x0200, "ip100a", "IC+ IP100A"), Signed-off-by: Marty Connor <mdc@etherboot.org>
* [infiniband] Call ib_open() only when opening the IPoIB net deviceMichael Brown2009-01-021-0/+12
| | | | | Defer the call to ib_open() until we want to actually open the device, rather than when the device is registered.
* [etherfabric] Make use of pci_bar_start() 64-bit cleanMichael Brown2008-12-121-2/+3
| | | | | | | | Driver was storing the result of pci_bar_start() and pci_bar_size() in an int, rather than an unsigned long. (Bug was introduced in the vendor's tree in commit eac85cd "Port etherfabric driver to net_device api".)
* [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>
* [b44] Add driver for Broadcom bcm44xx cardsPantelis Koukousoulas2008-11-222-0/+1416
| | | | | | | | | | | | | | | | | | This driver is based on Stefan Hajnoczi's summer work, which is in turn based on version 1.01 of the linux b44 driver. I just assembled the pieces and fixed/added a few pieces here and there to make it work for my hardware. The most major limitation is that this driver won't work on systems with >1GB RAM due to the card not having enough address bits for that and gPXE not working around this limitation. Still, other than that the driver works well enough for at least 2 users :) and the above limitation can always be fixed when somebody wants it bad enough :) Signed-off-by: Pantelis Koukousoulas <pktoss@gmail.com>
* [virtio] Split virtio-net.c into several files.Laurent Vivier2008-11-191-202/+3Star
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Consolidate virtio-net static data into a struct vring_virtqueueLaurent Vivier2008-11-191-55/+64
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Remove dependency on nic for virtio PCI functionsLaurent Vivier2008-11-191-14/+14
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Consolidate vring_get_buf() by using a buffer list to add to the vringLaurent Vivier2008-11-191-41/+44
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Move virtio-pci.h and virtio-ring.h to include/gpxeLaurent Vivier2008-11-193-189/+2Star
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>