| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
The initial PXE implementation in Etherboot had the goal of being
architecture-agnostic, but this goal has not been realised.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
__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.)
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
| |
now-obsolete pxe.c.
|
| |
|
|
| |
5.4 bugs when driving ourselves via UNDI.
|
| |
|
|
|
| |
suspect that we need it, and implementing it would require needlessly
complicating the net device API.
|
| |
|
|
| |
handed a P_UNKNOWN packet.
|
| |
|
|
| |
Correct typo in pxenv_set_station_address().
|
| |
|
|
| |
via UNDI API and also by ifstat command; may be useful for debugging.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
correct, but it's enough to get RIS working.
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
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.)
|
| | |
|
|
|
PXE code now compiles without errors (though it won't actually work).
|