|   | 
| Data Structures | |
| struct | dp_rcvhdr | 
| Type definition of the receive header.  More... | |
| struct | iovec_dat | 
| struct | dpeth | 
| struct | eth_stat | 
| Ethernet statistics.  More... | |
| struct | ether_addr | 
| Ethernet address type definition.  More... | |
| struct | iovec_t | 
| Type definition of the input/output vector.  More... | |
| Modules | |
| NE2000 network interface family | |
| Files | |
| file | dp8390.c | 
| DP8390 network interface core implementation. | |
| file | dp8390.h | 
| DP8390 network interface definitions. | |
| file | dp8390_drv.h | 
| DP8390 network interface driver interface. | |
| file | dp8390_module.c | 
| DP8390 network interface implementation. | |
| file | dp8390_port.h | 
| DP8390 network interface types and structures ports. | |
| file | local.h | 
| Network interface probe functions. | |
| Defines | |
| #define | wdeth_probe(dep) (0) | 
| #define | ne_probe(dep) (0) | 
| #define | el2_probe(dep) (0) | 
| #define | CR_EXTRA CR_STA | 
| #define | DP8390_IO_SIZE 0x01f | 
| Input/output size. | |
| #define | DP_CR 0x0 | 
| #define | DP_CR 0x0 | 
| #define | DP_CR 0x0 | 
| #define | DP_CLDA0 0x1 | 
| #define | DP_CLDA1 0x2 | 
| #define | DP_BNRY 0x3 | 
| #define | DP_BNRY 0x3 | 
| #define | DP_TSR 0x4 | 
| #define | DP_NCR 0x5 | 
| #define | DP_FIFO 0x6 | 
| #define | DP_ISR 0x7 | 
| #define | DP_ISR 0x7 | 
| #define | DP_CRDA0 0x8 | 
| #define | DP_CRDA1 0x9 | 
| #define | DP_DUM1 0xA | 
| #define | DP_DUM2 0xB | 
| #define | DP_RSR 0xC | 
| #define | DP_CNTR0 0xD | 
| #define | DP_CNTR1 0xE | 
| #define | DP_CNTR2 0xF | 
| #define | DP_PSTART 0x1 | 
| #define | DP_PSTOP 0x2 | 
| #define | DP_TPSR 0x4 | 
| #define | DP_TBCR0 0x5 | 
| #define | DP_TBCR1 0x6 | 
| #define | DP_RSAR0 0x8 | 
| #define | DP_RSAR1 0x9 | 
| #define | DP_RBCR0 0xA | 
| #define | DP_RBCR1 0xB | 
| #define | DP_RCR 0xC | 
| #define | DP_TCR 0xD | 
| #define | DP_DCR 0xE | 
| #define | DP_IMR 0xF | 
| #define | DP_PAR0 0x1 | 
| #define | DP_PAR1 0x2 | 
| #define | DP_PAR2 0x3 | 
| #define | DP_PAR3 0x4 | 
| #define | DP_PAR4 0x5 | 
| #define | DP_PAR5 0x6 | 
| #define | DP_CURR 0x7 | 
| #define | DP_MAR0 0x8 | 
| #define | DP_MAR1 0x9 | 
| #define | DP_MAR2 0xA | 
| #define | DP_MAR3 0xB | 
| #define | DP_MAR4 0xC | 
| #define | DP_MAR5 0xD | 
| #define | DP_MAR6 0xE | 
| #define | DP_MAR7 0xF | 
| #define | CR_STP 0x01 | 
| #define | CR_STA 0x02 | 
| #define | CR_TXP 0x04 | 
| #define | CR_DMA 0x38 | 
| #define | CR_DM_NOP 0x00 | 
| #define | CR_DM_RR 0x08 | 
| #define | CR_DM_RW 0x10 | 
| #define | CR_DM_SP 0x18 | 
| #define | CR_DM_ABORT 0x20 | 
| #define | CR_PS 0xC0 | 
| #define | CR_PS_P0 0x00 | 
| #define | CR_PS_P1 0x40 | 
| #define | CR_PS_P2 0x80 | 
| #define | CR_PS_T1 0xC0 | 
| #define | ISR_PRX 0x01 | 
| #define | ISR_PTX 0x02 | 
| #define | ISR_RXE 0x04 | 
| #define | ISR_TXE 0x08 | 
| #define | ISR_OVW 0x10 | 
| #define | ISR_CNT 0x20 | 
| #define | ISR_RDC 0x40 | 
| #define | ISR_RST 0x80 | 
| #define | IMR_PRXE 0x01 | 
| #define | IMR_PTXE 0x02 | 
| #define | IMR_RXEE 0x04 | 
| #define | IMR_TXEE 0x08 | 
| #define | IMR_OVWE 0x10 | 
| #define | IMR_CNTE 0x20 | 
| #define | IMR_RDCE 0x40 | 
| #define | DCR_WTS 0x01 | 
| #define | DCR_BYTEWIDE 0x00 | 
| #define | DCR_WORDWIDE 0x01 | 
| #define | DCR_BOS 0x02 | 
| #define | DCR_LTLENDIAN 0x00 | 
| #define | DCR_BIGENDIAN 0x02 | 
| #define | DCR_LAS 0x04 | 
| #define | DCR_BMS 0x08 | 
| #define | DCR_AR 0x10 | 
| #define | DCR_FTS 0x60 | 
| #define | DCR_2BYTES 0x00 | 
| #define | DCR_4BYTES 0x40 | 
| #define | DCR_8BYTES 0x20 | 
| #define | DCR_12BYTES 0x60 | 
| #define | TCR_CRC 0x01 | 
| #define | TCR_ELC 0x06 | 
| #define | TCR_NORMAL 0x00 | 
| #define | TCR_INTERNAL 0x02 | 
| #define | TCR_0EXTERNAL 0x04 | 
| #define | TCR_1EXTERNAL 0x06 | 
| #define | TCR_ATD 0x08 | 
| #define | TCR_OFST 0x10 | 
| #define | TSR_PTX 0x01 | 
| #define | TSR_DFR 0x02 | 
| #define | TSR_COL 0x04 | 
| #define | TSR_ABT 0x08 | 
| #define | TSR_CRS 0x10 | 
| #define | TSR_FU 0x20 | 
| #define | TSR_CDH 0x40 | 
| #define | TSR_OWC 0x80 | 
| #define | RCR_SEP 0x01 | 
| #define | RCR_AR 0x02 | 
| #define | RCR_AB 0x04 | 
| #define | RCR_AM 0x08 | 
| #define | RCR_PRO 0x10 | 
| #define | RCR_MON 0x20 | 
| #define | RSR_PRX 0x01 | 
| #define | RSR_CRC 0x02 | 
| #define | RSR_FAE 0x04 | 
| #define | RSR_FO 0x08 | 
| #define | RSR_MPA 0x10 | 
| #define | RSR_PHY 0x20 | 
| #define | RSR_DIS 0x40 | 
| #define | RSR_DFR 0x80 | 
| #define | DP_PAGESIZE 256 | 
| Page size. | |
| #define | inb_reg0(dep, reg) (inb(dep->de_dp8390_port+reg)) | 
| Reads 1 byte from the zero page register. | |
| #define | outb_reg0(dep, reg, data) (outb(dep->de_dp8390_port+reg, data)) | 
| Writes 1 byte zero page register. | |
| #define | inb_reg1(dep, reg) (inb(dep->de_dp8390_port+reg)) | 
| Reads 1 byte from the first page register. | |
| #define | outb_reg1(dep, reg, data) (outb(dep->de_dp8390_port+reg, data)) | 
| Writes 1 byte first page register. | |
| #define | IOVEC_NR 1 | 
| #define | SENDQ_NR 1 | 
| #define | SENDQ_PAGES 6 | 
| #define | MAX_PACKETS 4 | 
| Maximum number of waiting packets to be sent or received. | |
| #define | DEI_DEFAULT 0x8000 | 
| #define | DEF_EMPTY 0x000 | 
| #define | DEF_PACK_SEND 0x001 | 
| #define | DEF_PACK_RECV 0x002 | 
| #define | DEF_SEND_AVAIL 0x004 | 
| #define | DEF_READING 0x010 | 
| #define | DEF_PROMISC 0x040 | 
| #define | DEF_MULTI 0x080 | 
| #define | DEF_BROAD 0x100 | 
| #define | DEF_ENABLED 0x200 | 
| #define | DEF_STOPPED 0x400 | 
| #define | DEM_DISABLED 0x0 | 
| #define | DEM_SINK 0x1 | 
| #define | DEM_ENABLED 0x2 | 
| #define | debug 1 | 
| #define | NAME "dp8390 network interface" | 
| DP8390 module name. | |
| #define | IRQ_GET_DEVICE(call) (device_id_t) IPC_GET_METHOD(*call) | 
| Returns the device from the interrupt call. | |
| #define | IPC_GET_ISR(call) (int) IPC_GET_ARG2(*call) | 
| Returns the interrupt status register from the interrupt call. | |
| #define | _PROTOTYPE(function, params) function params | 
| Macro for difining functions. | |
| #define | OK EOK | 
| Success error code. | |
| #define | memcmp(first, second, size) bcmp((char *) (first), (char *) (second), (size)) | 
| Compares two memory blocks. | |
| #define | inb(port) pio_read_8((ioport8_t *) (port)) | 
| Reads 1 byte. | |
| #define | inw(port) pio_read_16((ioport16_t *) (port)) | 
| Reads 1 word (2 bytes). | |
| #define | outb(port, value) pio_write_8((ioport8_t *) (port), (value)) | 
| Writes 1 byte. | |
| #define | outw(port, value) pio_write_16((ioport16_t *) (port), (value)) | 
| Writes 1 word (2 bytes). | |
| #define | panic(...) printf("%s%s%d", __VA_ARGS__) | 
| Prints out the driver critical error. | |
| #define | sys_vircopy(proc, src_s, src, me, dst_s, dst, bytes) ({memcpy((void *)(dst), (void *)(src), (bytes)); EOK;}) | 
| Copies a memory block. | |
| #define | do_vir_insb(port, proc, dst, bytes) insb((port), (void *)(dst), (bytes)) | 
| Reads a memory block byte by byte. | |
| #define | do_vir_insw(port, proc, dst, bytes) insw((port), (void *)(dst), (bytes)) | 
| Reads a memory block word by word (2 bytes). | |
| #define | do_vir_outsb(port, proc, src, bytes) outsb((port), (void *)(src), (bytes)) | 
| Writes a memory block byte by byte. | |
| #define | do_vir_outsw(port, proc, src, bytes) outsw((port), (void *)(src), (bytes)) | 
| Writes a memory block word by word (2 bytes). | |
| #define | DL_NOMODE 0x0 | 
| #define | DL_PROMISC_REQ 0x2 | 
| #define | DL_MULTI_REQ 0x4 | 
| #define | DL_BROAD_REQ 0x8 | 
| #define | TRUE 1 | 
| True value. | |
| #define | FALSE 0 | 
| False value. | |
| #define | NO_NUM 0x8000 | 
| No number value. | |
| #define | EGENERIC EINVAL | 
| Generic error. | |
| #define | ETH_MIN_PACK_SIZE 60 | 
| Minimum Ethernet packet size in bytes. | |
| #define | ETH_MAX_PACK_SIZE_TAGGED 1518 | 
| Maximum Ethernet packet size in bytes. | |
| #define | ENABLE_WDETH 0 | 
| WDETH switch. | |
| #define | ENABLE_NE2000 1 | 
| NE2000 switch. | |
| #define | ENABLE_3C503 0 | 
| 3C503 switch. | |
| #define | ENABLE_PCI 0 | 
| PCI support switch. | |
| Typedefs | |
| typedef struct dp_rcvhdr | dp_rcvhdr_t | 
| Type definition of the receive header. | |
| typedef struct iovec_dat | iovec_dat_t | 
| typedef struct dpeth | dpeth_t | 
| typedef uint8_t | u8_t | 
| Type definition of the unsigned byte. | |
| typedef uint16_t | u16_t | 
| Type definition of the unsigned short. | |
| typedef long | port_t | 
| Type definition of a port. | |
| typedef struct eth_stat | eth_stat_t | 
| Ethernet statistics. | |
| typedef struct ether_addr | ether_addr_t | 
| Ethernet address type definition. | |
| typedef unsigned long | phys_bytes | 
| Type definition of the physical addresses and lengths in bytes. | |
| typedef unsigned long | vir_bytes | 
| Type definition of the virtual addresses and lengths in bytes. | |
| 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) | 
| _PROTOTYPE (typedef void(*dp_initf_t),(struct dpeth *dep)) | |
| _PROTOTYPE (typedef void(*dp_user2nicf_t),(struct dpeth *dep, struct iovec_dat *iovp, vir_bytes offset, int nic_addr, vir_bytes count)) | |
| _PROTOTYPE (typedef void(*dp_nic2userf_t),(struct dpeth *dep, int nic_addr, struct iovec_dat *iovp, vir_bytes offset, vir_bytes count)) | |
| _PROTOTYPE (typedef void(*dp_getblock_t),(struct dpeth *dep, int page, size_t offset, size_t size, void *dst)) | |
| void | module_print_name (void) | 
| Prints the module name. | |
| void | irq_handler (ipc_callid_t iid, ipc_call_t *call) | 
| Handles the interrupt messages. | |
| int | change_state (device_ref device, device_state_t state) | 
| Changes the network interface state. | |
| int | netif_specific_message (ipc_callid_t callid, ipc_call_t *call, ipc_call_t *answer, int *answer_count) | 
| Processes the netif driver specific message. | |
| int | netif_get_device_stats (device_id_t device_id, device_stats_ref stats) | 
| Returns the device usage statistics. | |
| int | netif_get_addr_message (device_id_t device_id, measured_string_ref address) | 
| Returns the device local hardware address. | |
| int | netif_probe_message (device_id_t device_id, int irq, uintptr_t io) | 
| Probes the existence of the device. | |
| int | netif_send_message (device_id_t device_id, packet_t packet, services_t sender) | 
| Sends the packet queue. | |
| int | netif_start_message (device_ref device) | 
| Starts the device. | |
| int | netif_stop_message (device_ref device) | 
| Stops the device. | |
| int | netif_initialize (void) | 
| Initializes the specific module. | |
| int | ne_probe (struct dpeth *dep) | 
| Probes a NE2000 or NE1000 network interface. | |
| Variables | |
| static irq_cmd_t | dp8390_cmds [] | 
| DP8390 kernel interrupt command sequence. | |
| static irq_code_t | dp8390_code | 
| DP8390 kernel interrupt code. | |
| netif_globals_t | netif_globals | 
| Network interface module global data. | |
| #define _PROTOTYPE | ( | function, | |||
| params | ) | function params | 
Macro for difining functions.
| [in] | function | The function type and name definition. | 
| [in] | params | The function parameters definition. | 
| #define CR_DM_ABORT 0x20 | 
Referenced by dp_init(), dp_reset(), and ne_probe().
| #define CR_DM_NOP 0x00 | 
| #define CR_DM_RR 0x08 | 
Referenced by dp_pio16_getblock(), dp_pio16_nic2user(), dp_pio8_getblock(), dp_pio8_nic2user(), ne_init(), test_16(), and test_8().
| #define CR_DM_RW 0x10 | 
Referenced by dp_pio16_user2nic(), dp_pio8_user2nic(), test_16(), and test_8().
| #define CR_DM_SP 0x18 | 
| #define CR_DMA 0x38 | 
| #define CR_EXTRA CR_STA | 
Referenced by dp_recv(), and dp_reinit().
| #define CR_PS 0xC0 | 
| #define CR_PS_P0 0x00 | 
| #define CR_PS_P2 0x80 | 
| #define CR_PS_T1 0xC0 | 
| #define CR_STA 0x02 | 
Referenced by dp_init(), dp_pio16_getblock(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_getblock(), dp_pio8_nic2user(), dp_pio8_user2nic(), dp_reset(), ne_init(), test_16(), and test_8().
| #define CR_STP 0x01 | 
Referenced by dp_init(), dp_reset(), and ne_probe().
| #define CR_TXP 0x04 | 
| #define DCR_12BYTES 0x60 | 
| #define DCR_2BYTES 0x00 | 
| #define DCR_4BYTES 0x40 | 
| #define DCR_8BYTES 0x20 | 
Referenced by dp_init(), and ne_probe().
| #define DCR_AR 0x10 | 
| #define DCR_BIGENDIAN 0x02 | 
| #define DCR_BMS 0x08 | 
Referenced by dp_init(), and ne_probe().
| #define DCR_BOS 0x02 | 
| #define DCR_BYTEWIDE 0x00 | 
Referenced by dp_init(), and ne_probe().
| #define DCR_FTS 0x60 | 
| #define DCR_LAS 0x04 | 
| #define DCR_LTLENDIAN 0x00 | 
| #define DCR_WORDWIDE 0x01 | 
Referenced by dp_init(), and ne_probe().
| #define DCR_WTS 0x01 | 
| #define debug 1 | 
Referenced by dp_init(), map_hw_buffer(), ne_init(), test_16(), and test_8().
| #define DEF_BROAD 0x100 | 
Referenced by dp_init(), and dp_reinit().
| #define DEF_ENABLED 0x200 | 
Referenced by dp_init(), dp_recv(), and irq_handler().
| #define DEF_MULTI 0x080 | 
Referenced by dp_init(), and dp_reinit().
| #define DEF_PACK_RECV 0x002 | 
Referenced by dp_pkt2user().
| #define DEF_PACK_SEND 0x001 | 
| #define DEF_PROMISC 0x040 | 
Referenced by dp_init(), and dp_reinit().
| #define DEF_READING 0x010 | 
| #define DEF_SEND_AVAIL 0x004 | 
| #define DEF_STOPPED 0x400 | 
Referenced by dp_reset().
| #define DEI_DEFAULT 0x8000 | 
Referenced by ne_init().
| #define DEM_DISABLED 0x0 | 
Referenced by conf_hw(), and netif_probe_message().
| #define DEM_ENABLED 0x2 | 
Referenced by conf_hw(), and irq_handler().
| #define DEM_SINK 0x1 | 
| #define DL_BROAD_REQ 0x8 | 
Referenced by netif_start_message().
| #define DL_MULTI_REQ 0x4 | 
| #define DL_NOMODE 0x0 | 
| #define DL_PROMISC_REQ 0x2 | 
| #define do_vir_insb | ( | port, | |||
| proc, | |||||
| dst, | |||||
| bytes | ) | insb((port), (void *)(dst), (bytes)) | 
Reads a memory block byte by byte.
| [in] | port | The address to be written. | 
| proc | The source process. Ignored parameter. | |
| [in] | dst | The destination address. | 
| [in] | bytes | The block size in bytes. | 
Referenced by dp_pio8_nic2user().
| #define do_vir_insw | ( | port, | |||
| proc, | |||||
| dst, | |||||
| bytes | ) | insw((port), (void *)(dst), (bytes)) | 
Reads a memory block word by word (2 bytes).
| [in] | port | The address to be written. | 
| proc | The source process. Ignored parameter. | |
| [in] | dst | The destination address. | 
| [in] | bytes | The block size in bytes. | 
Referenced by dp_pio16_nic2user().
| #define do_vir_outsb | ( | port, | |||
| proc, | |||||
| src, | |||||
| bytes | ) | outsb((port), (void *)(src), (bytes)) | 
Writes a memory block byte by byte.
| [in] | port | The address to be written. | 
| proc | The source process. Ignored parameter. | |
| [in] | src | The source address. | 
| [in] | bytes | The block size in bytes. | 
Referenced by dp_pio8_user2nic().
| #define do_vir_outsw | ( | port, | |||
| proc, | |||||
| src, | |||||
| bytes | ) | outsw((port), (void *)(src), (bytes)) | 
Writes a memory block word by word (2 bytes).
| [in] | port | The address to be written. | 
| proc | The source process. Ignored parameter. | |
| [in] | src | The source address. | 
| [in] | bytes | The block size in bytes. | 
Referenced by dp_pio16_user2nic().
| #define DP8390_IO_SIZE 0x01f | 
Input/output size.
Referenced by netif_probe_message().
| #define DP_BNRY 0x3 | 
| #define DP_CLDA0 0x1 | 
| #define DP_CLDA1 0x2 | 
| #define DP_CNTR0 0xD | 
Referenced by dp_init().
| #define DP_CNTR1 0xE | 
Referenced by dp_init().
| #define DP_CNTR2 0xF | 
Referenced by dp_init().
| #define DP_CR 0x0 | 
| #define DP_CR 0x0 | 
| #define DP_CR 0x0 | 
| #define DP_CRDA0 0x8 | 
| #define DP_CRDA1 0x9 | 
| #define DP_DCR 0xE | 
Referenced by dp_init(), and ne_probe().
| #define DP_DUM1 0xA | 
| #define DP_DUM2 0xB | 
| #define DP_FIFO 0x6 | 
| #define DP_IMR 0xF | 
Referenced by dp_init().
| #define DP_ISR 0x7 | 
| #define DP_ISR 0x7 | 
Referenced by dp_init(), dp_pio16_user2nic(), dp_pio8_user2nic(), dp_reset(), ne_probe(), netif_start_message(), test_16(), and test_8().
| #define DP_MAR0 0x8 | 
Referenced by dp_init().
| #define DP_MAR1 0x9 | 
Referenced by dp_init().
| #define DP_MAR2 0xA | 
Referenced by dp_init().
| #define DP_MAR3 0xB | 
Referenced by dp_init().
| #define DP_MAR4 0xC | 
Referenced by dp_init().
| #define DP_MAR5 0xD | 
Referenced by dp_init().
| #define DP_MAR6 0xE | 
Referenced by dp_init().
| #define DP_MAR7 0xF | 
Referenced by dp_init().
| #define DP_NCR 0x5 | 
| #define DP_PAGESIZE 256 | 
Page size.
Referenced by ne_init().
| #define DP_PAR0 0x1 | 
Referenced by dp_init().
| #define DP_PAR1 0x2 | 
Referenced by dp_init().
| #define DP_PAR2 0x3 | 
Referenced by dp_init().
| #define DP_PAR3 0x4 | 
Referenced by dp_init().
| #define DP_PAR4 0x5 | 
Referenced by dp_init().
| #define DP_PAR5 0x6 | 
Referenced by dp_init().
| #define DP_PSTART 0x1 | 
Referenced by dp_init().
| #define DP_PSTOP 0x2 | 
Referenced by dp_init().
| #define DP_RBCR0 0xA | 
Referenced by dp_init(), dp_pio16_getblock(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_getblock(), dp_pio8_nic2user(), dp_pio8_user2nic(), dp_reset(), ne_init(), test_16(), and test_8().
| #define DP_RBCR1 0xB | 
Referenced by dp_init(), dp_pio16_getblock(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_getblock(), dp_pio8_nic2user(), dp_pio8_user2nic(), dp_reset(), ne_init(), test_16(), and test_8().
| #define DP_RCR 0xC | 
Referenced by dp_init(), dp_reinit(), and ne_probe().
| #define DP_RSAR0 0x8 | 
Referenced by dp_pio16_getblock(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_getblock(), dp_pio8_nic2user(), dp_pio8_user2nic(), ne_init(), test_16(), and test_8().
| #define DP_RSAR1 0x9 | 
Referenced by dp_pio16_getblock(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_getblock(), dp_pio8_nic2user(), dp_pio8_user2nic(), ne_init(), test_16(), and test_8().
| #define DP_RSR 0xC | 
| #define DP_TBCR0 0x5 | 
| #define DP_TBCR1 0x6 | 
| #define DP_TCR 0xD | 
Referenced by dp_init(), dp_reset(), and ne_probe().
| #define DP_TPSR 0x4 | 
| #define DP_TSR 0x4 | 
| #define EGENERIC EINVAL | 
Generic error.
| #define el2_probe | ( | dep | ) | (0) | 
Referenced by conf_hw().
| #define ENABLE_3C503 0 | 
3C503 switch.
| #define ENABLE_NE2000 1 | 
NE2000 switch.
| #define ENABLE_PCI 0 | 
PCI support switch.
| #define ENABLE_WDETH 0 | 
WDETH switch.
| #define ETH_MAX_PACK_SIZE_TAGGED 1518 | 
Maximum Ethernet packet size in bytes.
| #define FALSE 0 | 
False value.
Referenced by dp_recv(), and netif_send_message().
| #define IMR_CNTE 0x20 | 
Referenced by dp_init().
| #define IMR_OVWE 0x10 | 
Referenced by dp_init().
| #define IMR_PRXE 0x01 | 
Referenced by dp_init().
| #define IMR_PTXE 0x02 | 
Referenced by dp_init().
| #define IMR_RDCE 0x40 | 
| #define IMR_RXEE 0x04 | 
Referenced by dp_init().
| #define IMR_TXEE 0x08 | 
Referenced by dp_init().
| #define inb | ( | port | ) | pio_read_8((ioport8_t *) (port)) | 
Reads 1 byte.
| [in] | port | The address to be read. | 
Referenced by insb().
| #define inb_reg0 | ( | dep, | |||
| reg | ) | (inb(dep->de_dp8390_port+reg)) | 
Reads 1 byte from the zero page register.
| [in] | dep | The network interface structure. | 
| [in] | reg | The register offset. | 
Referenced by dp_init(), dp_pio16_user2nic(), dp_pio8_user2nic(), dp_recv(), dp_reset(), ne_probe(), test_16(), and test_8().
| #define inb_reg1 | ( | dep, | |||
| reg | ) | (inb(dep->de_dp8390_port+reg)) | 
Reads 1 byte from the first page register.
| [in] | dep | The network interface structure. | 
| [in] | reg | The register offset. | 
Referenced by dp_recv().
| #define inw | ( | port | ) | pio_read_16((ioport16_t *) (port)) | 
Reads 1 word (2 bytes).
| [in] | port | The address to be read. | 
Referenced by dp_pio16_nic2user(), and insw().
| #define IOVEC_NR 1 | 
Referenced by dp_next_iovec(), dp_nic2user(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_nic2user(), dp_pio8_user2nic(), and dp_user2nic().
| #define IPC_GET_ISR | ( | call | ) | (int) IPC_GET_ARG2(*call) | 
Returns the interrupt status register from the interrupt call.
| [in] | call | The interrupt call. | 
Referenced by irq_handler().
| #define IRQ_GET_DEVICE | ( | call | ) | (device_id_t) IPC_GET_METHOD(*call) | 
Returns the device from the interrupt call.
| [in] | call | The interrupt call. | 
Referenced by irq_handler().
| #define ISR_CNT 0x20 | 
| #define ISR_OVW 0x10 | 
| #define ISR_PRX 0x01 | 
| #define ISR_PTX 0x02 | 
| #define ISR_RDC 0x40 | 
Referenced by dp_reset(), test_16(), and test_8().
| #define ISR_RST 0x80 | 
Referenced by dp_reset(), and ne_probe().
| #define ISR_RXE 0x04 | 
| #define ISR_TXE 0x08 | 
| #define MAX_PACKETS 4 | 
Maximum number of waiting packets to be sent or received.
Referenced by dp_pkt2user(), and queue_packet().
| #define memcmp | ( | first, | |||
| second, | |||||
| size | ) | bcmp((char *) (first), (char *) (second), (size)) | 
| #define NAME "dp8390 network interface" | 
DP8390 module name.
| #define ne_probe | ( | dep | ) | (0) | 
Referenced by conf_hw().
| #define NO_NUM 0x8000 | 
No number value.
Referenced by dp_pio16_user2nic(), and dp_pio8_user2nic().
| #define OK EOK | 
Success error code.
Referenced by dp_nic2user(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pkt2user(), dp_recv(), dp_user2nic(), and get_userdata().
| #define outb | ( | port, | |||
| value | ) | pio_write_8((ioport8_t *) (port), (value)) | 
Writes 1 byte.
| [in] | port | The address to be written. | 
| [in] | value | The value to be written. | 
Referenced by outsb().
| #define outb_reg0 | ( | dep, | |||
| reg, | |||||
| data | ) | (outb(dep->de_dp8390_port+reg, data)) | 
Writes 1 byte zero page register.
| [in] | dep | The network interface structure. | 
| [in] | reg | The register offset. | 
| [in] | data | The value to be written. | 
Referenced by dp_init(), dp_pio16_getblock(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_getblock(), dp_pio8_nic2user(), dp_pio8_user2nic(), dp_recv(), dp_reinit(), dp_reset(), ne_init(), ne_probe(), test_16(), and test_8().
| #define outb_reg1 | ( | dep, | |||
| reg, | |||||
| data | ) | (outb(dep->de_dp8390_port+reg, data)) | 
Writes 1 byte first page register.
| [in] | dep | The network interface structure. | 
| [in] | reg | The register offset. | 
| [in] | data | The value to be written. | 
Referenced by dp_init().
| #define outw | ( | port, | |||
| value | ) | pio_write_16((ioport16_t *) (port), (value)) | 
Writes 1 word (2 bytes).
| [in] | port | The address to be written. | 
| [in] | value | The value to be written. | 
Referenced by dp_pio16_user2nic(), and outsw().
| #define panic | ( | ... | ) | printf("%s%s%d", __VA_ARGS__) | 
Prints out the driver critical error.
Does not call the system panic().
Referenced by dp_nic2user(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_user2nic(), dp_user2nic(), and get_userdata().
| #define RCR_AB 0x04 | 
Referenced by dp_init(), and dp_reinit().
| #define RCR_AM 0x08 | 
Referenced by dp_init(), and dp_reinit().
| #define RCR_AR 0x02 | 
| #define RCR_MON 0x20 | 
Referenced by ne_probe().
| #define RCR_PRO 0x10 | 
Referenced by dp_init(), and dp_reinit().
| #define RCR_SEP 0x01 | 
| #define RSR_CRC 0x02 | 
| #define RSR_DFR 0x80 | 
| #define RSR_DIS 0x40 | 
| #define RSR_FAE 0x04 | 
| #define RSR_FO 0x08 | 
Referenced by dp_recv().
| #define RSR_MPA 0x10 | 
| #define RSR_PHY 0x20 | 
| #define RSR_PRX 0x01 | 
Referenced by dp_recv().
| #define SENDQ_NR 1 | 
Referenced by ne_init().
| #define SENDQ_PAGES 6 | 
Referenced by ne_init().
| #define sys_vircopy | ( | proc, | |||
| src_s, | |||||
| src, | |||||
| me, | |||||
| dst_s, | |||||
| dst, | |||||
| bytes | ) | ({memcpy((void *)(dst), (void *)(src), (bytes)); EOK;}) | 
Copies a memory block.
| proc | The source process. Ignored parameter. | |
| src_s | Ignored parameter. | |
| [in] | src | The source address. | 
| me | The current proces. Ignored parameter. | |
| dst_s | Ignored parameter. | |
| [in] | dst | The destination address. | 
| [in] | bytes | The block size in bytes. | 
Referenced by dp_nic2user(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_user2nic(), and get_userdata().
| #define TCR_0EXTERNAL 0x04 | 
| #define TCR_1EXTERNAL 0x06 | 
Referenced by dp_reset().
| #define TCR_ATD 0x08 | 
| #define TCR_CRC 0x01 | 
| #define TCR_ELC 0x06 | 
| #define TCR_INTERNAL 0x02 | 
Referenced by dp_init().
| #define TCR_NORMAL 0x00 | 
Referenced by dp_init(), dp_reset(), and ne_probe().
| #define TCR_OFST 0x10 | 
Referenced by dp_reset().
| #define TSR_ABT 0x08 | 
| #define TSR_CDH 0x40 | 
| #define TSR_COL 0x04 | 
| #define TSR_CRS 0x10 | 
| #define TSR_DFR 0x02 | 
| #define TSR_FU 0x20 | 
| #define TSR_OWC 0x80 | 
| #define TSR_PTX 0x01 | 
| #define wdeth_probe | ( | dep | ) | (0) | 
Referenced by conf_hw().
| typedef struct dp_rcvhdr dp_rcvhdr_t | 
Type definition of the receive header.
| typedef struct eth_stat eth_stat_t | 
Ethernet statistics.
| typedef struct ether_addr ether_addr_t | 
Ethernet address type definition.
| typedef struct iovec_dat iovec_dat_t | 
| typedef unsigned long phys_bytes | 
Type definition of the physical addresses and lengths in bytes.
| typedef long port_t | 
Type definition of a port.
| typedef uint16_t u16_t | 
Type definition of the unsigned short.
| typedef uint8_t u8_t | 
Type definition of the unsigned byte.
| typedef unsigned long vir_bytes | 
Type definition of the virtual addresses and lengths in bytes.
| _PROTOTYPE | ( | typedef void * | dp_getblock_t, | |
| (struct dpeth *dep, int page, size_t offset, size_t size, void *dst) | ||||
| ) | 
| _PROTOTYPE | ( | typedef void * | dp_nic2userf_t, | |
| (struct dpeth *dep, int nic_addr, struct iovec_dat *iovp, vir_bytes offset, vir_bytes count) | ||||
| ) | 
| _PROTOTYPE | ( | typedef void * | dp_user2nicf_t, | |
| (struct dpeth *dep, struct iovec_dat *iovp, vir_bytes offset, int nic_addr, vir_bytes count) | ||||
| ) | 
| _PROTOTYPE | ( | typedef void * | dp_initf_t, | |
| (struct dpeth *dep) | ||||
| ) | 
| _PROTOTYPE | ( | static void | insb, | |
| (port_t port, void *buf, size_t size) | ||||
| ) | 
| _PROTOTYPE | ( | static void | get_userdata, | |
| (int user_proc, vir_bytes user_addr, vir_bytes count, void *loc_addr) | ||||
| ) | 
| _PROTOTYPE | ( | static void | reply, | |
| (dpeth_t *dep, int err, int may_block) | ||||
| ) | 
| _PROTOTYPE | ( | static void | dp_next_iovec, | |
| (iovec_dat_t *iovp) | ||||
| ) | 
| _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_user2nic, | |
| (dpeth_t *dep, iovec_dat_t *iovp, vir_bytes offset, int nic_addr, vir_bytes count) | ||||
| ) | 
| _PROTOTYPE | ( | static int | dp_pkt2user, | |
| (dpeth_t *dep, int page, int length) | ||||
| ) | 
| _PROTOTYPE | ( | static void | dp_getblock, | |
| (dpeth_t *dep, int page, size_t offset, size_t size, void *dst) | ||||
| ) | 
| _PROTOTYPE | ( | static void | dp_init, | |
| (dpeth_t *dep) | ||||
| ) | 
| int change_state | ( | device_ref | device, | |
| device_state_t | state | |||
| ) | 
Changes the network interface state.
| [in,out] | device | The network interface. | 
| [in] | state | The new state. | 
References NETIF_ACTIVE, and netif_device::state.
Referenced by netif_start_message(), and netif_stop_message().

| static void conf_hw | ( | dpeth_t * | dep | ) |  [static] | 
References DEF_EMPTY, DEM_DISABLED, DEM_ENABLED, el2_probe, ne_probe, and wdeth_probe.
| int do_init | ( | dpeth_t * | dep, | |
| int | mode | |||
| ) | 
Initializes and/or starts the network interface.
| [in,out] | dep | The network interface structure. | 
| [in] | mode | The state mode. | 
Referenced by netif_start_message().

| int do_probe | ( | dpeth_t * | dep | ) | 
Probes and initializes the network interface.
| [in,out] | dep | The network interface structure. | 
Referenced by netif_probe_message().

Sends a packet.
| [in,out] | dep | The network interface structure. | 
| [in] | packet | The packet t be sent. | 
| [in] | from_int | The value indicating whether the sending is initialized from the interrupt handler. | 
Referenced by dp_send(), and netif_send_message().

| void do_stop | ( | dpeth_t * | dep | ) | 
Stops the network interface.
| [in,out] | dep | The network interface structure. | 
Referenced by netif_stop_message().

| void dp8390_dump | ( | dpeth_t * | dep | ) | 
Prints out network interface information.
| [in] | dep | The network interface structure. | 
| void dp_check_ints | ( | dpeth_t * | dep, | |
| int | isr | |||
| ) | 
Processes the interrupt.
| [in,out] | dep | The network interface structure. | 
| [in] | isr | The interrupt status register. | 
Referenced by irq_handler().

| static void dp_getblock | ( | dpeth_t * | dep, | |
| int | page, | |||
| size_t | offset, | |||
| size_t | size, | |||
| void * | dst | |||
| ) |  [static] | 
| void dp_init | ( | dpeth_t * | dep | ) | 
References CR_DM_ABORT, CR_PS_P0, CR_PS_P1, CR_STA, CR_STP, DCR_8BYTES, DCR_BMS, DCR_BYTEWIDE, DCR_WORDWIDE, dpeth::de_flags, debug, DEF_BROAD, DEF_EMPTY, DEF_ENABLED, DEF_MULTI, DEF_PROMISC, DP_BNRY, DP_CNTR0, DP_CNTR1, DP_CNTR2, DP_CR, DP_CURR, DP_DCR, DP_IMR, DP_ISR, DP_MAR0, DP_MAR1, DP_MAR2, DP_MAR3, DP_MAR4, DP_MAR5, DP_MAR6, DP_MAR7, DP_PAR0, DP_PAR1, DP_PAR2, DP_PAR3, DP_PAR4, DP_PAR5, DP_PSTART, DP_PSTOP, DP_RBCR0, DP_RBCR1, DP_RCR, DP_TCR, IMR_CNTE, IMR_OVWE, IMR_PRXE, IMR_PTXE, IMR_RXEE, IMR_TXEE, inb_reg0, map_hw_buffer(), outb_reg0, outb_reg1, RCR_AB, RCR_AM, RCR_PRO, TCR_INTERNAL, and TCR_NORMAL.

