summaryrefslogtreecommitdiffstats
path: root/src/interface/pxe/pxe_undi.c
Commit message (Collapse)AuthorAgeFilesLines
* [pxe] Move all PXE files to arch/i386Michael Brown2008-11-181-684/+0Star
| | | | | The initial PXE implementation in Etherboot had the goal of being architecture-agnostic, but this goal has not been realised.
* [netdevice] Retain and report detailed error breakdownsMichael Brown2008-11-081-5/+6
| | | | | | | | | | netdev_rx_err() and netdev_tx_complete_err() get passed the error code, but currently use it only in debug messages. Retain error numbers and frequencey counts for up to NETDEV_MAX_UNIQUE_ERRORS (4) different errors for each of TX and RX. This allows the "ifstat" command to report the reasons for TX/RX errors in most cases, even in non-debug builds.
* [netdevice] Change link-layer push() and pull() methods to take raw typesMichael Brown2008-10-161-9/+10
| | | | | | | | | | EFI requires us to be able to specify the source address for individual transmitted packets, and to be able to extract the destination address on received packets. Take advantage of this to rationalise the push() and pull() methods so that push() takes a (dest,source,proto) tuple and pull() returns a (dest,source,proto) tuple.
* [undi] Fill in ProtType correctly in PXENV_UNDI_ISRMichael Brown2008-08-201-12/+61
| | | | | | | | | Determine the network-layer packet type and fill it in for UNDI clients. This is required by some NBPs such as emBoot's winBoot/i. This change requires refactoring the link-layer portions of the gPXE netdevice API, so that it becomes possible to strip the link-layer header without passing the packet up the network stack.
* [undi] Work around broken UNDI polling behaviour in winBoot/iMichael Brown2008-08-201-3/+17
| | | | | | | | Some dumb NBPs (e.g. emBoot's winBoot/i) never call PXENV_UNDI_ISR with FuncFlag=PXENV_UNDI_ISR_START; they just sit in a tight polling loop merrily violating the PXE spec with repeated calls to PXENV_UNDI_ISR_IN_PROCESS. Force a extra calls to netdev_poll() to cope with these out-of-spec clients.
* [i386] Change semantics of __from_data16 and __from_text16Michael Brown2008-07-011-2/+1Star
| | | | | | | | | __from_data16 and __from_text16 now take a pointer to a .data16/.text16 variable, and return the real-mode offset within the appropriate segment. This matches the use case for every occurrence of these macros, and prevents potential future bugs such as that fixed in commit d51d80f. (The bug arose essentially because "&pointer" is still syntactically valid.)
* Fix compiler warnings that appear only on OpenBSD.Michael Brown2007-12-061-2/+2
|
* Use net_device_operations structure and netdev_nullify() to allow forMichael Brown2007-07-071-9/+17
| | | | | | | | | | | safe dropping of the netdev ref by the driver while other refs still exist. Add netdev_irq() method. Net device open()/close() methods should no longer enable or disable IRQs. Remove rx_quota; it wasn't used anywhere and added too much complexity to implementing correct interrupt-masking behaviour in pxe_undi.c.
* Allow recording of TX and RX errors to aid in end-user debugging.Michael Brown2007-07-051-4/+4
|
* Move pxe_netdev and set_pxe_netdev to pxe_undi.c and removeMichael Brown2007-07-031-0/+15
| | | | now-obsolete pxe.c.
* Report our interface type as "gPXE" to avoid working around EtherbootMichael Brown2007-07-031-1/+1
| | | | 5.4 bugs when driving ourselves via UNDI.
* Kill off PXENV_UNDI_FORCE_INTERRUPT support; we have no reason toMichael Brown2007-07-031-7/+4Star
| | | | | suspect that we need it, and implementing it would require needlessly complicating the net device API.
* Reserve space for link-layer header in pxenv_undi_transmit() when notMichael Brown2007-07-031-2/+10
| | | | handed a P_UNKNOWN packet.
* Add missing call to free_iob() in pxenv_undi_isr().Michael Brown2007-07-031-5/+6
| | | | Correct typo in pxenv_set_station_address().
* Add trivial net device statistics (TX and RX packet count), reportedMichael Brown2007-07-031-8/+13
| | | | via UNDI API and also by ifstat command; may be useful for debugging.
* Place netdev_open()/netdev_close() calls in appropriate places.Michael Brown2007-07-031-8/+24
|
* Add mechanism for providing TX completion events.Michael Brown2007-07-031-9/+43
|
* Add untested support for UNDI transmit and receive.Michael Brown2007-07-021-112/+107Star
|
* pxe_netdev now holds a reference to the network device.Michael Brown2007-07-021-53/+27Star
| | | | | | | | | Use generic fields in struct device_description rather than assuming that the struct device * is contained within a pci_device or isapnp_device; this assumption is broken when using the undionly driver. Add PXENV_UNDI_SET_STATION_ADDRESS.
* Call shutdown() from pxenv_undi_shutdown(). Probably not totallyMichael Brown2007-07-021-0/+3
| | | | correct, but it's enough to get RIS working.
* Implement the two UNDI API calls used by RIS.Michael Brown2007-06-301-42/+75
|
* We don't actually have a stdio.h header file. Our printf() functions areMichael Brown2006-09-271-1/+0Star
| | | | | | | | defined in vsprintf.h. (This may change, since vsprintf.h is a non-standard name, but for now it's the one to use.) There should be no need to include vsprintf.h just for DBG() statements, since include/compiler.h forces it in for a debug build anyway.
* added stdio.h to includes for DBG compilationMarty Connor2006-09-271-0/+1
|
* Allow linking by converting all functions to stubsMichael Brown2006-08-091-41/+30Star
|
* Updated PXE UDP implementation to use the new Etherboot UDP API.Michael Brown2006-08-031-0/+4
| | | | | | | Updated PXE API dispatcher to use copy_{to,from}_user, and moved to arch/i386 since the implementation is quite architecture-dependent. (The individual PXE API calls can be largely architecture-independent.)
* Updated to remove obsolete constantsMichael Brown2006-04-191-6/+6
|
* Split PXE code into preboot, udp, tftp, undi and loader units.Michael Brown2005-05-241-0/+538
PXE code now compiles without errors (though it won't actually work).