DP8390 network interface core implementation. More...
#include <assert.h>
#include <errno.h>
#include "../../include/byteorder.h"
#include "../../structures/packet/packet.h"
#include "../../structures/packet/packet_client.h"
#include "../netif.h"
#include "dp8390_drv.h"
#include "dp8390_port.h"
#include "local.h"
#include "dp8390.h"
Defines | |
#define | wdeth_probe(dep) (0) |
#define | ne_probe(dep) (0) |
#define | el2_probe(dep) (0) |
#define | CR_EXTRA CR_STA |
Functions | |
int | queue_packet (dpeth_t *dep, packet_t packet) |
Queues the outgoing packet. | |
static void | outsb (port_t port, void *buf, size_t size) |
Reads a memory block byte by byte. | |
static void | outsw (port_t port, void *buf, size_t size) |
Reads a memory block word by word. | |
_PROTOTYPE (static void dp_init,(dpeth_t *dep)) | |
_PROTOTYPE (static void dp_getblock,(dpeth_t *dep, int page, size_t offset, size_t size, void *dst)) | |
_PROTOTYPE (static int dp_pkt2user,(dpeth_t *dep, int page, int length)) | |
_PROTOTYPE (static void dp_user2nic,(dpeth_t *dep, iovec_dat_t *iovp, vir_bytes offset, int nic_addr, vir_bytes count)) | |
_PROTOTYPE (static void dp_nic2user,(dpeth_t *dep, int nic_addr, iovec_dat_t *iovp, vir_bytes offset, vir_bytes count)) | |
_PROTOTYPE (static void dp_next_iovec,(iovec_dat_t *iovp)) | |
_PROTOTYPE (static void reply,(dpeth_t *dep, int err, int may_block)) | |
_PROTOTYPE (static void get_userdata,(int user_proc, vir_bytes user_addr, vir_bytes count, void *loc_addr)) | |
_PROTOTYPE (static void insb,(port_t port, void *buf, size_t size)) | |
int | do_probe (dpeth_t *dep) |
Probes and initializes the network interface. | |
void | dp8390_dump (dpeth_t *dep) |
Prints out network interface information. | |
int | do_init (dpeth_t *dep, int mode) |
Initializes and/or starts the network interface. | |
void | do_stop (dpeth_t *dep) |
Stops the network interface. | |
int | do_pwrite (dpeth_t *dep, packet_t packet, int from_int) |
Sends a packet. | |
void | dp_init (dpeth_t *dep) |
static void | dp_reinit (dpeth_t *dep) |
static void | dp_reset (dpeth_t *dep) |
void | dp_check_ints (dpeth_t *dep, int isr) |
Processes the interrupt. | |
static void | dp_recv (dpeth_t *dep) |
static void | dp_send (dpeth_t *dep) |
static void | dp_getblock (dpeth_t *dep, int page, size_t offset, size_t size, void *dst) |
static void | dp_pio8_getblock (dpeth_t *dep, int page, size_t offset, size_t size, void *dst) |
static void | dp_pio16_getblock (dpeth_t *dep, int page, size_t offset, size_t size, void *dst) |
static int | dp_pkt2user (dpeth_t *dep, int page, int length) |
static void | dp_user2nic (dpeth_t *dep, iovec_dat_t *iovp, vir_bytes offset, int nic_addr, vir_bytes count) |
static void | dp_pio8_user2nic (dpeth_t *dep, iovec_dat_t *iovp, vir_bytes offset, int nic_addr, vir_bytes count) |
static void | dp_pio16_user2nic (dpeth_t *dep, iovec_dat_t *iovp, vir_bytes offset, int nic_addr, vir_bytes count) |
static void | dp_nic2user (dpeth_t *dep, int nic_addr, iovec_dat_t *iovp, vir_bytes offset, vir_bytes count) |
static void | dp_pio8_nic2user (dpeth_t *dep, int nic_addr, iovec_dat_t *iovp, vir_bytes offset, vir_bytes count) |
static void | dp_pio16_nic2user (dpeth_t *dep, int nic_addr, iovec_dat_t *iovp, vir_bytes offset, vir_bytes count) |
static void | dp_next_iovec (iovec_dat_t *iovp) |
static void | conf_hw (dpeth_t *dep) |
static void | map_hw_buffer (dpeth_t *dep) |
static void | reply (dpeth_t *dep, int err, int may_block) |
static void | get_userdata (int user_proc, vir_bytes user_addr, vir_bytes count, void *loc_addr) |
static void | insb (port_t port, void *buf, size_t size) |
static void | insw (port_t port, void *buf, size_t size) |
DP8390 network interface core implementation.