1 /****************************************************************************** 2 * 3 * (C)Copyright 1998,1999 SysKonnect, 4 * a business unit of Schneider & Koch & Co. Datensysteme GmbH. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * The information in this file is provided "AS IS" without warranty. 12 * 13 ******************************************************************************/ 14 15 /* 16 * Operating system-dependent definitions that have to be defined 17 * before any other header files are included. 18 */ 19 20 // HWM (HardWare Module) Definitions 21 // ----------------------- 22 23 #include <asm/byteorder.h> 24 25 #ifdef __LITTLE_ENDIAN 26 #define LITTLE_ENDIAN 27 #else 28 #define BIG_ENDIAN 29 #endif 30 31 // this is set in the makefile 32 // #define PCI /* only PCI adapters supported by this driver */ 33 // #define MEM_MAPPED_IO /* use memory mapped I/O */ 34 35 36 #define USE_CAN_ADDR /* DA and SA in MAC header are canonical. */ 37 38 #define MB_OUTSIDE_SMC /* SMT Mbufs outside of smc struct. */ 39 40 // ----------------------- 41 42 43 // SMT Definitions 44 // ----------------------- 45 #define SYNC /* allow synchronous frames */ 46 47 // #define SBA /* Synchronous Bandwidth Allocator support */ 48 /* not available as free source */ 49 50 #define ESS /* SBA End Station Support */ 51 52 #define SMT_PANIC(smc, nr, msg) printk(KERN_INFO "SMT PANIC: code: %d, msg: %s\n",nr,msg) 53 54 55 #ifdef DEBUG 56 #define printf(s,args...) printk(KERN_INFO s, ## args) 57 #endif 58 59 // #define HW_PTR u_long 60 // ----------------------- 61 62 63 64 // HWM and OS-specific buffer definitions 65 // ----------------------- 66 67 // default number of receive buffers. 68 #define NUM_RECEIVE_BUFFERS 10 69 70 // default number of transmit buffers. 71 #define NUM_TRANSMIT_BUFFERS 10 72 73 // Number of SMT buffers (Mbufs). 74 #define NUM_SMT_BUF 4 75 76 // Number of TXDs for asynchronous transmit queue. 77 #define HWM_ASYNC_TXD_COUNT (NUM_TRANSMIT_BUFFERS + NUM_SMT_BUF) 78 79 // Number of TXDs for synchronous transmit queue. 80 #define HWM_SYNC_TXD_COUNT HWM_ASYNC_TXD_COUNT 81 82 83 // Number of RXDs for receive queue #1. 84 // Note: Workaround for ASIC Errata #7: One extra RXD is required. 85 #if (NUM_RECEIVE_BUFFERS > 100) 86 #define SMT_R1_RXD_COUNT (1 + 100) 87 #else 88 #define SMT_R1_RXD_COUNT (1 + NUM_RECEIVE_BUFFERS) 89 #endif 90 91 // Number of RXDs for receive queue #2. 92 #define SMT_R2_RXD_COUNT 0 // Not used. 93 // ----------------------- 94 95 96 97 /* 98 * OS-specific part of the transmit/receive descriptor structure (TXD/RXD). 99 * 100 * Note: The size of these structures must follow this rule: 101 * 102 * sizeof(struct) + 2*sizeof(void*) == n * 16, n >= 1 103 * 104 * We use the dma_addr fields under Linux to keep track of the 105 * DMA address of the packet data, for later pci_unmap_single. -DaveM 106 */ 107 108 struct s_txd_os { // os-specific part of transmit descriptor 109 struct sk_buff *skb; 110 dma_addr_t dma_addr; 111 } ; 112 113 struct s_rxd_os { // os-specific part of receive descriptor 114 struct sk_buff *skb; 115 dma_addr_t dma_addr; 116 } ; 117 118 119 /* 120 * So we do not need to make too many modifications to the generic driver 121 * parts, we take advantage of the AIX byte swapping macro interface. 122 */ 123 124 #define AIX_REVERSE(x) ((u32)le32_to_cpu((u32)(x))) 125 #define MDR_REVERSE(x) ((u32)le32_to_cpu((u32)(x))) 126