| static void dp_next_iovec | ( | iovec_dat_t * | iovp | ) |  [static] | 
References get_userdata(), and IOVEC_NR.
Referenced by dp_nic2user(), dp_pio16_nic2user(), dp_pio16_user2nic(), dp_pio8_nic2user(), dp_pio8_user2nic(), and dp_user2nic().


| static void dp_nic2user | ( | dpeth_t * | dep, | |
| int | nic_addr, | |||
| iovec_dat_t * | iovp, | |||
| vir_bytes | offset, | |||
| vir_bytes | count | |||
| ) |  [static] | 
References dp_next_iovec(), iovec_dat::iod_iovec, iovec_dat::iod_proc_nr, iovec_t::iov_addr, iovec_t::iov_size, IOVEC_NR, OK, panic, and sys_vircopy.

| static void dp_pio16_getblock | ( | dpeth_t * | dep, | |
| int | page, | |||
| size_t | offset, | |||
| size_t | size, | |||
| void * | dst | |||
| ) |  [static] | 
| static void dp_pio16_nic2user | ( | dpeth_t * | dep, | |
| int | nic_addr, | |||
| iovec_dat_t * | iovp, | |||
| vir_bytes | offset, | |||
| vir_bytes | count | |||
| ) |  [static] | 
References CR_DM_RR, CR_PS_P0, CR_STA, do_vir_insw, DP_CR, dp_next_iovec(), DP_RBCR0, DP_RBCR1, DP_RSAR0, DP_RSAR1, inw, iovec_dat::iod_iovec, iovec_dat::iod_proc_nr, iovec_t::iov_addr, iovec_t::iov_size, IOVEC_NR, OK, outb_reg0, panic, and sys_vircopy.

