📄 skdrv2nd.h
字号:
/****************************************************************************** * * Name: skdrv2nd.h * Project: GEnesis, PCI Gigabit Ethernet Adapter * Version: $Revision: 1.1.1.1 $ * Date: $Date: 2004/07/02 11:44:55 $ * Purpose: Second header file for driver and all other modules * ******************************************************************************//****************************************************************************** * * (C)Copyright 1998-2003 SysKonnect GmbH. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************//****************************************************************************** * * History: * * $Log: skdrv2nd.h,v $ * Revision 1.1.1.1 2004/07/02 11:44:55 lgsoft * Import of uboot * * Revision 1.15 2003/02/25 14:16:40 mlindner * Fix: Copyright statement * * Revision 1.14 2003/02/25 13:26:26 mlindner * Add: Support for various vendors * * Revision 1.13 2002/10/02 12:46:02 mlindner * Add: Support for Yukon * * Revision 1.12.2.2 2001/09/05 12:14:50 mlindner * add: New hardware revision int * * Revision 1.12.2.1 2001/03/12 16:50:59 mlindner * chg: kernel 2.4 adaption * * Revision 1.12 2001/03/01 12:52:15 mlindner * Fixed ring size * * Revision 1.11 2001/02/19 13:28:02 mlindner * Changed PNMI parameter values * * Revision 1.10 2001/01/22 14:16:04 mlindner * added ProcFs functionality * Dual Net functionality integrated * Rlmt networks added * * Revision 1.1 2000/10/05 19:46:50 phargrov * Add directory src/vipk_devs_nonlbl/vipk_sk98lin/ * This is the SysKonnect SK-98xx Gigabit Ethernet driver, * contributed by SysKonnect. * * Revision 1.9 2000/02/21 10:39:55 cgoos * Added flag for jumbo support usage. * * Revision 1.8 1999/11/22 13:50:44 cgoos * Changed license header to GPL. * Fixed two comments. * * Revision 1.7 1999/09/28 12:38:21 cgoos * Added CheckQueue to SK_AC. * * Revision 1.6 1999/07/27 08:04:05 cgoos * Added checksumming variables to SK_AC. * * Revision 1.5 1999/03/29 12:33:26 cgoos * Rreversed to fine lock granularity. * * Revision 1.4 1999/03/15 12:14:02 cgoos * Added DriverLock to SK_AC. * Removed other locks. * * Revision 1.3 1999/03/01 08:52:27 cgoos * Changed pAC->PciDev declaration. * * Revision 1.2 1999/02/18 10:57:14 cgoos * Removed SkDrvTimeStamp prototype. * Fixed SkGeOsGetTime prototype. * * Revision 1.1 1999/02/16 07:41:01 cgoos * First version. * * * ******************************************************************************//****************************************************************************** * * Description: * * This is the second include file of the driver, which includes all other * neccessary files and defines all structures and constants used by the * driver and the common modules. * * Include File Hierarchy: * * see skge.c * ******************************************************************************/#ifndef __INC_SKDRV2ND_H#define __INC_SKDRV2ND_H#include "h/skqueue.h"#include "h/skgehwt.h"#include "h/sktimer.h"#include "h/ski2c.h"#include "h/skgepnmi.h"#include "h/skvpd.h"#include "h/skgehw.h"#include "h/skgeinit.h"#include "h/skaddr.h"#include "h/skgesirq.h"#include "h/skcsum.h"#include "h/skrlmt.h"#include "h/skgedrv.h"#define SK_PCI_ISCOMPLIANT(result, pdev) { \ result = SK_FALSE; /* default */ \ /* 3Com (0x10b7) */ \ if (pdev->vendor == 0x10b7) { \ /* Gigabit Ethernet Adapter (0x1700) */ \ if ((pdev->device == 0x1700)) { \ result = SK_TRUE; \ } \ /* SysKonnect (0x1148) */ \ } else if (pdev->vendor == 0x1148) { \ /* SK-98xx Gigabit Ethernet Server Adapter (0x4300) */ \ /* SK-98xx V2 Gigabit Ethernet Adapter (0x4320) */ \ if ((pdev->device == 0x4300) || \ (pdev->device == 0x4320)) { \ result = SK_TRUE; \ } \ /* D-Link (0x1186) */ \ } else if (pdev->vendor == 0x1186) { \ /* Gigabit Ethernet Adapter (0x4c00) */ \ if ((pdev->device == 0x4c00)) { \ result = SK_TRUE; \ } \ /* CNet (0x1371) */ \ } else if (pdev->vendor == 0x1371) { \ /* GigaCard Network Adapter (0x434e) */ \ if ((pdev->device == 0x434e)) { \ result = SK_TRUE; \ } \ /* Linksys (0x1737) */ \ } else if (pdev->vendor == 0x1737) { \ /* Gigabit Network Adapter (0x1032) */ \ /* Gigabit Network Adapter (0x1064) */ \ if ((pdev->device == 0x1032) || \ (pdev->device == 0x1064)) { \ result = SK_TRUE; \ } \ } else { \ result = SK_FALSE; \ } \}extern SK_MBUF *SkDrvAllocRlmtMbuf(SK_AC*, SK_IOC, unsigned);extern void SkDrvFreeRlmtMbuf(SK_AC*, SK_IOC, SK_MBUF*);extern SK_U64 SkOsGetTime(SK_AC*);extern int SkPciReadCfgDWord(SK_AC*, int, SK_U32*);extern int SkPciReadCfgWord(SK_AC*, int, SK_U16*);extern int SkPciReadCfgByte(SK_AC*, int, SK_U8*);extern int SkPciWriteCfgDWord(SK_AC*, int, SK_U32);extern int SkPciWriteCfgWord(SK_AC*, int, SK_U16);extern int SkPciWriteCfgByte(SK_AC*, int, SK_U8);extern int SkDrvEvent(SK_AC*, SK_IOC IoC, SK_U32, SK_EVPARA);struct s_DrvRlmtMbuf { SK_MBUF *pNext; /* Pointer to next RLMT Mbuf. */ SK_U8 *pData; /* Data buffer (virtually contig.). */ unsigned Size; /* Data buffer size. */ unsigned Length; /* Length of packet (<= Size). */ SK_U32 PortIdx; /* Receiving/transmitting port. */#ifdef SK_RLMT_MBUF_PRIVATE SK_RLMT_MBUF Rlmt; /* Private part for RLMT. */#endif /* SK_RLMT_MBUF_PRIVATE */ struct sk_buff *pOs; /* Pointer to message block */};/* * ioctl definitions */#define SK_IOCTL_BASE (SIOCDEVPRIVATE)#define SK_IOCTL_GETMIB (SK_IOCTL_BASE + 0)#define SK_IOCTL_SETMIB (SK_IOCTL_BASE + 1)#define SK_IOCTL_PRESETMIB (SK_IOCTL_BASE + 2)typedef struct s_IOCTL SK_GE_IOCTL;struct s_IOCTL { char* pData; unsigned int Len;};/* * define sizes of descriptor rings in bytes */#if 0#define TX_RING_SIZE (8*1024)#define RX_RING_SIZE (24*1024)#else#define TX_RING_SIZE (10 * 40)#define RX_RING_SIZE (10 * 40)#endif/* * Buffer size for ethernet packets */#define ETH_BUF_SIZE 1540#define ETH_MAX_MTU 1514#define ETH_MIN_MTU 60#define ETH_MULTICAST_BIT 0x01#define SK_JUMBO_MTU 9000/* * transmit priority selects the queue: LOW=asynchron, HIGH=synchron */#define TX_PRIO_LOW 0#define TX_PRIO_HIGH 1/* * alignment of rx/tx descriptors */#define DESCR_ALIGN 8/* * definitions for pnmi. TODO */#define SK_DRIVER_RESET(pAC, IoC) 0#define SK_DRIVER_SENDEVENT(pAC, IoC) 0#define SK_DRIVER_SELFTEST(pAC, IoC) 0/* For get mtu you must add an own function */#define SK_DRIVER_GET_MTU(pAc,IoC,i) 0#define SK_DRIVER_SET_MTU(pAc,IoC,i,v) 0#define SK_DRIVER_PRESET_MTU(pAc,IoC,i,v) 0/* TX and RX descriptors *****************************************************/typedef struct s_RxD RXD; /* the receive descriptor */struct s_RxD { volatile SK_U32 RBControl; /* Receive Buffer Control */ SK_U32 VNextRxd; /* Next receive descriptor,low dword */ SK_U32 VDataLow; /* Receive buffer Addr, low dword */ SK_U32 VDataHigh; /* Receive buffer Addr, high dword */ SK_U32 FrameStat; /* Receive Frame Status word */ SK_U32 TimeStamp; /* Time stamp from XMAC */ SK_U32 TcpSums; /* TCP Sum 2 / TCP Sum 1 */ SK_U32 TcpSumStarts; /* TCP Sum Start 2 / TCP Sum Start 1 */ RXD *pNextRxd; /* Pointer to next Rxd */ struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */};typedef struct s_TxD TXD; /* the transmit descriptor */struct s_TxD { volatile SK_U32 TBControl; /* Transmit Buffer Control */ SK_U32 VNextTxd; /* Next transmit descriptor,low dword */ SK_U32 VDataLow; /* Transmit Buffer Addr, low dword */ SK_U32 VDataHigh; /* Transmit Buffer Addr, high dword */ SK_U32 FrameStat; /* Transmit Frame Status Word */ SK_U32 TcpSumOfs; /* Reserved / TCP Sum Offset */ SK_U16 TcpSumSt; /* TCP Sum Start */ SK_U16 TcpSumWr; /* TCP Sum Write */ SK_U32 TcpReserved; /* not used */ TXD *pNextTxd; /* Pointer to next Txd */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -