Michael Brown
48fe701716
Respect the RX quota. This improves poll time by about 0.7us when the
quota is 1.
преди 18 години
Michael Brown
ff8528ea9a
Create and use async_block() macro; it cuts down on the visual overhead
of blocking on asynchronous operations, when that isn't an important
aspect of the code.
преди 18 години
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.
преди 18 години
Michael Brown
03390f0cd6
Use pkb_pad() rather than doing it the dangerous way :)
преди 18 години
Michael Brown
a3ed0cbbc7
Extract packet-padding login from rtl8139.c to a separate pkbpad.c file.
преди 18 години
Michael Brown
fdc97499bf
Add device description fields to struct device.
преди 18 години
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).
преди 18 години
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.
преди 18 години
Michael Brown
e822bc2a90
Autopadding was sometimes overwriting the struct list_head at the end
of the packet buffer. Although pkbuffs are guaranteed to be at least
PKB_ZLEN bytes long, there's no guarantee that the data starts at the
start of the packet buffer.
Since we have to align data for rtl8139 anyway, and since the start of
the packet buffer is guaranteed to be aligned to PKB_ALIGN, we may as
well just shuffle the packet down so that it starts at the start of
the packet buffer. This simultaneously aligns the packet and ensures
that there is enough room for the zero-padding.
преди 18 години
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
преди 18 години
Michael Brown
5af4918356
Added support for wildcard device/vendor ID matches
преди 18 години
Michael Brown
7b9617f5df
Add device to hierarchy before calling the driver's probe() function; this
way everything remains consistent if the probe() ends up creating child
devices.
преди 18 години
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.
преди 18 години
Michael Brown
61ed298bc7
Merge changes from mcb-tcp-fixes branch.
преди 18 години
Michael Brown
ab242a760d
Add ability to shut down iSCSI connection
преди 18 години
Michael Brown
7ce3df65c2
Default to port 0 (sic).
преди 18 години
Michael Brown
6ceaa158da
Return -EIO when verification fails, instead of -EINVAL.
преди 18 години
Michael Brown
9f953322a1
Remove warning (at least on platforms with uint32_t == unsigned long).
преди 18 години
Michael Brown
a646e38f03
Use stdlib.h for malloc() instead of malloc.h.
преди 18 години
Michael Brown
a497e16767
The "increment MAC address by port number" hack applies only to EF1.
преди 18 години
Michael Brown
a39b111684
Automatically select between the "10" and "16" variants of command set,
based on the device size.
преди 18 години
Michael Brown
3bd7e479a2
Catch SCSI errors, and work around the start-of-day CHECK CONDITION
that some targets send.
преди 18 години
Michael Brown
29db66fb51
Add support for non-volatile stored options in the RTL8139 EEPROM.
преди 18 години
Michael Brown
d2bf7abe75
Added write support for three-wire devices (e.g. the RTL8139 EEPROM)
преди 18 години
Michael Brown
ac401f481d
Verify data after writing
преди 18 години
Michael Brown
a128b33b8b
The VPD engine is broken and can't actually handle placing VPD
anywhere other than offset 0 within the EEPROM, so we have to put our
settings at 0x100 instead.
преди 18 години
Michael Brown
4c3e0fede5
Adjust EEPROM/flash detection to fit expected manufacturing practice.
преди 18 години
Michael Brown
cb883b3faf
Change some debugging messages to use DBG()
преди 18 години
Michael Brown
6b45947a59
Added debug statements
преди 18 години
Michael Brown
052ef6dc5a
Added nvs_write(). This shares a lot of code in common with nvs_read();
this can probably be optimised down quite a lot.
преди 18 години
Michael Brown
cc9bcb99a0
Add the concept of a fragment list for non-volatile stored options.
преди 18 години
Michael Brown
f944737045
Fixed two logic errors that were cancelling each other out.
преди 18 години
Michael Brown
d62c83a350
Migrated etherfabric driver to using generic SPI layer.
преди 18 години
Michael Brown
2d8d21fe74
Added the generic block-splitting code to nvs.c
преди 18 години
Michael Brown
1961ba44e1
Added generic SPI protocol handler with read and write support.
преди 18 години
Michael Brown
946967f09c
Abstracted out part of the concept of an SPI device to a generalised NVS
device.
Separated the mechanisms of non-volatile storage access and non-volatile
stored options.
преди 18 години
Michael Brown
dc06c895fc
Changed length parameter in SPI methods to be a byte length, rather than
a word length.
преди 18 години
Michael Brown
931f94dca3
Generalised the SPI abstraction layer to also be able to handle interfaces
that don't provide the full flexibility of a bit-bashing interface.
Temporarily hacked rtl8139.c to use the new interface.
преди 18 години
Michael Brown
4cd56820ea
Basic non-volatile storage support
преди 18 години
Michael Brown
3234ef1b0b
Merged changes from Solarflare
преди 18 години
Michael Brown
3f0b4d9ed8
Updated to use asynchronous operation model for iSCSI requests
Added CHAP authentication
преди 18 години
Michael Brown
88e38fa148
We don't actually have a stdio.h header file. Our printf() functions are
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.
преди 18 години
Marty Connor
6ac78f6aff
added stdio.h to includes for DBG compilation
преди 18 години
Marty Connor
757618edea
eth_ntoa and warnings cleanup
преди 18 години
Marty Connor
cd8168b071
eth_ntoa cleanup. still has warnings. needs work.
преди 18 години
Marty Connor
727a88709e
eth_ntoa and warnings cleanup
преди 18 години
Marty Connor
0d1087a5de
eth_ntoa and warnings cleanup
преди 18 години
Marty Connor
859cc71158
compilation warnings cleanup
преди 18 години
Marty Connor
a02dccdafa
eth_ntoa cleanup
преди 18 години
Marty Connor
b88aa51b07
warnings cleanup (still gives lots of compilation warnings from unused functions and missing legacy support)
преди 18 години