1/* smctr.h: SMC Token Ring driver header for Linux 2 * 3 * Authors: 4 * - Jay Schulist <jschlst@samba.org> 5 */ 6 7#ifndef __LINUX_SMCTR_H 8#define __LINUX_SMCTR_H 9 10#ifdef __KERNEL__ 11 12#define MAX_TX_QUEUE 10 13 14#define SMC_HEADER_SIZE 14 15 16#define SMC_PAGE_OFFSET(X) (((unsigned long)(X) - tp->ram_access) & tp->page_offset_mask) 17 18#define INIT 0x0D 19#define RQ_ATTCH 0x10 20#define RQ_STATE 0x0F 21#define RQ_ADDR 0x0E 22#define CHG_PARM 0x0C 23#define RSP 0x00 24#define TX_FORWARD 0x09 25 26#define AC_FC_DAT ((3<<13) | 1) 27#define DAT 0x07 28 29#define RPT_NEW_MON 0x25 30#define RPT_SUA_CHG 0x26 31#define RPT_ACTIVE_ERR 0x28 32#define RPT_NN_INCMP 0x27 33#define RPT_ERROR 0x29 34 35#define RQ_INIT 0x20 36#define RPT_ATTCH 0x24 37#define RPT_STATE 0x23 38#define RPT_ADDR 0x22 39 40#define POSITIVE_ACK 0x0001 41#define A_FRAME_WAS_FORWARDED 0x8888 42 43#define GROUP_ADDRESS 0x2B 44#define PHYSICAL_DROP 0x0B 45#define AUTHORIZED_ACCESS_PRIORITY 0x07 46#define AUTHORIZED_FUNCTION_CLASS 0x06 47#define FUNCTIONAL_ADDRESS 0x2C 48#define RING_STATION_STATUS 0x29 49#define TRANSMIT_STATUS_CODE 0x2A 50#define IBM_PASS_SOURCE_ADDR 0x01 51#define AC_FC_RPT_TX_FORWARD ((0<<13) | 0) 52#define AC_FC_RPT_STATE ((0<<13) | 0) 53#define AC_FC_RPT_ADDR ((0<<13) | 0) 54#define CORRELATOR 0x09 55 56#define POSITIVE_ACK 0x0001 /* */ 57#define E_MAC_DATA_INCOMPLETE 0x8001 /* not used */ 58#define E_VECTOR_LENGTH_ERROR 0x8002 /* */ 59#define E_UNRECOGNIZED_VECTOR_ID 0x8003 /* */ 60#define E_INAPPROPRIATE_SOURCE_CLASS 0x8004 /* */ 61#define E_SUB_VECTOR_LENGTH_ERROR 0x8005 /* */ 62#define E_TRANSMIT_FORWARD_INVALID 0x8006 /* def. by IBM */ 63#define E_MISSING_SUB_VECTOR 0x8007 /* */ 64#define E_SUB_VECTOR_UNKNOWN 0x8008 /* */ 65#define E_MAC_HEADER_TOO_LONG 0x8009 /* */ 66#define E_FUNCTION_DISABLED 0x800A /* not used */ 67 68#define A_FRAME_WAS_FORWARDED 0x8888 /* used by send_TX_FORWARD */ 69 70#define UPSTREAM_NEIGHBOR_ADDRESS 0x02 71#define LOCAL_RING_NUMBER 0x03 72#define ASSIGN_PHYSICAL_DROP 0x04 73#define ERROR_TIMER_VALUE 0x05 74#define AUTHORIZED_FUNCTION_CLASS 0x06 75#define AUTHORIZED_ACCESS_PRIORITY 0x07 76#define CORRELATOR 0x09 77#define PHYSICAL_DROP 0x0B 78#define RESPONSE_CODE 0x20 79#define ADDRESS_MODIFER 0x21 80#define PRODUCT_INSTANCE_ID 0x22 81#define RING_STATION_VERSION_NUMBER 0x23 82#define WRAP_DATA 0x26 83#define FRAME_FORWARD 0x27 84#define STATION_IDENTIFER 0x28 85#define RING_STATION_STATUS 0x29 86#define TRANSMIT_STATUS_CODE 0x2A 87#define GROUP_ADDRESS 0x2B 88#define FUNCTIONAL_ADDRESS 0x2C 89 90#define F_NO_SUB_VECTORS_FOUND 0x0000 91#define F_UPSTREAM_NEIGHBOR_ADDRESS 0x0001 92#define F_LOCAL_RING_NUMBER 0x0002 93#define F_ASSIGN_PHYSICAL_DROP 0x0004 94#define F_ERROR_TIMER_VALUE 0x0008 95#define F_AUTHORIZED_FUNCTION_CLASS 0x0010 96#define F_AUTHORIZED_ACCESS_PRIORITY 0x0020 97#define F_CORRELATOR 0x0040 98#define F_PHYSICAL_DROP 0x0080 99#define F_RESPONSE_CODE 0x0100 100#define F_PRODUCT_INSTANCE_ID 0x0200 101#define F_RING_STATION_VERSION_NUMBER 0x0400 102#define F_STATION_IDENTIFER 0x0800 103#define F_RING_STATION_STATUS 0x1000 104#define F_GROUP_ADDRESS 0x2000 105#define F_FUNCTIONAL_ADDRESS 0x4000 106#define F_FRAME_FORWARD 0x8000 107 108#define R_INIT 0x00 109#define R_RQ_ATTCH_STATE_ADDR 0x00 110#define R_CHG_PARM 0x00 111#define R_TX_FORWARD F_FRAME_FORWARD 112 113 114#define UPSTREAM_NEIGHBOR_ADDRESS 0x02 115#define ADDRESS_MODIFER 0x21 116#define RING_STATION_VERSION_NUMBER 0x23 117#define PRODUCT_INSTANCE_ID 0x22 118 119#define RPT_TX_FORWARD 0x2A 120 121#define AC_FC_INIT (3<<13) | 0 /* */ 122#define AC_FC_RQ_INIT ((3<<13) | 0) /* */ 123#define AC_FC_RQ_ATTCH (3<<13) | 0 /* DC = SC of rx frame */ 124#define AC_FC_RQ_STATE (3<<13) | 0 /* DC = SC of rx frame */ 125#define AC_FC_RQ_ADDR (3<<13) | 0 /* DC = SC of rx frame */ 126#define AC_FC_CHG_PARM (3<<13) | 0 /* */ 127#define AC_FC_RSP (0<<13) | 0 /* DC = SC of rx frame */ 128#define AC_FC_RPT_ATTCH (0<<13) | 0 129 130#define S_UPSTREAM_NEIGHBOR_ADDRESS 6 + 2 131#define S_LOCAL_RING_NUMBER 2 + 2 132#define S_ASSIGN_PHYSICAL_DROP 4 + 2 133#define S_ERROR_TIMER_VALUE 2 + 2 134#define S_AUTHORIZED_FUNCTION_CLASS 2 + 2 135#define S_AUTHORIZED_ACCESS_PRIORITY 2 + 2 136#define S_CORRELATOR 2 + 2 137#define S_PHYSICAL_DROP 4 + 2 138#define S_RESPONSE_CODE 4 + 2 139#define S_ADDRESS_MODIFER 2 + 2 140#define S_PRODUCT_INSTANCE_ID 18 + 2 141#define S_RING_STATION_VERSION_NUMBER 10 + 2 142#define S_STATION_IDENTIFER 6 + 2 143#define S_RING_STATION_STATUS 6 + 2 144#define S_GROUP_ADDRESS 4 + 2 145#define S_FUNCTIONAL_ADDRESS 4 + 2 146#define S_FRAME_FORWARD 252 + 2 147#define S_TRANSMIT_STATUS_CODE 2 + 2 148 149#define ISB_IMC_RES0 0x0000 /* */ 150#define ISB_IMC_MAC_TYPE_3 0x0001 /* MAC_ARC_INDICATE */ 151#define ISB_IMC_MAC_ERROR_COUNTERS 0x0002 /* */ 152#define ISB_IMC_RES1 0x0003 /* */ 153#define ISB_IMC_MAC_TYPE_2 0x0004 /* QUE_MAC_INDICATE */ 154#define ISB_IMC_TX_FRAME 0x0005 /* */ 155#define ISB_IMC_END_OF_TX_QUEUE 0x0006 /* */ 156#define ISB_IMC_NON_MAC_RX_RESOURCE 0x0007 /* */ 157#define ISB_IMC_MAC_RX_RESOURCE 0x0008 /* */ 158#define ISB_IMC_NON_MAC_RX_FRAME 0x0009 /* */ 159#define ISB_IMC_MAC_RX_FRAME 0x000A /* */ 160#define ISB_IMC_TRC_FIFO_STATUS 0x000B /* */ 161#define ISB_IMC_COMMAND_STATUS 0x000C /* */ 162#define ISB_IMC_MAC_TYPE_1 0x000D /* Self Removed */ 163#define ISB_IMC_TRC_INTRNL_TST_STATUS 0x000E /* */ 164#define ISB_IMC_RES2 0x000F /* */ 165 166#define NON_MAC_RX_RESOURCE_BW 0x10 /* shifted right 8 bits */ 167#define NON_MAC_RX_RESOURCE_FW 0x20 /* shifted right 8 bits */ 168#define NON_MAC_RX_RESOURCE_BE 0x40 /* shifted right 8 bits */ 169#define NON_MAC_RX_RESOURCE_FE 0x80 /* shifted right 8 bits */ 170#define RAW_NON_MAC_RX_RESOURCE_BW 0x1000 /* */ 171#define RAW_NON_MAC_RX_RESOURCE_FW 0x2000 /* */ 172#define RAW_NON_MAC_RX_RESOURCE_BE 0x4000 /* */ 173#define RAW_NON_MAC_RX_RESOURCE_FE 0x8000 /* */ 174 175#define MAC_RX_RESOURCE_BW 0x10 /* shifted right 8 bits */ 176#define MAC_RX_RESOURCE_FW 0x20 /* shifted right 8 bits */ 177#define MAC_RX_RESOURCE_BE 0x40 /* shifted right 8 bits */ 178#define MAC_RX_RESOURCE_FE 0x80 /* shifted right 8 bits */ 179#define RAW_MAC_RX_RESOURCE_BW 0x1000 /* */ 180#define RAW_MAC_RX_RESOURCE_FW 0x2000 /* */ 181#define RAW_MAC_RX_RESOURCE_BE 0x4000 /* */ 182#define RAW_MAC_RX_RESOURCE_FE 0x8000 /* */ 183 184#define TRC_FIFO_STATUS_TX_UNDERRUN 0x40 /* shifted right 8 bits */ 185#define TRC_FIFO_STATUS_RX_OVERRUN 0x80 /* shifted right 8 bits */ 186#define RAW_TRC_FIFO_STATUS_TX_UNDERRUN 0x4000 /* */ 187#define RAW_TRC_FIFO_STATUS_RX_OVERRUN 0x8000 /* */ 188 189#define CSR_CLRTINT 0x08 190 191#define MSB(X) ((__u8)((__u16) X >> 8)) 192#define LSB(X) ((__u8)((__u16) X & 0xff)) 193 194#define AC_FC_LOBE_MEDIA_TEST ((3<<13) | 0) 195#define S_WRAP_DATA 248 + 2 /* 500 + 2 */ 196#define WRAP_DATA 0x26 197#define LOBE_MEDIA_TEST 0x08 198 199/* Destination Class (dc) */ 200 201#define DC_MASK 0xF0 202#define DC_RS 0x00 203#define DC_CRS 0x40 204#define DC_RPS 0x50 205#define DC_REM 0x60 206 207/* Source Classes (sc) */ 208 209#define SC_MASK 0x0F 210#define SC_RS 0x00 211#define SC_CRS 0x04 212#define SC_RPS 0x05 213#define SC_REM 0x06 214 215#define PR 0x11 216#define PR_PAGE_MASK 0x0C000 217 218#define MICROCHANNEL 0x0008 219#define INTERFACE_CHIP 0x0010 220#define BOARD_16BIT 0x0040 221#define PAGED_RAM 0x0080 222#define WD8115TA (TOKEN_MEDIA | MICROCHANNEL | INTERFACE_CHIP | PAGED_RAM) 223#define WD8115T (TOKEN_MEDIA | INTERFACE_CHIP | BOARD_16BIT | PAGED_RAM) 224 225#define BRD_ID_8316 0x50 226 227#define r587_SER 0x001 228#define SER_DIN 0x80 229#define SER_DOUT 0x40 230#define SER_CLK 0x20 231#define SER_ECS 0x10 232#define SER_E806 0x08 233#define SER_PNP 0x04 234#define SER_BIO 0x02 235#define SER_16B 0x01 236 237#define r587_IDR 0x004 238#define IDR_IRQ_MASK 0x0F0 239#define IDR_DCS_MASK 0x007 240#define IDR_RWS 0x008 241 242 243#define r587_BIO 0x003 244#define BIO_ENB 0x080 245#define BIO_MASK 0x03F 246 247#define r587_PCR 0x005 248#define PCR_RAMS 0x040 249 250 251 252#define NUM_ADDR_BITS 8 253 254#define ISA_MAX_ADDRESS 0x00ffffff 255 256#define SMCTR_MAX_ADAPTERS 7 257 258#define MC_TABLE_ENTRIES 16 259 260#define MAXFRAGMENTS 32 261 262#define CHIP_REV_MASK 0x3000 263 264#define MAX_TX_QS 8 265#define NUM_TX_QS_USED 3 266 267#define MAX_RX_QS 2 268#define NUM_RX_QS_USED 2 269 270#define INTEL_DATA_FORMAT 0x4000 271#define INTEL_ADDRESS_POINTER_FORMAT 0x8000 272#define PAGE_POINTER(X) ((((unsigned long)(X) - tp->ram_access) & tp->page_offset_mask) + tp->ram_access) 273#define SWAP_WORDS(X) (((X & 0xFFFF) << 16) | (X >> 16)) 274 275#define INTERFACE_CHIP 0x0010 /* Soft Config Adapter */ 276#define ADVANCED_FEATURES 0x0020 /* Adv. netw. interface features */ 277#define BOARD_16BIT 0x0040 /* 16 bit capability */ 278#define PAGED_RAM 0x0080 /* Adapter has paged RAM */ 279 280#define PAGED_ROM 0x0100 /* Adapter has paged ROM */ 281 282#define RAM_SIZE_UNKNOWN 0x0000 /* Unknown RAM size */ 283#define RAM_SIZE_0K 0x0001 /* 0K RAM */ 284#define RAM_SIZE_8K 0x0002 /* 8k RAM */ 285#define RAM_SIZE_16K 0x0003 /* 16k RAM */ 286#define RAM_SIZE_32K 0x0004 /* 32k RAM */ 287#define RAM_SIZE_64K 0x0005 /* 64k RAM */ 288#define RAM_SIZE_RESERVED_6 0x0006 /* Reserved RAM size */ 289#define RAM_SIZE_RESERVED_7 0x0007 /* Reserved RAM size */ 290#define RAM_SIZE_MASK 0x0007 /* Isolates RAM Size */ 291 292#define TOKEN_MEDIA 0x0005 293 294#define BID_REG_0 0x00 295#define BID_REG_1 0x01 296#define BID_REG_2 0x02 297#define BID_REG_3 0x03 298#define BID_REG_4 0x04 299#define BID_REG_5 0x05 300#define BID_REG_6 0x06 301#define BID_REG_7 0x07 302#define BID_LAR_0 0x08 303#define BID_LAR_1 0x09 304#define BID_LAR_2 0x0A 305#define BID_LAR_3 0x0B 306#define BID_LAR_4 0x0C 307#define BID_LAR_5 0x0D 308 309#define BID_BOARD_ID_BYTE 0x0E 310#define BID_CHCKSM_BYTE 0x0F 311#define BID_LAR_OFFSET 0x08 312 313#define BID_MSZ_583_BIT 0x08 314#define BID_SIXTEEN_BIT_BIT 0x01 315 316#define BID_BOARD_REV_MASK 0x1E 317 318#define BID_MEDIA_TYPE_BIT 0x01 319#define BID_SOFT_CONFIG_BIT 0x20 320#define BID_RAM_SIZE_BIT 0x40 321#define BID_BUS_TYPE_BIT 0x80 322 323#define BID_CR 0x10 324 325#define BID_TXP 0x04 /* Transmit Packet Command */ 326 327#define BID_TCR_DIFF 0x0D /* Transmit Configuration Register */ 328 329#define BID_TCR_VAL 0x18 /* Value to Test 8390 or 690 */ 330#define BID_PS0 0x00 /* Register Page Select 0 */ 331#define BID_PS1 0x40 /* Register Page Select 1 */ 332#define BID_PS2 0x80 /* Register Page Select 2 */ 333#define BID_PS_MASK 0x3F /* For Masking Off Page Select Bits */ 334 335#define BID_EEPROM_0 0x08 336#define BID_EEPROM_1 0x09 337#define BID_EEPROM_2 0x0A 338#define BID_EEPROM_3 0x0B 339#define BID_EEPROM_4 0x0C 340#define BID_EEPROM_5 0x0D 341#define BID_EEPROM_6 0x0E 342#define BID_EEPROM_7 0x0F 343 344#define BID_OTHER_BIT 0x02 345#define BID_ICR_MASK 0x0C 346#define BID_EAR_MASK 0x0F 347#define BID_ENGR_PAGE 0x0A0 348#define BID_RLA 0x10 349#define BID_EA6 0x80 350#define BID_RECALL_DONE_MASK 0x10 351#define BID_BID_EEPROM_OVERRIDE 0xFFB0 352#define BID_EXTRA_EEPROM_OVERRIDE 0xFFD0 353#define BID_EEPROM_MEDIA_MASK 0x07 354#define BID_STARLAN_TYPE 0x00 355#define BID_ETHERNET_TYPE 0x01 356#define BID_TP_TYPE 0x02 357#define BID_EW_TYPE 0x03 358#define BID_TOKEN_RING_TYPE 0x04 359#define BID_UTP2_TYPE 0x05 360#define BID_EEPROM_IRQ_MASK 0x18 361#define BID_PRIMARY_IRQ 0x00 362#define BID_ALTERNATE_IRQ_1 0x08 363#define BID_ALTERNATE_IRQ_2 0x10 364#define BID_ALTERNATE_IRQ_3 0x18 365#define BID_EEPROM_RAM_SIZE_MASK 0xE0 366#define BID_EEPROM_RAM_SIZE_RES1 0x00 367#define BID_EEPROM_RAM_SIZE_RES2 0x20 368#define BID_EEPROM_RAM_SIZE_8K 0x40 369#define BID_EEPROM_RAM_SIZE_16K 0x60 370#define BID_EEPROM_RAM_SIZE_32K 0x80 371#define BID_EEPROM_RAM_SIZE_64K 0xA0 372#define BID_EEPROM_RAM_SIZE_RES3 0xC0 373#define BID_EEPROM_RAM_SIZE_RES4 0xE0 374#define BID_EEPROM_BUS_TYPE_MASK 0x07 375#define BID_EEPROM_BUS_TYPE_AT 0x00 376#define BID_EEPROM_BUS_TYPE_MCA 0x01 377#define BID_EEPROM_BUS_TYPE_EISA 0x02 378#define BID_EEPROM_BUS_TYPE_NEC 0x03 379#define BID_EEPROM_BUS_SIZE_MASK 0x18 380#define BID_EEPROM_BUS_SIZE_8BIT 0x00 381#define BID_EEPROM_BUS_SIZE_16BIT 0x08 382#define BID_EEPROM_BUS_SIZE_32BIT 0x10 383#define BID_EEPROM_BUS_SIZE_64BIT 0x18 384#define BID_EEPROM_BUS_MASTER 0x20 385#define BID_EEPROM_RAM_PAGING 0x40 386#define BID_EEPROM_ROM_PAGING 0x80 387#define BID_EEPROM_PAGING_MASK 0xC0 388#define BID_EEPROM_LOW_COST 0x08 389#define BID_EEPROM_IO_MAPPED 0x10 390#define BID_EEPROM_HMI 0x01 391#define BID_EEPROM_AUTO_MEDIA_DETECT 0x01 392#define BID_EEPROM_CHIP_REV_MASK 0x0C 393 394#define BID_EEPROM_LAN_ADDR 0x30 395 396#define BID_EEPROM_MEDIA_OPTION 0x54 397#define BID_EEPROM_MEDIA_UTP 0x01 398#define BID_EEPROM_4MB_RING 0x08 399#define BID_EEPROM_16MB_RING 0x10 400#define BID_EEPROM_MEDIA_STP 0x40 401 402#define BID_EEPROM_MISC_DATA 0x56 403#define BID_EEPROM_EARLY_TOKEN_RELEASE 0x02 404 405#define CNFG_ID_8003E 0x6fc0 406#define CNFG_ID_8003S 0x6fc1 407#define CNFG_ID_8003W 0x6fc2 408#define CNFG_ID_8115TRA 0x6ec6 409#define CNFG_ID_8013E 0x61C8 410#define CNFG_ID_8013W 0x61C9 411#define CNFG_ID_BISTRO03E 0xEFE5 412#define CNFG_ID_BISTRO13E 0xEFD5 413#define CNFG_ID_BISTRO13W 0xEFD4 414#define CNFG_MSR_583 0x0 415#define CNFG_ICR_583 0x1 416#define CNFG_IAR_583 0x2 417#define CNFG_BIO_583 0x3 418#define CNFG_EAR_583 0x3 419#define CNFG_IRR_583 0x4 420#define CNFG_LAAR_584 0x5 421#define CNFG_GP2 0x7 422#define CNFG_LAAR_MASK 0x1F 423#define CNFG_LAAR_ZWS 0x20 424#define CNFG_LAAR_L16E 0x40 425#define CNFG_ICR_IR2_584 0x04 426#define CNFG_ICR_MASK 0x08 427#define CNFG_ICR_MSZ 0x08 428#define CNFG_ICR_RLA 0x10 429#define CNFG_ICR_STO 0x80 430#define CNFG_IRR_IRQS 0x60 431#define CNFG_IRR_IEN 0x80 432#define CNFG_IRR_ZWS 0x01 433#define CNFG_GP2_BOOT_NIBBLE 0x0F 434#define CNFG_IRR_OUT2 0x04 435#define CNFG_IRR_OUT1 0x02 436 437#define CNFG_SIZE_8KB 8 438#define CNFG_SIZE_16KB 16 439#define CNFG_SIZE_32KB 32 440#define CNFG_SIZE_64KB 64 441#define CNFG_SIZE_128KB 128 442#define CNFG_SIZE_256KB 256 443#define ROM_DISABLE 0x0 444 445#define CNFG_SLOT_ENABLE_BIT 0x08 446 447#define CNFG_POS_CONTROL_REG 0x096 448#define CNFG_POS_REG0 0x100 449#define CNFG_POS_REG1 0x101 450#define CNFG_POS_REG2 0x102 451#define CNFG_POS_REG3 0x103 452#define CNFG_POS_REG4 0x104 453#define CNFG_POS_REG5 0x105 454 455#define CNFG_ADAPTER_TYPE_MASK 0x0e 456 457#define SLOT_16BIT 0x0008 458#define INTERFACE_5X3_CHIP 0x0000 /* 0000 = 583 or 593 chips */ 459#define NIC_690_BIT 0x0010 /* NIC is 690 */ 460#define ALTERNATE_IRQ_BIT 0x0020 /* Alternate IRQ is used */ 461#define INTERFACE_584_CHIP 0x0040 /* 0001 = 584 chip */ 462#define INTERFACE_594_CHIP 0x0080 /* 0010 = 594 chip */ 463#define INTERFACE_585_CHIP 0x0100 /* 0100 = 585/790 chip */ 464#define INTERFACE_CHIP_MASK 0x03C0 /* Isolates Intfc Chip Type */ 465 466#define BOARD_16BIT 0x0040 467#define NODE_ADDR_CKSUM 0xEE 468#define BRD_ID_8115T 0x04 469 470#define NIC_825_BIT 0x0400 /* TRC 83C825 NIC */ 471#define NIC_790_BIT 0x0800 /* NIC is 83C790 Ethernet */ 472 473#define CHIP_REV_MASK 0x3000 474 475#define HWR_CBUSY 0x02 476#define HWR_CA 0x01 477 478#define MAC_QUEUE 0 479#define NON_MAC_QUEUE 1 480#define BUG_QUEUE 2 /* NO RECEIVE QUEUE, ONLY TX */ 481 482#define NUM_MAC_TX_FCBS 8 483#define NUM_MAC_TX_BDBS NUM_MAC_TX_FCBS 484#define NUM_MAC_RX_FCBS 7 485#define NUM_MAC_RX_BDBS 8 486 487#define NUM_NON_MAC_TX_FCBS 6 488#define NUM_NON_MAC_TX_BDBS NUM_NON_MAC_TX_FCBS 489 490#define NUM_NON_MAC_RX_BDBS 0 /* CALCULATED DYNAMICALLY */ 491 492#define NUM_BUG_TX_FCBS 8 493#define NUM_BUG_TX_BDBS NUM_BUG_TX_FCBS 494 495#define MAC_TX_BUFFER_MEMORY 1024 496#define NON_MAC_TX_BUFFER_MEMORY (20 * 1024) 497#define BUG_TX_BUFFER_MEMORY (NUM_BUG_TX_FCBS * 32) 498 499#define RX_BUFFER_MEMORY 0 /* CALCULATED DYNAMICALLY */ 500#define RX_DATA_BUFFER_SIZE 256 501#define RX_BDB_SIZE_SHIFT 3 /* log2(RX_DATA_BUFFER_SIZE)-log2(sizeof(BDBlock)) */ 502#define RX_BDB_SIZE_MASK (sizeof(BDBlock) - 1) 503#define RX_DATA_BUFFER_SIZE_MASK (RX_DATA_BUFFER_SIZE-1) 504 505#define NUM_OF_INTERRUPTS 0x20 506 507#define NOT_TRANSMITING 0 508#define TRANSMITING 1 509 510#define TRC_INTERRUPT_ENABLE_MASK 0x7FF6 511 512#define UCODE_VERSION 0x58 513 514#define UCODE_SIZE_OFFSET 0x0000 /* WORD */ 515#define UCODE_CHECKSUM_OFFSET 0x0002 /* WORD */ 516#define UCODE_VERSION_OFFSET 0x0004 /* BYTE */ 517 518#define CS_RAM_SIZE 0X2000 519#define CS_RAM_CHECKSUM_OFFSET 0x1FFE /* WORD 1FFE(MSB)-1FFF(LSB)*/ 520#define CS_RAM_VERSION_OFFSET 0x1FFC /* WORD 1FFC(MSB)-1FFD(LSB)*/ 521 522#define MISC_DATA_SIZE 128 523#define NUM_OF_ACBS 1 524 525#define ACB_COMMAND_NOT_DONE 0x0000 /* Init, command not done */ 526#define ACB_COMMAND_DONE 0x8000 /* TRC says command done */ 527#define ACB_COMMAND_STATUS_MASK 0x00FF /* low byte is status */ 528#define ACB_COMMAND_SUCCESSFUL 0x0000 /* means cmd was successful */ 529#define ACB_NOT_CHAIN_END 0x0000 /* tell TRC more CBs in chain */ 530#define ACB_CHAIN_END 0x8000 /* tell TRC last CB in chain */ 531#define ACB_COMMAND_NO_INTERRUPT 0x0000 /* tell TRC no INT after CB */ 532#define ACB_COMMAND_INTERRUPT 0x2000 /* tell TRC to INT after CB */ 533#define ACB_SUB_CMD_NOP 0x0000 534#define ACB_CMD_HIC_NOP 0x0080 535#define ACB_CMD_MCT_NOP 0x0000 536#define ACB_CMD_MCT_TEST 0x0001 537#define ACB_CMD_HIC_TEST 0x0081 538#define ACB_CMD_INSERT 0x0002 539#define ACB_CMD_REMOVE 0x0003 540#define ACB_CMD_MCT_WRITE_VALUE 0x0004 541#define ACB_CMD_HIC_WRITE_VALUE 0x0084 542#define ACB_CMD_MCT_READ_VALUE 0x0005 543#define ACB_CMD_HIC_READ_VALUE 0x0085 544#define ACB_CMD_INIT_TX_RX 0x0086 545#define ACB_CMD_INIT_TRC_TIMERS 0x0006 546#define ACB_CMD_READ_TRC_STATUS 0x0007 547#define ACB_CMD_CHANGE_JOIN_STATE 0x0008 548#define ACB_CMD_RESERVED_9 0x0009 549#define ACB_CMD_RESERVED_A 0x000A 550#define ACB_CMD_RESERVED_B 0x000B 551#define ACB_CMD_RESERVED_C 0x000C 552#define ACB_CMD_RESERVED_D 0x000D 553#define ACB_CMD_RESERVED_E 0x000E 554#define ACB_CMD_RESERVED_F 0x000F 555 556#define TRC_MAC_REGISTERS_TEST 0x0000 557#define TRC_INTERNAL_LOOPBACK 0x0001 558#define TRC_TRI_LOOPBACK 0x0002 559#define TRC_INTERNAL_ROM_TEST 0x0003 560#define TRC_LOBE_MEDIA_TEST 0x0004 561#define TRC_ANALOG_TEST 0x0005 562#define TRC_HOST_INTERFACE_REG_TEST 0x0003 563 564#define TEST_DMA_1 0x0000 565#define TEST_DMA_2 0x0001 566#define TEST_MCT_ROM 0x0002 567#define HIC_INTERNAL_DIAG 0x0003 568 569#define ABORT_TRANSMIT_PRIORITY_0 0x0001 570#define ABORT_TRANSMIT_PRIORITY_1 0x0002 571#define ABORT_TRANSMIT_PRIORITY_2 0x0004 572#define ABORT_TRANSMIT_PRIORITY_3 0x0008 573#define ABORT_TRANSMIT_PRIORITY_4 0x0010 574#define ABORT_TRANSMIT_PRIORITY_5 0x0020 575#define ABORT_TRANSMIT_PRIORITY_6 0x0040 576#define ABORT_TRANSMIT_PRIORITY_7 0x0080 577 578#define TX_PENDING_PRIORITY_0 0x0001 579#define TX_PENDING_PRIORITY_1 0x0002 580#define TX_PENDING_PRIORITY_2 0x0004 581#define TX_PENDING_PRIORITY_3 0x0008 582#define TX_PENDING_PRIORITY_4 0x0010 583#define TX_PENDING_PRIORITY_5 0x0020 584#define TX_PENDING_PRIORITY_6 0x0040 585#define TX_PENDING_PRIORITY_7 0x0080 586 587#define FCB_FRAME_LENGTH 0x100 588#define FCB_COMMAND_DONE 0x8000 /* FCB Word 0 */ 589#define FCB_NOT_CHAIN_END 0x0000 /* FCB Word 1 */ 590#define FCB_CHAIN_END 0x8000 591#define FCB_NO_WARNING 0x0000 592#define FCB_WARNING 0x4000 593#define FCB_INTERRUPT_DISABLE 0x0000 594#define FCB_INTERRUPT_ENABLE 0x2000 595 596#define FCB_ENABLE_IMA 0x0008 597#define FCB_ENABLE_TES 0x0004 /* Guarantee Tx before Int */ 598#define FCB_ENABLE_TFS 0x0002 /* Post Tx Frame Status */ 599#define FCB_ENABLE_NTC 0x0001 /* No Tx CRC */ 600 601#define FCB_TX_STATUS_CR2 0x0004 602#define FCB_TX_STATUS_AR2 0x0008 603#define FCB_TX_STATUS_CR1 0x0040 604#define FCB_TX_STATUS_AR1 0x0080 605#define FCB_TX_AC_BITS (FCB_TX_STATUS_AR1+FCB_TX_STATUS_AR2+FCB_TX_STATUS_CR1+FCB_TX_STATUS_CR2) 606#define FCB_TX_STATUS_E 0x0100 607 608#define FCB_RX_STATUS_ANY_ERROR 0x0001 609#define FCB_RX_STATUS_FCS_ERROR 0x0002 610 611#define FCB_RX_STATUS_IA_MATCHED 0x0400 612#define FCB_RX_STATUS_IGA_BSGA_MATCHED 0x0500 613#define FCB_RX_STATUS_FA_MATCHED 0x0600 614#define FCB_RX_STATUS_BA_MATCHED 0x0700 615#define FCB_RX_STATUS_DA_MATCHED 0x0400 616#define FCB_RX_STATUS_SOURCE_ROUTING 0x0800 617 618#define BDB_BUFFER_SIZE 0x100 619#define BDB_NOT_CHAIN_END 0x0000 620#define BDB_CHAIN_END 0x8000 621#define BDB_NO_WARNING 0x0000 622#define BDB_WARNING 0x4000 623 624#define ERROR_COUNTERS_CHANGED 0x0001 625#define TI_NDIS_RING_STATUS_CHANGED 0x0002 626#define UNA_CHANGED 0x0004 627#define READY_TO_SEND_RQ_INIT 0x0008 628 629#define SCGB_ADDRESS_POINTER_FORMAT INTEL_ADDRESS_POINTER_FORMAT 630#define SCGB_DATA_FORMAT INTEL_DATA_FORMAT 631#define SCGB_MULTI_WORD_CONTROL 0 632#define SCGB_BURST_LENGTH 0x000E /* DMA Burst Length */ 633 634#define SCGB_CONFIG (INTEL_ADDRESS_POINTER_FORMAT+INTEL_DATA_FORMAT+SCGB_BURST_LENGTH) 635 636#define ISCP_BLOCK_SIZE 0x0A 637#define RAM_SIZE 0x10000 638#define INIT_SYS_CONFIG_PTR_OFFSET (RAM_SIZE-ISCP_BLOCK_SIZE) 639#define SCGP_BLOCK_OFFSET 0 640 641#define SCLB_NOT_VALID 0x0000 /* Initially, SCLB not valid */ 642#define SCLB_VALID 0x8000 /* Host tells TRC SCLB valid */ 643#define SCLB_PROCESSED 0x0000 /* TRC says SCLB processed */ 644#define SCLB_RESUME_CONTROL_NOT_VALID 0x0000 /* Initially, RC not valid */ 645#define SCLB_RESUME_CONTROL_VALID 0x4000 /* Host tells TRC RC valid */ 646#define SCLB_IACK_CODE_NOT_VALID 0x0000 /* Initially, IACK not valid */ 647#define SCLB_IACK_CODE_VALID 0x2000 /* Host tells TRC IACK valid */ 648#define SCLB_CMD_NOP 0x0000 649#define SCLB_CMD_REMOVE 0x0001 650#define SCLB_CMD_SUSPEND_ACB_CHAIN 0x0002 651#define SCLB_CMD_SET_INTERRUPT_MASK 0x0003 652#define SCLB_CMD_CLEAR_INTERRUPT_MASK 0x0004 653#define SCLB_CMD_RESERVED_5 0x0005 654#define SCLB_CMD_RESERVED_6 0x0006 655#define SCLB_CMD_RESERVED_7 0x0007 656#define SCLB_CMD_RESERVED_8 0x0008 657#define SCLB_CMD_RESERVED_9 0x0009 658#define SCLB_CMD_RESERVED_A 0x000A 659#define SCLB_CMD_RESERVED_B 0x000B 660#define SCLB_CMD_RESERVED_C 0x000C 661#define SCLB_CMD_RESERVED_D 0x000D 662#define SCLB_CMD_RESERVED_E 0x000E 663#define SCLB_CMD_RESERVED_F 0x000F 664 665#define SCLB_RC_ACB 0x0001 /* Action Command Block Chain */ 666#define SCLB_RC_RES0 0x0002 /* Always Zero */ 667#define SCLB_RC_RES1 0x0004 /* Always Zero */ 668#define SCLB_RC_RES2 0x0008 /* Always Zero */ 669#define SCLB_RC_RX_MAC_FCB 0x0010 /* RX_MAC_FCB Chain */ 670#define SCLB_RC_RX_MAC_BDB 0x0020 /* RX_MAC_BDB Chain */ 671#define SCLB_RC_RX_NON_MAC_FCB 0x0040 /* RX_NON_MAC_FCB Chain */ 672#define SCLB_RC_RX_NON_MAC_BDB 0x0080 /* RX_NON_MAC_BDB Chain */ 673#define SCLB_RC_TFCB0 0x0100 /* TX Priority 0 FCB Chain */ 674#define SCLB_RC_TFCB1 0x0200 /* TX Priority 1 FCB Chain */ 675#define SCLB_RC_TFCB2 0x0400 /* TX Priority 2 FCB Chain */ 676#define SCLB_RC_TFCB3 0x0800 /* TX Priority 3 FCB Chain */ 677#define SCLB_RC_TFCB4 0x1000 /* TX Priority 4 FCB Chain */ 678#define SCLB_RC_TFCB5 0x2000 /* TX Priority 5 FCB Chain */ 679#define SCLB_RC_TFCB6 0x4000 /* TX Priority 6 FCB Chain */ 680#define SCLB_RC_TFCB7 0x8000 /* TX Priority 7 FCB Chain */ 681 682#define SCLB_IMC_RES0 0x0001 /* */ 683#define SCLB_IMC_MAC_TYPE_3 0x0002 /* MAC_ARC_INDICATE */ 684#define SCLB_IMC_MAC_ERROR_COUNTERS 0x0004 /* */ 685#define SCLB_IMC_RES1 0x0008 /* */ 686#define SCLB_IMC_MAC_TYPE_2 0x0010 /* QUE_MAC_INDICATE */ 687#define SCLB_IMC_TX_FRAME 0x0020 /* */ 688#define SCLB_IMC_END_OF_TX_QUEUE 0x0040 /* */ 689#define SCLB_IMC_NON_MAC_RX_RESOURCE 0x0080 /* */ 690#define SCLB_IMC_MAC_RX_RESOURCE 0x0100 /* */ 691#define SCLB_IMC_NON_MAC_RX_FRAME 0x0200 /* */ 692#define SCLB_IMC_MAC_RX_FRAME 0x0400 /* */ 693#define SCLB_IMC_TRC_FIFO_STATUS 0x0800 /* */ 694#define SCLB_IMC_COMMAND_STATUS 0x1000 /* */ 695#define SCLB_IMC_MAC_TYPE_1 0x2000 /* Self Removed */ 696#define SCLB_IMC_TRC_INTRNL_TST_STATUS 0x4000 /* */ 697#define SCLB_IMC_RES2 0x8000 /* */ 698 699#define DMA_TRIGGER 0x0004 700#define FREQ_16MB_BIT 0x0010 701#define THDREN 0x0020 702#define CFG0_RSV1 0x0040 703#define CFG0_RSV2 0x0080 704#define ETREN 0x0100 705#define RX_OWN_BIT 0x0200 706#define RXATMAC 0x0400 707#define PROMISCUOUS_BIT 0x0800 708#define USETPT 0x1000 709#define SAVBAD_BIT 0x2000 710#define ONEQUE 0x4000 711#define NO_AUTOREMOVE 0x8000 712 713#define RX_FCB_AREA_8316 0x00000000 714#define RX_BUFF_AREA_8316 0x00000000 715 716#define TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access) 717#define RX_FCB_TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access + RX_FCB_AREA_8316) 718#define RX_BUFF_TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access + RX_BUFF_AREA_8316) 719 720// Offset 0: MSR - Memory Select Register 721// 722#define r587_MSR 0x000 // Register Offset 723//#define MSR_RST 0x080 // LAN Controller Reset 724#define MSR_MENB 0x040 // Shared Memory Enable 725#define MSR_RA18 0x020 // Ram Address bit 18 (583, 584, 587) 726#define MSR_RA17 0x010 // Ram Address bit 17 (583, 584, 585/790) 727#define MSR_RA16 0x008 // Ram Address bit 16 (583, 584, 585/790) 728#define MSR_RA15 0x004 // Ram Address bit 15 (583, 584, 585/790) 729#define MSR_RA14 0x002 // Ram Address bit 14 (583, 584, 585/790) 730#define MSR_RA13 0x001 // Ram Address bit 13 (583, 584, 585/790) 731 732#define MSR_MASK 0x03F // Mask for Address bits RA18-RA13 (583, 584, 587) 733 734#define MSR 0x00 735#define IRR 0x04 736#define HWR 0x04 737#define LAAR 0x05 738#define IMCCR 0x05 739#define LAR0 0x08 740#define BDID 0x0E // Adapter ID byte register offset 741#define CSR 0x10 742#define PR 0x11 743 744#define MSR_RST 0x80 745#define MSR_MEMB 0x40 746#define MSR_0WS 0x20 747 748#define FORCED_16BIT_MODE 0x0002 749 750#define INTERFRAME_SPACING_16 0x0003 /* 6 bytes */ 751#define INTERFRAME_SPACING_4 0x0001 /* 2 bytes */ 752#define MULTICAST_ADDRESS_BIT 0x0010 753#define NON_SRC_ROUTING_BIT 0x0020 754 755#define LOOPING_MODE_MASK 0x0007 756 757/* 758 * Decode firmware defines. 759 */ 760#define SWAP_BYTES(X) ((X & 0xff) << 8) | (X >> 8) 761#define WEIGHT_OFFSET 5 762#define TREE_SIZE_OFFSET 9 763#define TREE_OFFSET 11 764 765/* The Huffman Encoding Tree is constructed of these nodes. */ 766typedef struct { 767 __u8 llink; /* Short version of above node. */ 768 __u8 tag; 769 __u8 info; /* This node is used on decodes. */ 770 __u8 rlink; 771} DECODE_TREE_NODE; 772 773#define ROOT 0 /* Branch value. */ 774#define LEAF 0 /* Tag field value. */ 775#define BRANCH 1 /* Tag field value. */ 776 777/* 778 * Multicast Table Structure 779 */ 780typedef struct { 781 __u8 address[6]; 782 __u8 instance_count; 783} McTable; 784 785/* 786 * Fragment Descriptor Definition 787 */ 788typedef struct { 789 __u8 *fragment_ptr; 790 __u32 fragment_length; 791} FragmentStructure; 792 793/* 794 * Data Buffer Structure Definition 795 */ 796typedef struct { 797 __u32 fragment_count; 798 FragmentStructure fragment_list[MAXFRAGMENTS]; 799} DataBufferStructure; 800 801#pragma pack(1) 802typedef struct { 803 __u8 IType; 804 __u8 ISubtype; 805} Interrupt_Status_Word; 806 807#pragma pack(1) 808typedef struct BDBlockType { 809 __u16 info; /* 02 */ 810 __u32 trc_next_ptr; /* 06 */ 811 __u32 trc_data_block_ptr; /* 10 */ 812 __u16 buffer_length; /* 12 */ 813 814 __u16 *data_block_ptr; /* 16 */ 815 struct BDBlockType *next_ptr; /* 20 */ 816 struct BDBlockType *back_ptr; /* 24 */ 817 __u8 filler[8]; /* 32 */ 818} BDBlock; 819 820#pragma pack(1) 821typedef struct FCBlockType { 822 __u16 frame_status; /* 02 */ 823 __u16 info; /* 04 */ 824 __u32 trc_next_ptr; /* 08 */ 825 __u32 trc_bdb_ptr; /* 12 */ 826 __u16 frame_length; /* 14 */ 827 828 BDBlock *bdb_ptr; /* 18 */ 829 struct FCBlockType *next_ptr; /* 22 */ 830 struct FCBlockType *back_ptr; /* 26 */ 831 __u16 memory_alloc; /* 28 */ 832 __u8 filler[4]; /* 32 */ 833 834} FCBlock; 835 836#pragma pack(1) 837typedef struct SBlockType{ 838 __u8 Internal_Error_Count; 839 __u8 Line_Error_Count; 840 __u8 AC_Error_Count; 841 __u8 Burst_Error_Count; 842 __u8 RESERVED_COUNTER_0; 843 __u8 AD_TRANS_Count; 844 __u8 RCV_Congestion_Count; 845 __u8 Lost_FR_Error_Count; 846 __u8 FREQ_Error_Count; 847 __u8 FR_Copied_Error_Count; 848 __u8 RESERVED_COUNTER_1; 849 __u8 Token_Error_Count; 850 851 __u16 TI_NDIS_Ring_Status; 852 __u16 BCN_Type; 853 __u16 Error_Code; 854 __u16 SA_of_Last_AMP_SMP[3]; 855 __u16 UNA[3]; 856 __u16 Ucode_Version_Number; 857 __u16 Status_CHG_Indicate; 858 __u16 RESERVED_STATUS_0; 859} SBlock; 860 861#pragma pack(1) 862typedef struct ACBlockType { 863 __u16 cmd_done_status; /* 02 */ 864 __u16 cmd_info; /* 04 */ 865 __u32 trc_next_ptr; /* 08 */ 866 __u16 cmd; /* 10 */ 867 __u16 subcmd; /* 12 */ 868 __u16 data_offset_lo; /* 14 */ 869 __u16 data_offset_hi; /* 16 */ 870 871 struct ACBlockType *next_ptr; /* 20 */ 872 873 __u8 filler[12]; /* 32 */ 874} ACBlock; 875 876#define NUM_OF_INTERRUPTS 0x20 877 878#pragma pack(1) 879typedef struct { 880 Interrupt_Status_Word IStatus[NUM_OF_INTERRUPTS]; 881} ISBlock; 882 883#pragma pack(1) 884typedef struct { 885 __u16 valid_command; /* 02 */ 886 __u16 iack_code; /* 04 */ 887 __u16 resume_control; /* 06 */ 888 __u16 int_mask_control; /* 08 */ 889 __u16 int_mask_state; /* 10 */ 890 891 __u8 filler[6]; /* 16 */ 892} SCLBlock; 893 894#pragma pack(1) 895typedef struct 896{ 897 __u16 config; /* 02 */ 898 __u32 trc_sclb_ptr; /* 06 */ 899 __u32 trc_acb_ptr; /* 10 */ 900 __u32 trc_isb_ptr; /* 14 */ 901 __u16 isbsiz; /* 16 */ 902 903 SCLBlock *sclb_ptr; /* 20 */ 904 ACBlock *acb_ptr; /* 24 */ 905 ISBlock *isb_ptr; /* 28 */ 906 907 __u16 Non_Mac_Rx_Bdbs; /* 30 DEBUG */ 908 __u8 filler[2]; /* 32 */ 909 910} SCGBlock; 911 912#pragma pack(1) 913typedef struct 914{ 915 __u32 trc_scgb_ptr; 916 SCGBlock *scgb_ptr; 917} ISCPBlock; 918#pragma pack() 919 920typedef struct net_local { 921 ISCPBlock *iscpb_ptr; 922 SCGBlock *scgb_ptr; 923 SCLBlock *sclb_ptr; 924 ISBlock *isb_ptr; 925 926 ACBlock *acb_head; 927 ACBlock *acb_curr; 928 ACBlock *acb_next; 929 930 __u8 adapter_name[12]; 931 932 __u16 num_rx_bdbs [NUM_RX_QS_USED]; 933 __u16 num_rx_fcbs [NUM_RX_QS_USED]; 934 935 __u16 num_tx_bdbs [NUM_TX_QS_USED]; 936 __u16 num_tx_fcbs [NUM_TX_QS_USED]; 937 938 __u16 num_of_tx_buffs; 939 940 __u16 tx_buff_size [NUM_TX_QS_USED]; 941 __u16 tx_buff_used [NUM_TX_QS_USED]; 942 __u16 tx_queue_status [NUM_TX_QS_USED]; 943 944 FCBlock *tx_fcb_head[NUM_TX_QS_USED]; 945 FCBlock *tx_fcb_curr[NUM_TX_QS_USED]; 946 FCBlock *tx_fcb_end[NUM_TX_QS_USED]; 947 BDBlock *tx_bdb_head[NUM_TX_QS_USED]; 948 __u16 *tx_buff_head[NUM_TX_QS_USED]; 949 __u16 *tx_buff_end[NUM_TX_QS_USED]; 950 __u16 *tx_buff_curr[NUM_TX_QS_USED]; 951 __u16 num_tx_fcbs_used[NUM_TX_QS_USED]; 952 953 FCBlock *rx_fcb_head[NUM_RX_QS_USED]; 954 FCBlock *rx_fcb_curr[NUM_RX_QS_USED]; 955 BDBlock *rx_bdb_head[NUM_RX_QS_USED]; 956 BDBlock *rx_bdb_curr[NUM_RX_QS_USED]; 957 BDBlock *rx_bdb_end[NUM_RX_QS_USED]; 958 __u16 *rx_buff_head[NUM_RX_QS_USED]; 959 __u16 *rx_buff_end[NUM_RX_QS_USED]; 960 961 __u32 *ptr_local_ring_num; 962 963 __u32 sh_mem_used; 964 965 __u16 page_offset_mask; 966 967 __u16 authorized_function_classes; 968 __u16 authorized_access_priority; 969 970 __u16 num_acbs; 971 __u16 num_acbs_used; 972 __u16 acb_pending; 973 974 __u16 current_isb_index; 975 976 __u8 monitor_state; 977 __u8 monitor_state_ready; 978 __u16 ring_status; 979 __u8 ring_status_flags; 980 __u8 current_ring_status; 981 __u8 state; 982 983 __u8 join_state; 984 985 __u8 slot_num; 986 __u16 pos_id; 987 988 __u32 *ptr_una; 989 __u32 *ptr_bcn_type; 990 __u32 *ptr_tx_fifo_underruns; 991 __u32 *ptr_rx_fifo_underruns; 992 __u32 *ptr_rx_fifo_overruns; 993 __u32 *ptr_tx_fifo_overruns; 994 __u32 *ptr_tx_fcb_overruns; 995 __u32 *ptr_rx_fcb_overruns; 996 __u32 *ptr_tx_bdb_overruns; 997 __u32 *ptr_rx_bdb_overruns; 998 999 __u16 receive_queue_number; 1000 1001 __u8 rx_fifo_overrun_count; 1002 __u8 tx_fifo_overrun_count; 1003 1004 __u16 adapter_flags; 1005 __u16 adapter_flags1; 1006 __u16 *misc_command_data; 1007 __u16 max_packet_size; 1008 1009 __u16 config_word0; 1010 __u16 config_word1; 1011 1012 __u8 trc_mask; 1013 1014 __u16 source_ring_number; 1015 __u16 target_ring_number; 1016 1017 __u16 microcode_version; 1018 1019 __u16 bic_type; 1020 __u16 nic_type; 1021 __u16 board_id; 1022 1023 __u16 rom_size; 1024 __u32 rom_base; 1025 __u16 ram_size; 1026 __u16 ram_usable; 1027 __u32 ram_base; 1028 __u32 ram_access; 1029 1030 __u16 extra_info; 1031 __u16 mode_bits; 1032 __u16 media_menu; 1033 __u16 media_type; 1034 __u16 adapter_bus; 1035 1036 __u16 status; 1037 __u16 receive_mask; 1038 1039 __u16 group_address_0; 1040 __u16 group_address[2]; 1041 __u16 functional_address_0; 1042 __u16 functional_address[2]; 1043 __u16 bitwise_group_address[2]; 1044 1045 const __u8 *ptr_ucode; 1046 1047 __u8 cleanup; 1048 1049 struct sk_buff_head SendSkbQueue; 1050 __u16 QueueSkb; 1051 1052 struct tr_statistics MacStat; /* MAC statistics structure */ 1053 1054 spinlock_t lock; 1055} NET_LOCAL; 1056 1057/************************************ 1058 * SNMP-ON-BOARD Agent Link Structure 1059 ************************************/ 1060 1061typedef struct { 1062 __u8 LnkSigStr[12]; /* signature string "SmcLinkTable" */ 1063 __u8 LnkDrvTyp; /* 1=Redbox ODI, 2=ODI DOS, 3=ODI OS/2, 4=NDIS DOS */ 1064 __u8 LnkFlg; /* 0 if no agent linked, 1 if agent linked */ 1065 void *LnkNfo; /* routine which returns pointer to NIC info */ 1066 void *LnkAgtRcv; /* pointer to agent receive trap entry */ 1067 void *LnkAgtXmt; /* pointer to agent transmit trap 1068entry */ 1069void *LnkGet; /* pointer to NIC receive data 1070copy routine */ 1071 void *LnkSnd; /* pointer to NIC send routine 1072*/ 1073 void *LnkRst; /* pointer to NIC driver reset 1074routine */ 1075 void *LnkMib; /* pointer to MIB data base */ 1076 void *LnkMibAct; /* pointer to MIB action routine list */ 1077 __u16 LnkCntOffset; /* offset to error counters */ 1078 __u16 LnkCntNum; /* number of error counters */ 1079 __u16 LnkCntSize; /* size of error counters i.e. 32 = 32 bits */ 1080 void *LnkISR; /* pointer to interrupt vector */ 1081 __u8 LnkFrmTyp; /* 1=Ethernet, 2=Token Ring */ 1082 __u8 LnkDrvVer1 ; /* driver major version */ 1083 __u8 LnkDrvVer2 ; /* driver minor version */ 1084} AgentLink; 1085 1086/* 1087 * Definitions for pcm_card_flags(bit_mapped) 1088 */ 1089#define REG_COMPLETE 0x0001 1090#define INSERTED 0x0002 1091#define PCC_INSERTED 0x0004 /* 1=currently inserted, 0=cur removed */ 1092 1093/* 1094 * Adapter RAM test patterns 1095 */ 1096#define RAM_PATTERN_1 0x55AA 1097#define RAM_PATTERN_2 0x9249 1098#define RAM_PATTERN_3 0xDB6D 1099 1100/* 1101 * definitions for RAM test 1102 */ 1103#define ROM_SIGNATURE 0xAA55 1104#define MIN_ROM_SIZE 0x2000 1105 1106/* 1107 * Return Codes 1108 */ 1109#define SUCCESS 0x0000 1110#define ADAPTER_AND_CONFIG 0x0001 1111#define ADAPTER_NO_CONFIG 0x0002 1112#define NOT_MY_INTERRUPT 0x0003 1113#define FRAME_REJECTED 0x0004 1114#define EVENTS_DISABLED 0x0005 1115#define OUT_OF_RESOURCES 0x0006 1116#define INVALID_PARAMETER 0x0007 1117#define INVALID_FUNCTION 0x0008 1118#define INITIALIZE_FAILED 0x0009 1119#define CLOSE_FAILED 0x000A 1120#define MAX_COLLISIONS 0x000B 1121#define NO_SUCH_DESTINATION 0x000C 1122#define BUFFER_TOO_SMALL_ERROR 0x000D 1123#define ADAPTER_CLOSED 0x000E 1124#define UCODE_NOT_PRESENT 0x000F 1125#define FIFO_UNDERRUN 0x0010 1126#define DEST_OUT_OF_RESOURCES 0x0011 1127#define ADAPTER_NOT_INITIALIZED 0x0012 1128#define PENDING 0x0013 1129#define UCODE_PRESENT 0x0014 1130#define NOT_INIT_BY_BRIDGE 0x0015 1131 1132#define OPEN_FAILED 0x0080 1133#define HARDWARE_FAILED 0x0081 1134#define SELF_TEST_FAILED 0x0082 1135#define RAM_TEST_FAILED 0x0083 1136#define RAM_CONFLICT 0x0084 1137#define ROM_CONFLICT 0x0085 1138#define UNKNOWN_ADAPTER 0x0086 1139#define CONFIG_ERROR 0x0087 1140#define CONFIG_WARNING 0x0088 1141#define NO_FIXED_CNFG 0x0089 1142#define EEROM_CKSUM_ERROR 0x008A 1143#define ROM_SIGNATURE_ERROR 0x008B 1144#define ROM_CHECKSUM_ERROR 0x008C 1145#define ROM_SIZE_ERROR 0x008D 1146#define UNSUPPORTED_NIC_CHIP 0x008E 1147#define NIC_REG_ERROR 0x008F 1148#define BIC_REG_ERROR 0x0090 1149#define MICROCODE_TEST_ERROR 0x0091 1150#define LOBE_MEDIA_TEST_FAILED 0x0092 1151 1152#define ADAPTER_FOUND_LAN_CORRUPT 0x009B 1153 1154#define ADAPTER_NOT_FOUND 0xFFFF 1155 1156#define ILLEGAL_FUNCTION INVALID_FUNCTION 1157 1158/* Errors */ 1159#define IO_BASE_INVALID 0x0001 1160#define IO_BASE_RANGE 0x0002 1161#define IRQ_INVALID 0x0004 1162#define IRQ_RANGE 0x0008 1163#define RAM_BASE_INVALID 0x0010 1164#define RAM_BASE_RANGE 0x0020 1165#define RAM_SIZE_RANGE 0x0040 1166#define MEDIA_INVALID 0x0800 1167 1168/* Warnings */ 1169#define IRQ_MISMATCH 0x0080 1170#define RAM_BASE_MISMATCH 0x0100 1171#define RAM_SIZE_MISMATCH 0x0200 1172#define BUS_MODE_MISMATCH 0x0400 1173 1174#define RX_CRC_ERROR 0x01 1175#define RX_ALIGNMENT_ERROR 0x02 1176#define RX_HW_FAILED 0x80 1177 1178/* 1179 * Definitions for the field RING_STATUS_FLAGS 1180 */ 1181#define RING_STATUS_CHANGED 0X01 1182#define MONITOR_STATE_CHANGED 0X02 1183#define JOIN_STATE_CHANGED 0X04 1184 1185/* 1186 * Definitions for the field JOIN_STATE 1187 */ 1188#define JS_BYPASS_STATE 0x00 1189#define JS_LOBE_TEST_STATE 0x01 1190#define JS_DETECT_MONITOR_PRESENT_STATE 0x02 1191#define JS_AWAIT_NEW_MONITOR_STATE 0x03 1192#define JS_DUPLICATE_ADDRESS_TEST_STATE 0x04 1193#define JS_NEIGHBOR_NOTIFICATION_STATE 0x05 1194#define JS_REQUEST_INITIALIZATION_STATE 0x06 1195#define JS_JOIN_COMPLETE_STATE 0x07 1196#define JS_BYPASS_WAIT_STATE 0x08 1197 1198/* 1199 * Definitions for the field MONITOR_STATE 1200 */ 1201#define MS_MONITOR_FSM_INACTIVE 0x00 1202#define MS_REPEAT_BEACON_STATE 0x01 1203#define MS_REPEAT_CLAIM_TOKEN_STATE 0x02 1204#define MS_TRANSMIT_CLAIM_TOKEN_STATE 0x03 1205#define MS_STANDBY_MONITOR_STATE 0x04 1206#define MS_TRANSMIT_BEACON_STATE 0x05 1207#define MS_ACTIVE_MONITOR_STATE 0x06 1208#define MS_TRANSMIT_RING_PURGE_STATE 0x07 1209#define MS_BEACON_TEST_STATE 0x09 1210 1211/* 1212 * Definitions for the bit-field RING_STATUS 1213 */ 1214#define SIGNAL_LOSS 0x8000 1215#define HARD_ERROR 0x4000 1216#define SOFT_ERROR 0x2000 1217#define TRANSMIT_BEACON 0x1000 1218#define LOBE_WIRE_FAULT 0x0800 1219#define AUTO_REMOVAL_ERROR 0x0400 1220#define REMOVE_RECEIVED 0x0100 1221#define COUNTER_OVERFLOW 0x0080 1222#define SINGLE_STATION 0x0040 1223#define RING_RECOVERY 0x0020 1224 1225/* 1226 * Definitions for the field BUS_TYPE 1227 */ 1228#define AT_BUS 0x00 1229#define MCA_BUS 0x01 1230#define EISA_BUS 0x02 1231#define PCI_BUS 0x03 1232#define PCMCIA_BUS 0x04 1233 1234/* 1235 * Definitions for adapter_flags 1236 */ 1237#define RX_VALID_LOOKAHEAD 0x0001 1238#define FORCED_16BIT_MODE 0x0002 1239#define ADAPTER_DISABLED 0x0004 1240#define TRANSMIT_CHAIN_INT 0x0008 1241#define EARLY_RX_FRAME 0x0010 1242#define EARLY_TX 0x0020 1243#define EARLY_RX_COPY 0x0040 1244#define USES_PHYSICAL_ADDR 0x0080 /* Rsvd for DEC PCI and 9232 */ 1245#define NEEDS_PHYSICAL_ADDR 0x0100 /* Reserved*/ 1246#define RX_STATUS_PENDING 0x0200 1247#define ERX_DISABLED 0x0400 /* EARLY_RX_ENABLE rcv_mask */ 1248#define ENABLE_TX_PENDING 0x0800 1249#define ENABLE_RX_PENDING 0x1000 1250#define PERM_CLOSE 0x2000 1251#define IO_MAPPED 0x4000 /* IOmapped bus interface 795 */ 1252#define ETX_DISABLED 0x8000 1253 1254 1255/* 1256 * Definitions for adapter_flags1 1257 */ 1258#define TX_PHY_RX_VIRT 0x0001 1259#define NEEDS_HOST_RAM 0x0002 1260#define NEEDS_MEDIA_TYPE 0x0004 1261#define EARLY_RX_DONE 0x0008 1262#define PNP_BOOT_BIT 0x0010 /* activates PnP & config on power-up */ 1263 /* clear => regular PnP operation */ 1264#define PNP_ENABLE 0x0020 /* regular PnP operation clear => */ 1265 /* no PnP, overrides PNP_BOOT_BIT */ 1266#define SATURN_ENABLE 0x0040 1267 1268#define ADAPTER_REMOVABLE 0x0080 /* adapter is hot swappable */ 1269#define TX_PHY 0x0100 /* Uses physical address for tx bufs */ 1270#define RX_PHY 0x0200 /* Uses physical address for rx bufs */ 1271#define TX_VIRT 0x0400 /* Uses virtual addr for tx bufs */ 1272#define RX_VIRT 0x0800 1273#define NEEDS_SERVICE 0x1000 1274 1275/* 1276 * Adapter Status Codes 1277 */ 1278#define OPEN 0x0001 1279#define INITIALIZED 0x0002 1280#define CLOSED 0x0003 1281#define FAILED 0x0005 1282#define NOT_INITIALIZED 0x0006 1283#define IO_CONFLICT 0x0007 1284#define CARD_REMOVED 0x0008 1285#define CARD_INSERTED 0x0009 1286 1287/* 1288 * Mode Bit Definitions 1289 */ 1290#define INTERRUPT_STATUS_BIT 0x8000 /* PC Interrupt Line: 0 = Not Enabled */ 1291#define BOOT_STATUS_MASK 0x6000 /* Mask to isolate BOOT_STATUS */ 1292#define BOOT_INHIBIT 0x0000 /* BOOT_STATUS is 'inhibited' */ 1293#define BOOT_TYPE_1 0x2000 /* Unused BOOT_STATUS value */ 1294#define BOOT_TYPE_2 0x4000 /* Unused BOOT_STATUS value */ 1295#define BOOT_TYPE_3 0x6000 /* Unused BOOT_STATUS value */ 1296#define ZERO_WAIT_STATE_MASK 0x1800 /* Mask to isolate Wait State flags */ 1297#define ZERO_WAIT_STATE_8_BIT 0x1000 /* 0 = Disabled (Inserts Wait States) */ 1298#define ZERO_WAIT_STATE_16_BIT 0x0800 /* 0 = Disabled (Inserts Wait States) */ 1299#define LOOPING_MODE_MASK 0x0007 1300#define LOOPBACK_MODE_0 0x0000 1301#define LOOPBACK_MODE_1 0x0001 1302#define LOOPBACK_MODE_2 0x0002 1303#define LOOPBACK_MODE_3 0x0003 1304#define LOOPBACK_MODE_4 0x0004 1305#define LOOPBACK_MODE_5 0x0005 1306#define LOOPBACK_MODE_6 0x0006 1307#define LOOPBACK_MODE_7 0x0007 1308#define AUTO_MEDIA_DETECT 0x0008 1309#define MANUAL_CRC 0x0010 1310#define EARLY_TOKEN_REL 0x0020 /* Early Token Release for Token Ring */ 1311#define UMAC 0x0040 1312#define UTP2_PORT 0x0080 /* For 8216T2, 0=port A, 1=Port B. */ 1313#define BNC_10BT_INTERFACE 0x0600 /* BNC and UTP current media set */ 1314#define UTP_INTERFACE 0x0500 /* Ethernet UTP Only. */ 1315#define BNC_INTERFACE 0x0400 1316#define AUI_INTERFACE 0x0300 1317#define AUI_10BT_INTERFACE 0x0200 1318#define STARLAN_10_INTERFACE 0x0100 1319#define INTERFACE_TYPE_MASK 0x0700 1320 1321/* 1322 * Media Type Bit Definitions 1323 * 1324 * legend: TP = Twisted Pair 1325 * STP = Shielded twisted pair 1326 * UTP = Unshielded twisted pair 1327 */ 1328 1329#define CNFG_MEDIA_TYPE_MASK 0x001e /* POS Register 3 Mask */ 1330 1331#define MEDIA_S10 0x0000 /* Ethernet adapter, TP. */ 1332#define MEDIA_AUI_UTP 0x0001 /* Ethernet adapter, AUI/UTP media */ 1333#define MEDIA_BNC 0x0002 /* Ethernet adapter, BNC media. */ 1334#define MEDIA_AUI 0x0003 /* Ethernet Adapter, AUI media. */ 1335#define MEDIA_STP_16 0x0004 /* TokenRing adap, 16Mbit STP. */ 1336#define MEDIA_STP_4 0x0005 /* TokenRing adap, 4Mbit STP. */ 1337#define MEDIA_UTP_16 0x0006 /* TokenRing adap, 16Mbit UTP. */ 1338#define MEDIA_UTP_4 0x0007 /* TokenRing adap, 4Mbit UTP. */ 1339#define MEDIA_UTP 0x0008 /* Ethernet adapter, UTP media (no AUI) 1340*/ 1341#define MEDIA_BNC_UTP 0x0010 /* Ethernet adapter, BNC/UTP media */ 1342#define MEDIA_UTPFD 0x0011 /* Ethernet adapter, TP full duplex */ 1343#define MEDIA_UTPNL 0x0012 /* Ethernet adapter, TP with link integrity test disabled */ 1344#define MEDIA_AUI_BNC 0x0013 /* Ethernet adapter, AUI/BNC media */ 1345#define MEDIA_AUI_BNC_UTP 0x0014 /* Ethernet adapter, AUI_BNC/UTP */ 1346#define MEDIA_UTPA 0x0015 /* Ethernet UTP-10Mbps Ports A */ 1347#define MEDIA_UTPB 0x0016 /* Ethernet UTP-10Mbps Ports B */ 1348#define MEDIA_STP_16_UTP_16 0x0017 /* Token Ring STP-16Mbps/UTP-16Mbps */ 1349#define MEDIA_STP_4_UTP_4 0x0018 /* Token Ring STP-4Mbps/UTP-4Mbps */ 1350 1351#define MEDIA_STP100_UTP100 0x0020 /* Ethernet STP-100Mbps/UTP-100Mbps */ 1352#define MEDIA_UTP100FD 0x0021 /* Ethernet UTP-100Mbps, full duplex */ 1353#define MEDIA_UTP100 0x0022 /* Ethernet UTP-100Mbps */ 1354 1355 1356#define MEDIA_UNKNOWN 0xFFFF /* Unknown adapter/media type */ 1357 1358/* 1359 * Definitions for the field: 1360 * media_type2 1361 */ 1362#define MEDIA_TYPE_MII 0x0001 1363#define MEDIA_TYPE_UTP 0x0002 1364#define MEDIA_TYPE_BNC 0x0004 1365#define MEDIA_TYPE_AUI 0x0008 1366#define MEDIA_TYPE_S10 0x0010 1367#define MEDIA_TYPE_AUTO_SENSE 0x1000 1368#define MEDIA_TYPE_AUTO_DETECT 0x4000 1369#define MEDIA_TYPE_AUTO_NEGOTIATE 0x8000 1370 1371/* 1372 * Definitions for the field: 1373 * line_speed 1374 */ 1375#define LINE_SPEED_UNKNOWN 0x0000 1376#define LINE_SPEED_4 0x0001 1377#define LINE_SPEED_10 0x0002 1378#define LINE_SPEED_16 0x0004 1379#define LINE_SPEED_100 0x0008 1380#define LINE_SPEED_T4 0x0008 /* 100BaseT4 aliased for 9332BVT */ 1381#define LINE_SPEED_FULL_DUPLEX 0x8000 1382 1383/* 1384 * Definitions for the field: 1385 * bic_type (Bus interface chip type) 1386 */ 1387#define BIC_NO_CHIP 0x0000 /* Bus interface chip not implemented */ 1388#define BIC_583_CHIP 0x0001 /* 83C583 bus interface chip */ 1389#define BIC_584_CHIP 0x0002 /* 83C584 bus interface chip */ 1390#define BIC_585_CHIP 0x0003 /* 83C585 bus interface chip */ 1391#define BIC_593_CHIP 0x0004 /* 83C593 bus interface chip */ 1392#define BIC_594_CHIP 0x0005 /* 83C594 bus interface chip */ 1393#define BIC_564_CHIP 0x0006 /* PCMCIA Bus interface chip */ 1394#define BIC_790_CHIP 0x0007 /* 83C790 bus i-face/Ethernet NIC chip */ 1395#define BIC_571_CHIP 0x0008 /* 83C571 EISA bus master i-face */ 1396#define BIC_587_CHIP 0x0009 /* Token Ring AT bus master i-face */ 1397#define BIC_574_CHIP 0x0010 /* FEAST bus interface chip */ 1398#define BIC_8432_CHIP 0x0011 /* 8432 bus i-face/Ethernet NIC(DEC PCI) */ 1399#define BIC_9332_CHIP 0x0012 /* 9332 bus i-face/100Mbps Ether NIC(DEC PCI) */ 1400#define BIC_8432E_CHIP 0x0013 /* 8432 Enhanced bus iface/Ethernet NIC(DEC) */ 1401#define BIC_EPIC100_CHIP 0x0014 /* EPIC/100 10/100 Mbps Ethernet BIC/NIC */ 1402#define BIC_C94_CHIP 0x0015 /* 91C94 bus i-face in PCMCIA mode */ 1403#define BIC_X8020_CHIP 0x0016 /* Xilinx PCMCIA multi-func i-face */ 1404 1405/* 1406 * Definitions for the field: 1407 * nic_type (Bus interface chip type) 1408 */ 1409#define NIC_UNK_CHIP 0x0000 /* Unknown NIC chip */ 1410#define NIC_8390_CHIP 0x0001 /* DP8390 Ethernet NIC */ 1411#define NIC_690_CHIP 0x0002 /* 83C690 Ethernet NIC */ 1412#define NIC_825_CHIP 0x0003 /* 83C825 Token Ring NIC */ 1413/* #define NIC_???_CHIP 0x0004 */ /* Not used */ 1414/* #define NIC_???_CHIP 0x0005 */ /* Not used */ 1415/* #define NIC_???_CHIP 0x0006 */ /* Not used */ 1416#define NIC_790_CHIP 0x0007 /* 83C790 bus i-face/Ethernet NIC chip */ 1417#define NIC_C100_CHIP 0x0010 /* FEAST 100Mbps Ethernet NIC */ 1418#define NIC_8432_CHIP 0x0011 /* 8432 bus i-face/Ethernet NIC(DEC PCI) */ 1419#define NIC_9332_CHIP 0x0012 /* 9332 bus i-face/100Mbps Ether NIC(DEC PCI) */ 1420#define NIC_8432E_CHIP 0x0013 /* 8432 enhanced bus iface/Ethernet NIC(DEC) */ 1421#define NIC_EPIC100_CHIP 0x0014 /* EPIC/100 10/100 Mbps Ethernet BIC/NIC */ 1422#define NIC_C94_CHIP 0x0015 /* 91C94 PC Card with multi func */ 1423 1424/* 1425 * Definitions for the field: 1426 * adapter_type The adapter_type field describes the adapter/bus 1427 * configuration. 1428 */ 1429#define BUS_ISA16_TYPE 0x0001 /* 16 bit adap in 16 bit (E)ISA slot */ 1430#define BUS_ISA8_TYPE 0x0002 /* 8/16b adap in 8 bit XT/(E)ISA slot */ 1431#define BUS_MCA_TYPE 0x0003 /* Micro Channel adapter */ 1432 1433/* 1434 * Receive Mask definitions 1435 */ 1436#define ACCEPT_MULTICAST 0x0001 1437#define ACCEPT_BROADCAST 0x0002 1438#define PROMISCUOUS_MODE 0x0004 1439#define ACCEPT_SOURCE_ROUTING 0x0008 1440#define ACCEPT_ERR_PACKETS 0x0010 1441#define ACCEPT_ATT_MAC_FRAMES 0x0020 1442#define ACCEPT_MULTI_PROM 0x0040 1443#define TRANSMIT_ONLY 0x0080 1444#define ACCEPT_EXT_MAC_FRAMES 0x0100 1445#define EARLY_RX_ENABLE 0x0200 1446#define PKT_SIZE_NOT_NEEDED 0x0400 1447#define ACCEPT_SOURCE_ROUTING_SPANNING 0x0808 1448 1449#define ACCEPT_ALL_MAC_FRAMES 0x0120 1450 1451/* 1452 * config_mode defs 1453 */ 1454#define STORE_EEROM 0x0001 /* Store config in EEROM. */ 1455#define STORE_REGS 0x0002 /* Store config in register set. */ 1456 1457/* 1458 * equates for lmac_flags in adapter structure (Ethernet) 1459 */ 1460#define MEM_DISABLE 0x0001 1461#define RX_STATUS_POLL 0x0002 1462#define USE_RE_BIT 0x0004 1463/*#define RESERVED 0x0008 */ 1464/*#define RESERVED 0x0010 */ 1465/*#define RESERVED 0x0020 */ 1466/*#define RESERVED 0x0040 */ 1467/*#define RESERVED 0x0080 */ 1468/*#define RESERVED 0x0100 */ 1469/*#define RESERVED 0x0200 */ 1470/*#define RESERVED 0x0400 */ 1471/*#define RESERVED 0x0800 */ 1472/*#define RESERVED 0x1000 */ 1473/*#define RESERVED 0x2000 */ 1474/*#define RESERVED 0x4000 */ 1475/*#define RESERVED 0x8000 */ 1476 1477/* media_opts & media_set Fields bit defs for Ethernet ... */ 1478#define MED_OPT_BNC 0x01 1479#define MED_OPT_UTP 0x02 1480#define MED_OPT_AUI 0x04 1481#define MED_OPT_10MB 0x08 1482#define MED_OPT_100MB 0x10 1483#define MED_OPT_S10 0x20 1484 1485/* media_opts & media_set Fields bit defs for Token Ring ... */ 1486#define MED_OPT_4MB 0x08 1487#define MED_OPT_16MB 0x10 1488#define MED_OPT_STP 0x40 1489 1490#define MAX_8023_SIZE 1500 /* Max 802.3 size of frame. */ 1491#define DEFAULT_ERX_VALUE 4 /* Number of 16-byte blocks for 790B early Rx. */ 1492#define DEFAULT_ETX_VALUE 32 /* Number of bytes for 790B early Tx. */ 1493#define DEFAULT_TX_RETRIES 3 /* Number of transmit retries */ 1494#define LPBK_FRAME_SIZE 1024 /* Default loopback frame for Rx calibration test. */ 1495#define MAX_LOOKAHEAD_SIZE 252 /* Max lookahead size for ethernet. */ 1496 1497#define RW_MAC_STATE 0x1101 1498#define RW_SA_OF_LAST_AMP_OR_SMP 0x2803 1499#define RW_PHYSICAL_DROP_NUMBER 0x3B02 1500#define RW_UPSTREAM_NEIGHBOR_ADDRESS 0x3E03 1501#define RW_PRODUCT_INSTANCE_ID 0x4B09 1502 1503#define RW_TRC_STATUS_BLOCK 0x5412 1504 1505#define RW_MAC_ERROR_COUNTERS_NO_CLEAR 0x8006 1506#define RW_MAC_ERROR_COUNTER_CLEAR 0x7A06 1507#define RW_CONFIG_REGISTER_0 0xA001 1508#define RW_CONFIG_REGISTER_1 0xA101 1509#define RW_PRESCALE_TIMER_THRESHOLD 0xA201 1510#define RW_TPT_THRESHOLD 0xA301 1511#define RW_TQP_THRESHOLD 0xA401 1512#define RW_TNT_THRESHOLD 0xA501 1513#define RW_TBT_THRESHOLD 0xA601 1514#define RW_TSM_THRESHOLD 0xA701 1515#define RW_TAM_THRESHOLD 0xA801 1516#define RW_TBR_THRESHOLD 0xA901 1517#define RW_TER_THRESHOLD 0xAA01 1518#define RW_TGT_THRESHOLD 0xAB01 1519#define RW_THT_THRESHOLD 0xAC01 1520#define RW_TRR_THRESHOLD 0xAD01 1521#define RW_TVX_THRESHOLD 0xAE01 1522#define RW_INDIVIDUAL_MAC_ADDRESS 0xB003 1523 1524#define RW_INDIVIDUAL_GROUP_ADDRESS 0xB303 /* all of group addr */ 1525#define RW_INDIVIDUAL_GROUP_ADDR_WORD_0 0xB301 /* 1st word of group addr */ 1526#define RW_INDIVIDUAL_GROUP_ADDR 0xB402 /* 2nd-3rd word of group addr */ 1527#define RW_FUNCTIONAL_ADDRESS 0xB603 /* all of functional addr */ 1528#define RW_FUNCTIONAL_ADDR_WORD_0 0xB601 /* 1st word of func addr */ 1529#define RW_FUNCTIONAL_ADDR 0xB702 /* 2nd-3rd word func addr */ 1530 1531#define RW_BIT_SIGNIFICANT_GROUP_ADDR 0xB902 1532#define RW_SOURCE_RING_BRIDGE_NUMBER 0xBB01 1533#define RW_TARGET_RING_NUMBER 0xBC01 1534 1535#define RW_HIC_INTERRUPT_MASK 0xC601 1536 1537#define SOURCE_ROUTING_SPANNING_BITS 0x00C0 /* Spanning Tree Frames */ 1538#define SOURCE_ROUTING_EXPLORER_BIT 0x0040 /* Explorer and Single Route */ 1539 1540 /* write */ 1541 1542#define CSR_MSK_ALL 0x80 // Bic 587 Only 1543#define CSR_MSKTINT 0x20 1544#define CSR_MSKCBUSY 0x10 1545#define CSR_CLRTINT 0x08 1546#define CSR_CLRCBUSY 0x04 1547#define CSR_WCSS 0x02 1548#define CSR_CA 0x01 1549 1550 /* read */ 1551 1552#define CSR_TINT 0x20 1553#define CSR_CINT 0x10 1554#define CSR_TSTAT 0x08 1555#define CSR_CSTAT 0x04 1556#define CSR_FAULT 0x02 1557#define CSR_CBUSY 0x01 1558 1559#define LAAR_MEM16ENB 0x80 1560#define Zws16 0x20 1561 1562#define IRR_IEN 0x80 1563#define Zws8 0x01 1564 1565#define IMCCR_EIL 0x04 1566 1567typedef struct { 1568 __u8 ac; /* Access Control */ 1569 __u8 fc; /* Frame Control */ 1570 __u8 da[6]; /* Dest Addr */ 1571 __u8 sa[6]; /* Source Addr */ 1572 1573 __u16 vl; /* Vector Length */ 1574 __u8 dc_sc; /* Dest/Source Class */ 1575 __u8 vc; /* Vector Code */ 1576 } MAC_HEADER; 1577 1578#define MAX_SUB_VECTOR_INFO (RX_DATA_BUFFER_SIZE - sizeof(MAC_HEADER) - 2) 1579 1580typedef struct 1581 { 1582 __u8 svl; /* Sub-vector Length */ 1583 __u8 svi; /* Sub-vector Code */ 1584 __u8 svv[MAX_SUB_VECTOR_INFO]; /* Sub-vector Info */ 1585 } MAC_SUB_VECTOR; 1586 1587#endif /* __KERNEL__ */ 1588#endif /* __LINUX_SMCTR_H */ 1589