1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 233f810b2SJeff Kirsher /****************************************************************************** 333f810b2SJeff Kirsher * 433f810b2SJeff Kirsher * (C)Copyright 1998,1999 SysKonnect, 533f810b2SJeff Kirsher * a business unit of Schneider & Koch & Co. Datensysteme GmbH. 633f810b2SJeff Kirsher * 733f810b2SJeff Kirsher * The information in this file is provided "AS IS" without warranty. 833f810b2SJeff Kirsher * 933f810b2SJeff Kirsher ******************************************************************************/ 1033f810b2SJeff Kirsher 1133f810b2SJeff Kirsher /* 1233f810b2SJeff Kirsher * Operating system-dependent definitions that have to be defined 1333f810b2SJeff Kirsher * before any other header files are included. 1433f810b2SJeff Kirsher */ 1533f810b2SJeff Kirsher 1633f810b2SJeff Kirsher // HWM (HardWare Module) Definitions 1733f810b2SJeff Kirsher // ----------------------- 1833f810b2SJeff Kirsher 1933f810b2SJeff Kirsher #include <asm/byteorder.h> 2033f810b2SJeff Kirsher 2133f810b2SJeff Kirsher #ifdef __LITTLE_ENDIAN 2233f810b2SJeff Kirsher #define LITTLE_ENDIAN 2333f810b2SJeff Kirsher #else 2433f810b2SJeff Kirsher #define BIG_ENDIAN 2533f810b2SJeff Kirsher #endif 2633f810b2SJeff Kirsher 2733f810b2SJeff Kirsher // this is set in the makefile 2833f810b2SJeff Kirsher // #define PCI /* only PCI adapters supported by this driver */ 2933f810b2SJeff Kirsher // #define MEM_MAPPED_IO /* use memory mapped I/O */ 3033f810b2SJeff Kirsher 3133f810b2SJeff Kirsher 3233f810b2SJeff Kirsher #define USE_CAN_ADDR /* DA and SA in MAC header are canonical. */ 3333f810b2SJeff Kirsher 3433f810b2SJeff Kirsher #define MB_OUTSIDE_SMC /* SMT Mbufs outside of smc struct. */ 3533f810b2SJeff Kirsher 3633f810b2SJeff Kirsher // ----------------------- 3733f810b2SJeff Kirsher 3833f810b2SJeff Kirsher 3933f810b2SJeff Kirsher // SMT Definitions 4033f810b2SJeff Kirsher // ----------------------- 4133f810b2SJeff Kirsher #define SYNC /* allow synchronous frames */ 4233f810b2SJeff Kirsher 4333f810b2SJeff Kirsher // #define SBA /* Synchronous Bandwidth Allocator support */ 4433f810b2SJeff Kirsher /* not available as free source */ 4533f810b2SJeff Kirsher 4633f810b2SJeff Kirsher #define ESS /* SBA End Station Support */ 4733f810b2SJeff Kirsher 4833f810b2SJeff Kirsher #define SMT_PANIC(smc, nr, msg) printk(KERN_INFO "SMT PANIC: code: %d, msg: %s\n",nr,msg) 4933f810b2SJeff Kirsher 5033f810b2SJeff Kirsher 5133f810b2SJeff Kirsher #ifdef DEBUG 5233f810b2SJeff Kirsher #define printf(s,args...) printk(KERN_INFO s, ## args) 5333f810b2SJeff Kirsher #endif 5433f810b2SJeff Kirsher 5533f810b2SJeff Kirsher // #define HW_PTR u_long 5633f810b2SJeff Kirsher // ----------------------- 5733f810b2SJeff Kirsher 5833f810b2SJeff Kirsher 5933f810b2SJeff Kirsher 6033f810b2SJeff Kirsher // HWM and OS-specific buffer definitions 6133f810b2SJeff Kirsher // ----------------------- 6233f810b2SJeff Kirsher 6333f810b2SJeff Kirsher // default number of receive buffers. 6433f810b2SJeff Kirsher #define NUM_RECEIVE_BUFFERS 10 6533f810b2SJeff Kirsher 6633f810b2SJeff Kirsher // default number of transmit buffers. 6733f810b2SJeff Kirsher #define NUM_TRANSMIT_BUFFERS 10 6833f810b2SJeff Kirsher 6933f810b2SJeff Kirsher // Number of SMT buffers (Mbufs). 7033f810b2SJeff Kirsher #define NUM_SMT_BUF 4 7133f810b2SJeff Kirsher 7233f810b2SJeff Kirsher // Number of TXDs for asynchronous transmit queue. 7333f810b2SJeff Kirsher #define HWM_ASYNC_TXD_COUNT (NUM_TRANSMIT_BUFFERS + NUM_SMT_BUF) 7433f810b2SJeff Kirsher 7533f810b2SJeff Kirsher // Number of TXDs for synchronous transmit queue. 7633f810b2SJeff Kirsher #define HWM_SYNC_TXD_COUNT HWM_ASYNC_TXD_COUNT 7733f810b2SJeff Kirsher 7833f810b2SJeff Kirsher 7933f810b2SJeff Kirsher // Number of RXDs for receive queue #1. 8033f810b2SJeff Kirsher // Note: Workaround for ASIC Errata #7: One extra RXD is required. 8133f810b2SJeff Kirsher #if (NUM_RECEIVE_BUFFERS > 100) 8233f810b2SJeff Kirsher #define SMT_R1_RXD_COUNT (1 + 100) 8333f810b2SJeff Kirsher #else 8433f810b2SJeff Kirsher #define SMT_R1_RXD_COUNT (1 + NUM_RECEIVE_BUFFERS) 8533f810b2SJeff Kirsher #endif 8633f810b2SJeff Kirsher 8733f810b2SJeff Kirsher // Number of RXDs for receive queue #2. 8833f810b2SJeff Kirsher #define SMT_R2_RXD_COUNT 0 // Not used. 8933f810b2SJeff Kirsher // ----------------------- 9033f810b2SJeff Kirsher 9133f810b2SJeff Kirsher 9233f810b2SJeff Kirsher 9333f810b2SJeff Kirsher /* 9433f810b2SJeff Kirsher * OS-specific part of the transmit/receive descriptor structure (TXD/RXD). 9533f810b2SJeff Kirsher * 9633f810b2SJeff Kirsher * Note: The size of these structures must follow this rule: 9733f810b2SJeff Kirsher * 9833f810b2SJeff Kirsher * sizeof(struct) + 2*sizeof(void*) == n * 16, n >= 1 9933f810b2SJeff Kirsher * 10033f810b2SJeff Kirsher * We use the dma_addr fields under Linux to keep track of the 10133f810b2SJeff Kirsher * DMA address of the packet data, for later pci_unmap_single. -DaveM 10233f810b2SJeff Kirsher */ 10333f810b2SJeff Kirsher 10433f810b2SJeff Kirsher struct s_txd_os { // os-specific part of transmit descriptor 10533f810b2SJeff Kirsher struct sk_buff *skb; 10633f810b2SJeff Kirsher dma_addr_t dma_addr; 10733f810b2SJeff Kirsher } ; 10833f810b2SJeff Kirsher 10933f810b2SJeff Kirsher struct s_rxd_os { // os-specific part of receive descriptor 11033f810b2SJeff Kirsher struct sk_buff *skb; 11133f810b2SJeff Kirsher dma_addr_t dma_addr; 11233f810b2SJeff Kirsher } ; 11333f810b2SJeff Kirsher 11433f810b2SJeff Kirsher 11533f810b2SJeff Kirsher /* 11633f810b2SJeff Kirsher * So we do not need to make too many modifications to the generic driver 11733f810b2SJeff Kirsher * parts, we take advantage of the AIX byte swapping macro interface. 11833f810b2SJeff Kirsher */ 11933f810b2SJeff Kirsher 12033f810b2SJeff Kirsher #define AIX_REVERSE(x) ((u32)le32_to_cpu((u32)(x))) 12133f810b2SJeff Kirsher #define MDR_REVERSE(x) ((u32)le32_to_cpu((u32)(x))) 122