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 108struct s_txd_os { // os-specific part of transmit descriptor 109 struct sk_buff *skb; 110 dma_addr_t dma_addr; 111} ; 112 113struct 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