| static void dp_pio16_user2nic | ( | dpeth_t * | dep, | |
| iovec_dat_t * | iovp, | |||
| vir_bytes | offset, | |||
| int | nic_addr, | |||
| vir_bytes | count | |||
| ) |  [static] | 
References CR_DM_RW, CR_PS_P0, CR_STA, do_vir_outsw, DP_CR, DP_ISR, dp_next_iovec(), DP_RBCR0, DP_RBCR1, DP_RSAR0, DP_RSAR1, inb_reg0, iovec_dat::iod_iovec, iovec_dat::iod_proc_nr, iovec_t::iov_addr, iovec_t::iov_size, IOVEC_NR, NO_NUM, OK, outb_reg0, outw, panic, and sys_vircopy.

| static void dp_pio8_getblock | ( | dpeth_t * | dep, | |
| int | page, | |||
| size_t | offset, | |||
| size_t | size, | |||
| void * | dst | |||
| ) |  [static] | 
| static void dp_pio8_nic2user | ( | dpeth_t * | dep, | |
| int | nic_addr, | |||
| iovec_dat_t * | iovp, | |||
| vir_bytes | offset, | |||
| vir_bytes | count | |||
| ) |  [static] | 
References CR_DM_RR, CR_PS_P0, CR_STA, do_vir_insb, DP_CR, dp_next_iovec(), DP_RBCR0, DP_RBCR1, DP_RSAR0, DP_RSAR1, iovec_dat::iod_iovec, iovec_dat::iod_proc_nr, iovec_t::iov_addr, iovec_t::iov_size, IOVEC_NR, and outb_reg0.

