summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/drivers/net
Commit message (Collapse)AuthorAgeFilesLines
* Guard against corruption of top half of %esp during UNDI ISRMichael Brown2008-02-131-0/+3
|
* undiisr.S: save/restore upper half of %eflagsH. Peter Anvin2008-02-111-0/+2
| | | | | | Since we don't know what the UNDI code does, it is safest to save/restore %eflags even though the lower half of %eflags is automatically saved by the interrupt itself.
* UNDI ISR: save and restore 32-bit registersH. Peter Anvin2008-02-111-4/+7
| | | | | | | | | | | As written, if the if the UNDI ISR call clobbers the upper halves of any of the GPRs (which by convention it is permitted to do, and by paranoia should be expected to do) then nothing in the interrupt handler will recover the state. Additionally, save/restore %fs and %gs out of sheer paranoia - it's a cheap enough operation, and may prevent problems due to poorly written UNDI stacks.
* Fix compiler warnings that appear only on OpenBSD.Michael Brown2007-12-062-2/+2
|
* Don't rely on retry.c's periodically calling currticks() in order toMichael Brown2007-07-291-1/+7
| | | | allow the UNDI NIC interrupt to happen.
* Move uninitialised .data16 variables to .bss16; saves around 2000Michael Brown2007-07-162-4/+4
| | | | bytes of useless zeroes in the final image.
* Kill off the enforced RX quota; it only seems to hurt on real hardware.Michael Brown2007-07-141-3/+1Star
|
* Improve error reporting for strange length combinations reported byMichael Brown2007-07-101-6/+21
| | | | | | | | | the UNDI stack. Ignore obviously invalid length combinations (as returned by e.g. VMWare's PXE stack). Limit to one packet per poll to avoid memory exhaustion.
* Set up %ds *before* testing a value in our data segment (d'oh!).Michael Brown2007-07-101-6/+11
| | | | | | | | | Always send EOI; do not chain to BIOS's default interrupt handler. They are just too unpredictable; at least VMware's seems to kill the machine if you go anywhere near it. Disable interrupts after return from PXENV_UNDI_ISR, just in case some dumb PXE stack enables them.
* Report RX errors via netdev_rx_err()Michael Brown2007-07-101-1/+2
|
* Protect ISR against failure to unhook.Michael Brown2007-07-102-34/+19Star
|
* Working code to call the PXE stack from within the ISR.Michael Brown2007-07-102-19/+92
|
* Use net_device_operations structure and netdev_nullify() to allow forMichael Brown2007-07-071-10/+28
| | | | | | | | | | | 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.
* convert to zallocHolger Lubitz2007-07-061-2/+1Star
|
* convert to zallocHolger Lubitz2007-07-061-2/+1Star
|
* Work around Etherboot 5.4 bug when multiple packets are received.Michael Brown2007-07-031-1/+38
|
* It's not just Etherboot that fails to generate TX completions.Michael Brown2007-07-031-2/+2
|
* Document TX completion bug.Michael Brown2007-07-031-0/+10
|
* Use a common base-memory packet buffer for DHCP construction (as usedMichael Brown2007-07-021-11/+5Star
| | | | by PXE and NBI) and UNDI packets (as used by undinet and UNDI).
* Kill off hotplug.h and just make net devices normal reference-countedMichael Brown2007-06-271-2/+2
| | | | | | structures. DHCP still broken and #if 0'd out.
* pkbuff->iobuf changeoverMichael Brown2007-05-191-27/+27
| | | | | | | | 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;'
* Updated ISAPnP, EISA, MCA and ISA buses to current device model.Michael Brown2007-03-101-8/+5Star
| | | | | | | 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.
* Don't call PXENV_STOP_UNDI in the kpxeprefix. This slighy breaks theMichael Brown2007-01-291-9/+14
| | | | | clean separation between loading and starting, but does mean that more PXE stacks survive the process.
* Use stdio.h instead of vsprintf.hMichael Brown2007-01-191-1/+1
|
* Use {get,set}_fbms() so that allocated base memory is correctly hidden.Michael Brown2007-01-141-12/+7Star
|
* Add some trace messages for important eventsMichael Brown2007-01-131-0/+6
|
* Pick up the return status code from the correct place now that weMichael Brown2007-01-131-2/+1Star
| | | | don't overwrite the parameter block until *after* the debug code.
* When an UNDI API call fails, print everything there is to know about it.Michael Brown2007-01-131-3/+20
|
* Always send EOI. We can't feasibly share interrupts (since we have noMichael Brown2007-01-131-4/+12
| | | | | | clue what the "previous" interrupt handler will do, which could range from "just an iret" to "disable the interrupt"), and that means that we have to take responsibility for ACKing all interrupts. Joy.
* We *do* have a __data16_array after all!Michael Brown2007-01-121-6/+1Star
|
* Add device description fields to struct device.Michael Brown2007-01-103-13/+28
|
* Give UNDI device a more meaningful name.Michael Brown2007-01-101-1/+1
|
* Add "name" field to struct device to allow human-readable hardware deviceMichael Brown2007-01-103-1/+7
| | | | | | | | | | | 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).
* Add RX quotas to the net device poll() method. This avoids the problemMichael Brown2007-01-091-16/+35
| | | | | | 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.
* Rename pkb_available() to pkb_tailroom() for consistency with Linux'sMichael Brown2007-01-091-2/+2
| | | | skb_tailroom(). Add pkb_headroom().
* Added net device TX queue; this will be needed to support the PXE UNDI APIMichael Brown2007-01-091-4/+8
| | | | | | (which will need us to wait for TX completions). Added debug autocolourisation to netdevice.c
* Added ability to break ISR processing over several calls to poll().Michael Brown2007-01-091-17/+34
| | | | This will allow us to implement RX quotas.
* Send EOI after enabling interrupt, in case the device had asserted IRQMichael Brown2007-01-091-0/+1
| | | | to the PIC while it was disabled.
* Added UNDI root bus driver (which saves including all the PCI bus code,Michael Brown2007-01-091-0/+96
| | | | | | | | UNDI ROM code etc. when you just want a "undi.kpxe"-type image). This driver cannot be used in conjunction with any other driver (it will crash), or in any other format than .kpxe (it just won't find any network devices).
* Added missing call to undinet_remove()Michael Brown2007-01-091-0/+1
|
* undipci_probe() has to calculate busdevfn anyway, so we may as well passMichael Brown2007-01-092-20/+3Star
| | | | it directly to undi_load_pci().
* Avoid erasing non-existent signatures in undi_unload()Michael Brown2007-01-091-2/+4
|
* If preloaded device matches, use that rather than going via the UNDIMichael Brown2007-01-091-21/+46
| | | | loader.
* Provide storage for an undi_device structure representing the preloadedMichael Brown2007-01-091-0/+35
| | | | UNDI stack.
* Use fixed-width fields in struct undi_device, so that pxeprefix.S will beMichael Brown2007-01-091-4/+4
| | | | able to populate the structure.
* Neaten up debug messagesMichael Brown2007-01-081-3/+3
|
* Remove spurious debug messageMichael Brown2007-01-081-1/+0Star
|
* Added any-PCI-device UNDI driverMichael Brown2007-01-081-0/+119
|
* Tidied up debug messagesMichael Brown2007-01-081-1/+2
|
* Split UNDI load/unload out into undiload.c.Michael Brown2007-01-081-0/+189
|