1/* 2 Copyright 1999, Be Incorporated. All Rights Reserved. 3 This file may be used under the terms of the Be Sample Code License. 4*/ 5/* 6 * etherpci_private.h 7 * Copyright (c) 1998 Be, Inc. All Rights Reserved 8 * 9 * Definitions private to ne2000 PCI ethernet driver 10 * 11 * Modification History (most recent first): 12 * 13 * 18 May 98 malyn new today 14 */ 15 16#ifndef _ETHERPCI_PRIVATE_H 17#define _ETHERPCI_PRIVATE_H 18 19#ifndef _KERNEL_EXPORT_H 20#include <KernelExport.h> 21#endif 22 23/* 24 * Wait this long before giving up on an ethernet transmit 25 */ 26#define ETHER_TRANSMIT_TIMEOUT ((bigtime_t)1000000) /* one second */ 27 28#define NIRQS 128 //x hmm... 29 30#define MAX_MULTI 14 31 32#define ETHER_BUF_START_NE2000 0x4000 33#define ETHER_BUF_SIZE_NE2000 0x4000 34 35#define ETHER_BUF_SIZE_MAX ETHER_BUF_SIZE_NE2000 36 37#define ETHER_MTU 1500 38#define ETHER_MIN_SIZE 60 39#define ETHER_MAX_SIZE 1514 40#define ETHER_IRQ2 0x10 41#define ETHER_IRQ3 0x20 42#define ETHER_IRQ4 0x40 43#define ETHER_IRQ5 0x80 44 45 46#define ECNTRL_RESET 0x01 47#define ECNTRL_ONBOARD 0x02 48#define ECNTRL_SAPROM 0x04 49 50#define EGACFR_NORM 0x49 51#define EGACFR_IRQOFF 0xc9 52 53#define EC_PAGE_SIZE 256 54#define EC_PAGE_SHIFT 8 55 56#define EN_CCMD 0x0 57 58#define EN0_STARTPG 0x01 59#define EN0_STOPPG 0x02 60#define EN0_BOUNDARY 0x03 61#define EN0_TPSR 0x04 62#define EN0_TCNTLO 0x05 63#define EN0_TCNTHI 0x06 64#define EN0_ISR 0x07 65#define EN0_RADDRLO 0x08 66#define EN0_RADDRHI 0x09 67#define EN0_RCNTLO 0x0a 68#define EN0_RCNTHI 0x0b 69 70#define NE_DATA 0x10 71#define NE_RESET 0x1f 72 73#define ISR_RECEIVE 0x01 74#define ISR_TRANSMIT 0x02 75#define ISR_RECEIVE_ERROR 0x04 76#define ISR_TRANSMIT_ERROR 0x08 77#define ISR_OVERWRITE 0x10 78#define ISR_COUNTER 0x20 79#define ISR_DMADONE 0x40 80#define ISR_RESET 0x80 81 82#define EN0_RXCR 0xc 83#define EN0_TXCR 0xd 84#define EN0_DCFG 0xe 85#define EN0_IMR 0xf 86 87#define EN0_CNTR0 0x0d 88#define EN0_CNTR1 0x0e 89#define EN0_CNTR2 0x0f 90 91#define DCFG_BM8 0x48 92#define DCFG_BM16 0x49 93 94#define EN1_PHYS 0x1 95#define EN1_CURPAG 0x7 96#define EN1_MULT 0x8 97 98#define ENRXCR_MON 0x20 99#define ENRXCR_MCST 0x08 100#define ENRXCR_BCST 0x04 101 102#define TXCR_LOOPBACK 0x02 103 104#define ENC_PAGE0 0x00 105#define ENC_STOP 0x01 106#define ENC_START 0x02 107#define ENC_TRANS 0x04 108#define ENC_DMAREAD 0x08 109#define ENC_DMAWRITE 0x10 110#define ENC_NODMA 0x20 111#define ENC_PAGE1 0x40 112 113 114#define RSR_INTACT 0x01 115 116#define TSR_ABORTED 0x08 117#define TSR_UNDERRUN 0x20 118#define TSR_HEARTBEAT 0x40 119 120#define ETHER_ADDR_LEN 6 121 122/* 123 * Maximum iterations to poll before assuming error 124 */ 125#define MAXWAIT 10000 126 127 128/* 129 * Swap the bytes in a short, but not on a little-endian machine 130 */ 131static const union { long l; char b[4]; } ENDIAN_TEST = { 1 }; 132#define LITTLE_ENDIAN ENDIAN_TEST.b[0] 133#define SWAPSHORT(x) (((x & 0xff) << 8) | ((x >> 8) & 0xff)) 134#define swapshort(x) (LITTLE_ENDIAN ? (x) : SWAPSHORT(x)) 135 136 137/* 138 * NS8390 ring header structure 139 */ 140typedef struct ring_header { 141 unsigned char status; 142 unsigned char next_packet; 143 unsigned short count; 144} ring_header; 145 146#endif 147