Michael Brown
05f4c3d176
Remove the one-packet-per-poll-cycle limit; it seems to no longer be
needed now that performance is up.
před 18 roky
Michael Brown
6c72bf13a1
Presize the download buffer when we see the Content-Length header;
this saves around 70us per received packet (which is around 50% of the
overall packet processing time).
před 18 roky
Michael Brown
08da93a311
Reorder functions to more closely reflect the flow of control
před 18 roky
Michael Brown
06630a3036
Switch from calloc() to malloc()+memset() to match the practices used
almost everywhere else.
před 18 roky
Michael Brown
dd6d94004f
HTTP/DNS now working fully asynchronously. HTTP/IP addresses and any
other protocol won't work at the moment.
před 18 roky
Michael Brown
99e58865c7
Use struct sockaddr rather than struct sockaddr_tcpip
Tidy up code
před 18 roky
Michael Brown
f11da20f25
When a network device is specified to tcpip_tx() or it's children, treat
it as a fallback network device rather than an explicitly forced network
device.
Clear routing table entries before re-attempting DHCP.
před 18 roky
Michael Brown
1a1fc23417
Improve debugging
před 18 roky
Michael Brown
bcdb6fad3e
Improve debug messages
před 18 roky
Michael Brown
835d35749f
Improved debugging
před 18 roky
Michael Brown
143d14614d
Quickly hack in DNS resolution as a proof of concept
před 18 roky
Michael Brown
9af12d5fba
A working DNS resolver (not yet tied in to anything)
před 18 roky
Michael Brown
df0397f334
Update TFTP and FTP to take the same temporary URI scheme as HTTP
před 18 roky
Michael Brown
afa752f5fb
Protocol's get() method no longer takes ownership of the URI. HTTP is the
exception rather than the rule; we may as well keep things clean for other
protocols.
před 18 roky
Michael Brown
1f92c6b3e8
Must free http on the error path; nothing else will do it
před 18 roky
Michael Brown
c676591cd1
Unmaintained example code is probably worse than useless.
před 18 roky
Michael Brown
4e20d73bb5
Gave asynchronous operations approximate POSIX signal semantics. This
will enable us to cascade async operations, which is necessary in order to
properly support DNS. (For example, an HTTP request may have to redirect
to a new location and will have to perform a new DNS lookup, so we can't
just rely on doing the name lookup at the time of parsing the initial
URL).
Anything other than HTTP is probably broken right now; I'll fix the others
up asap.
před 18 roky
Michael Brown
76aa9ad07d
Make TCP give up immediately when it receives -ENETUNREACH from
tcpip_tx(). This avoids the irritating wait when you accidentally type
"kernel pxelinux.0" before bringing up the network interface.
Add ENETUNREACH to strerror()'s list.
před 18 roky
Michael Brown
c953c1a1c3
Use -ENETUNREACH to mean "no reachable network device exists, don't bother
retrying".
před 18 roky
Michael Brown
526d314266
Advertise a larger MSS to improve TCP performance.
před 18 roky
Michael Brown
497c3a5aad
Fixed HTTP
před 18 roky
Michael Brown
ad22cccc09
No need to maintain a received byte count; we always fill in sequential
order so we can just use buffer->fill.
před 18 roky
Michael Brown
0010e10ef3
Update TFTP to use a struct buffer rather than a callback.
Add debug autocolourisation to TFTP.
před 18 roky
Michael Brown
037da9d840
I hate NULL pointer dereferences.
před 18 roky
Michael Brown
a3ed0cbbc7
Extract packet-padding login from rtl8139.c to a separate pkbpad.c file.
před 18 roky
Michael Brown
6918cf9e9e
Change FTP to use a data buffer rather than a callback function.
před 18 roky
Michael Brown
d9ba8f790b
Add route() function to display routing table.
před 18 roky
Michael Brown
1fa5cd0e2b
Add find_pci_netdev()
před 18 roky
Michael Brown
dad5274522
Add "name" field to struct device to allow human-readable hardware device
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).
před 18 roky
Michael Brown
cc9b32c405
Remove uIP; we haven't used it for quite some time now.
před 18 roky
Michael Brown
753e156844
Allow udp_{send,sendto,sendto_via} to be called outside of the
udp_senddata() callback. This will simplify any UDP protocols that don't
need the temporary buffer.
před 18 roky
Michael Brown
649b789e93
DHCP transmits via specified net device, so no need to create a dummy
routing table entry just to fool ipv4.c any more.
před 18 roky
Michael Brown
c821a7b20d
Add udp_sendto_via() to allow e.g. DHCP to transmit without first having
to set up dummy routing entries.
před 18 roky
Michael Brown
f008b77ba2
Allow an explicit network device to be specified for IP-layer
transmissions.
před 18 roky
Michael Brown
d24b80acf2
Added network interface management commands
před 18 roky
Michael Brown
98b6154c3e
Add "name" field to network device, to facilitate netdev commands.
před 18 roky
Michael Brown
c65fae2475
Add RX quotas to the net device poll() method. This avoids the problem
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.
před 18 roky
Michael Brown
18e5353bed
Rename pkb_available() to pkb_tailroom() for consistency with Linux's
skb_tailroom(). Add pkb_headroom().
před 18 roky
Michael Brown
b7fcfe8ece
Added net device TX queue; this will be needed to support the PXE UNDI API
(which will need us to wait for TX completions).
Added debug autocolourisation to netdevice.c
před 18 roky
Michael Brown
8a268073a7
Move start/stop/expire debug messages to DBG2() level.
před 18 roky
Michael Brown
2eeb7c4fe7
Define "connected" as
"when SYN is ACKed and we have already received SYN", or
"when SYN is received and we have already had SYN ACKed"
rather than just
"when SYN is ACKed"
This avoids spuriously calling the connected() method when we receive
a RST,ACK in response to a SYN.
před 18 roky
Michael Brown
aaca21a2b6
We can't assert that the RX engine is idle in iscsi_done(), because it
may be called during the RX data processor, before the RX engine
transitions back to idle. It doesn't really matter if the RX engine
isn't idle when iscsi_done() is called, because it will just pick up
where it left off on the next call. (The same is not true for the TX
engine, so keep the TX engine assertion.)
před 18 roky
Michael Brown
6ea07b9247
Use debug auto-colourisation.
před 18 roky
Michael Brown
76525294ee
Clean up connection closing and permanent failure logic.
před 18 roky
Michael Brown
20681d6168
Allow empty checksums on received packets
před 18 roky
Michael Brown
0c03bb5a9a
Make open() and close() an official part of the netdevice API.
Call netdevice's poll() and transmit() methods only when device is open.
před 18 roky
Michael Brown
7fafa89258
A DHCP session holds a persistent reference to a network device
před 18 roky
Michael Brown
b29861a5aa
IPv6 minirouting table entries hold persistent references to net devices.
před 18 roky
Michael Brown
b22d4405c0
An AoE session holds a persistent reference to a net device.
před 18 roky
Michael Brown
35b5e5d3f5
Minirouting table entries hold a persistent reference to a net_device.
před 18 roky