| static void dp_pio8_user2nic | ( | dpeth_t * | dep, | |
| iovec_dat_t * | iovp, | |||
| vir_bytes | offset, | |||
| int | nic_addr, | |||
| vir_bytes | count | |||
| ) |  [static] | 
References CR_DM_RW, CR_PS_P0, CR_STA, do_vir_outsb, DP_CR, DP_ISR, dp_next_iovec(), DP_RBCR0, DP_RBCR1, DP_RSAR0, DP_RSAR1, inb_reg0, iovec_dat::iod_iovec, iovec_dat::iod_proc_nr, iovec_t::iov_addr, iovec_t::iov_size, IOVEC_NR, NO_NUM, outb_reg0, and panic.

| static int dp_pkt2user | ( | dpeth_t * | dep, | |
| int | page, | |||
| int | length | |||
| ) |  [static] | 
References count, DEF_PACK_RECV, MAX_PACKETS, netif_packet_get_1(), netif_pq_release(), OK, packet_get_id(), packet_suffix(), and pq_add().
Referenced by dp_recv().


| static void dp_recv | ( | dpeth_t * | dep | ) |  [static] | 
References CR_EXTRA, CR_PS_P0, CR_PS_P1, DEF_ENABLED, DP_BNRY, DP_CR, DP_CURR, dp_pkt2user(), dp_rcvhdr::dr_next, dp_rcvhdr::dr_rbch, dp_rcvhdr::dr_rbcl, dp_rcvhdr::dr_status, ETH_MIN_PACK_SIZE, FALSE, inb_reg0, inb_reg1, OK, outb_reg0, RSR_FO, RSR_PRX, and TRUE.

| static void dp_reinit | ( | dpeth_t * | dep | ) |  [static] | 
| static void dp_reset | ( | dpeth_t * | dep | ) |  [static] | 
References CR_DM_ABORT, CR_STA, CR_STP, DEF_STOPPED, DP_CR, DP_ISR, DP_RBCR0, DP_RBCR1, DP_TCR, inb_reg0, ISR_RDC, ISR_RST, outb_reg0, TCR_1EXTERNAL, TCR_NORMAL, and TCR_OFST.
| static void dp_send | ( | dpeth_t * | dep | ) |  [static] | 
References do_pwrite(), netif_pq_release(), packet_get_id(), pq_detach(), and TRUE.

| static void dp_user2nic | ( | dpeth_t * | dep, | |
| iovec_dat_t * | iovp, | |||
| vir_bytes | offset, | |||
| int | nic_addr, | |||
| vir_bytes | count | |||
| ) |  [static] | 
References dp_next_iovec(), iovec_dat::iod_iovec, iovec_dat::iod_proc_nr, iovec_t::iov_addr, iovec_t::iov_size, IOVEC_NR, OK, panic, and sys_vircopy.

| static void get_userdata | ( | int | user_proc, | |
| vir_bytes | user_addr, | |||
| vir_bytes | count, | |||
| void * | loc_addr | |||
| ) |  [static] | 
References OK, panic, and sys_vircopy.
Referenced by dp_next_iovec().

| static void insb | ( | port_t | port, | |
| void * | buf, | |||
| size_t | size | |||
| ) |  [static] | 
| static void insw | ( | port_t | port, | |
| void * | buf, | |||
| size_t | size | |||
| ) |  [static] | 
| void irq_handler | ( | ipc_callid_t | iid, | |
| ipc_call_t * | call | |||
| ) | 
Handles the interrupt messages.
This is the interrupt handler callback function.
| [in] | iid | The interrupt message identifier. | 
| [in] | call | The interrupt message. | 
References dpeth::de_flags, dpeth::de_int_pending, dpeth::de_mode, DEF_ENABLED, DEM_ENABLED, dp_check_ints(), find_device(), IPC_GET_ISR, IRQ_GET_DEVICE, netif_globals::lock, netif_device::nil_phone, nil_received_msg(), packet_get_data(), packet_get_data_length(), packet_get_id(), dpeth::received_count, dpeth::received_queue, and netif_device::specific.
Referenced by netif_initialize().


| static void map_hw_buffer | ( | dpeth_t * | dep | ) |  [static] | 
| int ne_probe | ( | struct dpeth * | dep | ) | 
Probes a NE2000 or NE1000 network interface.
| [in] | dep | The network interface structure. | 
References CR_DM_ABORT, CR_STP, DCR_8BYTES, DCR_BMS, DCR_BYTEWIDE, DCR_WORDWIDE, DP_CR, DP_DCR, DP_ISR, DP_RCR, DP_TCR, inb_ne, inb_reg0, ISR_RST, milli_delay, NE1000_SIZE, NE1000_START, NE2000_SIZE, NE2000_START, NE_DP8390, ne_init(), NE_RESET, ne_stop(), outb_ne, outb_reg0, RCR_MON, TCR_NORMAL, test_16(), and test_8().

| int netif_get_addr_message | ( | device_id_t | device_id, | |
| measured_string_ref | address | |||
| ) | 
Returns the device local hardware address.
| [in] | device_id | The device identifier. | 
| [out] | address | The device local hardware address. | 
| int netif_get_device_stats | ( | device_id_t | device_id, | |
| device_stats_ref | stats | |||
| ) | 
Returns the device usage statistics.
| [in] | device_id | The device identifier. | 
| [out] | stats | The device usage statistics. | 
| int netif_initialize | ( | void | ) | 
Initializes the specific module.
| int netif_probe_message | ( | device_id_t | device_id, | |
| int | irq, | |||
| uintptr_t | io | |||
| ) | 
Probes the existence of the device.
| [in] | device_id | The device identifier. | 
| [in] | irq | The device interrupt number. | 
| [in] | io | The device input/output address. | 
| int netif_send_message | ( | device_id_t | device_id, | |
| packet_t | packet, | |||
| services_t | sender | |||
| ) | 
Sends the packet queue.
| [in] | device_id | The device identifier. | 
| [in] | packet | The packet queue. | 
| [in] | sender | The sending module service. | 
| int netif_specific_message | ( | ipc_callid_t | callid, | |
| ipc_call_t * | call, | |||
| ipc_call_t * | answer, | |||
| int * | answer_count | |||
| ) | 
Processes the netif driver specific message.
This function is called for uncommon messages received by the netif skeleton.
| [in] | callid | The message identifier. | 
| [in] | call | The message parameters. | 
| [out] | answer | The message answer parameters. | 
| [out] | answer_count | The last parameter for the actual answer in the answer parameter. | 
| int netif_start_message | ( | device_ref | device | ) | 
Starts the device.
| [in] | device | The device structure. | 
| int netif_stop_message | ( | device_ref | device | ) | 
Stops the device.
| [in] | device | The device structure. | 
| static void outsb | ( | port_t | port, | |
| void * | buf, | |||
| size_t | size | |||
| ) |  [static] | 
Reads a memory block byte by byte.
| [in] | port | The source address. | 
| [out] | buf | The destination buffer. | 
| [in] | size | The memory block size in bytes. | 
References outb.
| static void outsw | ( | port_t | port, | |
| void * | buf, | |||
| size_t | size | |||
| ) |  [static] | 
Reads a memory block word by word.
| [in] | port | The source address. | 
| [out] | buf | The destination buffer. | 
| [in] | size | The memory block size in bytes. | 
References outw.
Queues the outgoing packet.
References MAX_PACKETS, netif_pq_release(), dpeth::packet_count, packet_get_id(), dpeth::packet_queue, pq_add(), and pq_next().

| static void reply | ( | dpeth_t * | dep, | |
| int | err, | |||
| int | may_block | |||
| ) |  [static] | 
Referenced by icmp_echo(), icmp_process_echo_reply(), and main().

| irq_cmd_t dp8390_cmds[]  [static] | 
 {
  { .cmd = CMD_PIO_READ_8,
    .addr = NULL,
    .dstarg = 2
  },
  {
    .cmd = CMD_PREDICATE,
    .value = 1,
    .srcarg = 2
  },
  {
    .cmd = CMD_ACCEPT
  }
}
DP8390 kernel interrupt command sequence.
Referenced by netif_start_message().
| irq_code_t dp8390_code  [static] | 
 {
  sizeof(dp8390_cmds) / sizeof(irq_cmd_t),
  dp8390_cmds
}
DP8390 kernel interrupt code.
Referenced by netif_start_message().
Network interface module global data.
 1.6.1
 1.6.1