📄 skdrv2nd.h
字号:
/****************************************************************************** * * Name: skdrv2nd.h * Project: GEnesis, PCI Gigabit Ethernet Adapter * Version: $Revision: 1.10 $ * Date: $Date: 2003/12/11 16:04:45 $ * Purpose: Second header file for driver and all other modules * ******************************************************************************//****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. * (C)Copyright 2002-2003 Marvell. * * 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. * ******************************************************************************//****************************************************************************** * * 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"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);#ifdef SK_DIAG_SUPPORTextern int SkDrvEnterDiagMode(SK_AC *pAc);extern int SkDrvLeaveDiagMode(SK_AC *pAc);#endifstruct 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 */};/* * Time macros */#if SK_TICKS_PER_SEC == 100#define SK_PNMI_HUNDREDS_SEC(t) (t)#else#define SK_PNMI_HUNDREDS_SEC(t) ((((unsigned long)t) * 100) / \ (SK_TICKS_PER_SEC))#endif/* * New SkOsGetTime */#define SkOsGetTimeCurrent(pAC, pUsec) {\ struct timeval t;\ do_gettimeofday(&t);\ *pUsec = ((((t.tv_sec) * 1000000L)+t.tv_usec)/10000);\}/* * 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)#define SK_IOCTL_GEN (SK_IOCTL_BASE + 3)#define SK_IOCTL_DIAG (SK_IOCTL_BASE + 4)typedef struct s_IOCTL SK_GE_IOCTL;struct s_IOCTL { char __user * pData; unsigned int Len;};/* * define sizes of descriptor rings in bytes */#define TX_RING_SIZE (8*1024)#define RX_RING_SIZE (24*1024)/* * 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 64/* * 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/*** Interim definition of SK_DRV_TIMER placed in this file until ** common modules have boon finallized*/#define SK_DRV_TIMER 11 #define SK_DRV_MODERATION_TIMER 1#define SK_DRV_MODERATION_TIMER_LENGTH 1000000 /* 1 second */#define SK_DRV_RX_CLEANUP_TIMER 2#define SK_DRV_RX_CLEANUP_TIMER_LENGTH 1000000 /* 100 millisecs *//*** Definitions regarding transmitting frames ** any calculating any checksum.*/#define C_LEN_ETHERMAC_HEADER_DEST_ADDR 6#define C_LEN_ETHERMAC_HEADER_SRC_ADDR 6#define C_LEN_ETHERMAC_HEADER_LENTYPE 2#define C_LEN_ETHERMAC_HEADER ( (C_LEN_ETHERMAC_HEADER_DEST_ADDR) + \ (C_LEN_ETHERMAC_HEADER_SRC_ADDR) + \ (C_LEN_ETHERMAC_HEADER_LENTYPE) )#define C_LEN_ETHERMTU_MINSIZE 46#define C_LEN_ETHERMTU_MAXSIZE_STD 1500#define C_LEN_ETHERMTU_MAXSIZE_JUMBO 9000#define C_LEN_ETHERNET_MINSIZE ( (C_LEN_ETHERMAC_HEADER) + \ (C_LEN_ETHERMTU_MINSIZE) )#define C_OFFSET_IPHEADER C_LEN_ETHERMAC_HEADER#define C_OFFSET_IPHEADER_IPPROTO 9#define C_OFFSET_TCPHEADER_TCPCS 16#define C_OFFSET_UDPHEADER_UDPCS 6#define C_OFFSET_IPPROTO ( (C_LEN_ETHERMAC_HEADER) + \ (C_OFFSET_IPHEADER_IPPROTO) )#define C_PROTO_ID_UDP 17 /* refer to RFC 790 or Stevens' */#define C_PROTO_ID_TCP 6 /* TCP/IP illustrated for details *//* 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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -