| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
Add a configuration settings block for each net device. This will
provide the parent scope for settings applicable only to that network
device (e.g. non-volatile options stored on the NIC, options obtained via
DHCP, etc.).
Expose the MAC address as a setting.
|
|
|
|
|
| |
packet, to work around the problem whereby small TX rings get backed
up because we haven't yet poll()ed for TX completions.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
| |
permanent processes, rather than requiring each one to have its own
initialisation function.
|
| |
|
|
|
|
| |
via UNDI API and also by ifstat command; may be useful for debugging.
|
|
|
|
|
|
| |
structures.
DHCP still broken and #if 0'd out.
|
|
|
|
|
|
| |
Add reference-counting to processes.
Add timer_running() test.
|
|
|
|
|
|
|
|
| |
Achieved via Perl using:
perl -pi -e 's/pk_buff/io_buffer/g; s/Packet buffer/I\/O buffer/ig; ' \
-e 's/pkbuff\.h/iobuf.h/g; s/pkb_/iob_/g; s/_pkb/_iob/g; ' \
-e 's/pkb/iobuf/g; s/PKB/IOB/g;'
|
|
|
|
|
|
|
| |
ISA 3c509 is currently non-functional, although the EISA (3c509-eisa) and
MCA (3c529) variants should build OK.
None of this code is yet tested.
|
| |
|
|
|
|
| |
to avoid drops even on slow NICs.
|
|
|
|
| |
needed now that performance is up.
|
|
|
|
| |
almost everywhere else.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
names.
Add "dev" pointer in struct net_device to tie network interfaces back to a
hardware device.
Force natural alignment of data types in __table() macros. This seems to
prevent gcc from taking the unilateral decision to occasionally increase
their alignment (which screws up the table packing).
|
| |
|
| |
|
|
|
|
|
|
| |
of alloc_pkb() exhaustion when e.g. an iSCSI-booted DOS session is left
idle for a long time at the C:\ prompt and builds up a huge packet
backlog.
|
|
|
|
|
|
| |
(which will need us to wait for TX completions).
Added debug autocolourisation to netdevice.c
|
|
|
|
| |
Call netdevice's poll() and transmit() methods only when device is open.
|
|
|
|
| |
net_device is unregistered.
|
| |
|
|
|
|
|
|
|
|
| |
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 a large number of missing calls to free_pkb(). In the case of UDP,
no received packets were ever freed, which lead to memory exhaustion
remarkably quickly once pxelinux started up.
In general, any function with _rx() in its name which accepts a pk_buff
*must* either call free_pkb() or pass the pkb to another _rx() function
(e.g. the next layer up the stack). Since the UDP (and TCP) layers don't
pass packet buffers up to the higher-layer protocols (the
"applications"), they must free the packet buffer after calling the
application's newdata() method.
|
|
|
|
| |
default test to the DHCP test.
|
|
|
|
|
|
|
|
|
|
| |
Kill off the static single net device and move to proper dynamic
registration (which we need with the new device model).
Break the (flawed) assumption that all network-layer protocols can use
ARP; such network-layer protocols (i.e. IPv4) must now register as an ARP
protocol using ARP_NET_PROTOCOL() and provide a single method for checking
the existence of a local network-layer address.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
take ownership of the packet, rather than doing so only if they return
success. This breaks semantic compatibility with Linux's
hard_start_xmit() method, but means that we don't have to worry so much
about error cases.
Split mechanism of processing received packets (net_rx_process()) out
from policy (net_step()), preparatory to putting net_step() in a separate
object.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implementation allows for only one, and does so without compromising on
the efficiency of static allocation).
Link-layer protocols are cleanly separated from the device drivers.
Network-layer protocols are cleanly separated from individual network
devices.
Link-layer and network-layer protocols are cleanly separated from each
other.
|
|
|