📄 nsm.h
字号:
/***********************************************************************h*** Name: nsm.h* * Description: NSM related data structures. ** Author: ** History: **h* **********************************************************************/#ifndef _NSMCONTEXT_H#define _NSMCONTEXT_H#define NsmGetTime() jiffies#define NsmZeroMemory(MacStats, Size) memset((PVOID) (MacStats), 0, (Size))#ifdef IOMAPPED_IO#define NsmRegRead8(pNsm, ioaddr, pRegVal) *(pRegVal) = inb((unsigned)(ioaddr))#define NsmRegRead16(pNsm, ioaddr, pRegVal) *(pRegVal) = inw((unsigned)(ioaddr))#define NsmRegRead32(pNsm, ioaddr, pRegVal) *(pRegVal) = inl((unsigned)(ioaddr))#define NsmRegWrite8(pNsm,ioaddr,data) outb((data),(unsigned)(ioaddr))#define NsmRegWrite16(pNsm,ioaddr,data) outw((data), (unsigned)(ioaddr))#define NsmRegWrite32(pNsm,ioaddr, data) outl((data),(unsigned)(ioaddr))#elif MEMMAPPED_IO#define NsmRegRead8(pNsm, ioaddr, pRegVal) *(pRegVal) = readb((unsigned)(ioaddr))#define NsmRegRead16(pNsm, ioaddr, pRegVal) *(pRegVal) = readw((unsigned)(ioaddr))#define NsmRegRead32(pNsm, ioaddr, pRegVal) *(pRegVal) = readl((unsigned)(ioaddr))#define NsmRegWrite8(pNsm,ioaddr,data) writeb((data),(unsigned)(ioaddr))#define NsmRegWrite16(pNsm,ioaddr,data) writew((data), (unsigned)(ioaddr))#define NsmRegWrite32(pNsm,ioaddr, data) writel((data),(unsigned)(ioaddr))#endif#define NsmCompare(SrcMac, DestMac, len) CMP_ETH_ADDR((SrcMac),(DestMac),(len))#define NsmResetComplete(pAdapter)#define NsmIndicateLinkStatus(pAdapter)/* Nsmcontext structure */typedef struct NsmInfo{ struct _AdapterContext AdpCtxt; struct enet_statistics *pAdapterStats; struct device *next; struct MacAddr *pMultiList; UINT FilterFlags; UINT status; struct device * dev;} NsmContext;typedef struct _EthHeader { UCHAR SrcAddr[6]; UCHAR DstAddr[6]; UINT size;} EthHeader;/* Tunable parameters */#define BUF_SIZE_MAX 2048 #define TX_QUEUE_SZ 200#define RX_QUEUE_SZ 200 #define TRUE 1#define FALSE 0#define DUPED 10#define DRV_NAME "ga622t"#define DEV_STARTED 1#define ETH_MAX_PKT_SIZE 2000#define MIN_PKT_SIZE 64#define MAC_ADDR_LEN 6#define PCI_DEVICE_ID_83820 0x0022#define BITNO 1#define PCI_IO_SIZE 256 #define PCI_MEM_SIZE 4096 #define DEV_INTERRUPTED 1#define DEV_SERVICED_INTERRUPT 0#define SLEEP_STATE 2#define HEAD_SPACE 2 #define REPL_BM 100#define NSMMAPPKTS#define NSMGETNUMFRAGS(NumFrags,pPkt) \ NumFrags=pPkt->NumFrags#define CACHE_LINE_SIZE 512#define NSM_OPEN 0x00000001/* Linux Network driver interface routines */extern int DrvProbe (struct device *dev);STATIC int DrvOpen (struct device *dev);STATIC int DrvClose (struct device *dev);STATIC int DrvSend (struct sk_buff *skb, struct device *dev);STATIC VOID DrvSetMulticastList (struct device *dev);int DrvSetMacAddress(struct device *dev, void *addr);STATIC int DrvIoctl( struct device *dev, struct ifreq *rq, int cmd );STATIC struct enet_statistics* DrvGetStatistics(struct device *dev);STATIC VOID DrvIsr (int irq, VOID *dev_id, struct pt_regs *regs);STATIC int ChangeMtu(struct device *dev, int NewMtu);/* Driver private routines */STATIC int init_module(VOID);STATIC VOID cleanup_module(VOID);STATIC VOID NsmTxCompleted(AdapterContext *pNsc, HsmTCB *TcbFirst, HsmTCB *TcbLast);STATIC VOID NsmRxPackets (AdapterContext *pNsc, HsmRCB *RcbStart, HsmRCB *RcbEnd, UCHAR Priority);STATIC UCHAR NsmMallocContiguous(VOID *pNsm, AddrStruct *pAddrStruct, USHORT Alignment, UINT Cached);STATIC VOID NsmFreeContiguous(VOID *pNsm, AddrStruct *pAddrStruct, UINT Cached);STATIC UCHAR NsmAllocatePacket(VOID *pNsm, HsmRCB *pRcb, AddrStruct *pAddr);STATIC VOID NsmDeAllocatePacket(VOID *pNsm, AddrStruct *pAddr, HsmRCB *pRcb );inline VOID * NsmMalloc(UINT size); STATIC UCHAR IsBrdCastOrMultiCast( struct device *dev, UCHAR *DestMac);VOID CreatePacketStruct(struct sk_buff *skb, PktStruct *pPkt);VOID CreatePacketInfo(struct sk_buff *skb, PktInfo *pPkt);inline UCHAR CMP_ETH_ADDR(UCHAR *SrcMac,UCHAR *DestMac, UINT Len);#define NsmMarkRcbFree(pRcb) \{ \ struct sk_buff *skb = ((struct sk_buff *)((pRcb)->pOsCtrlBlk)); \ if(((skb_datarefp(skb))->counter) == 1) \ (pRcb)->Status = RCB_FREE; \}#define NsmFree(ptr,size) kfree(ptr)inline VOID *NsmCreateLock(); inline VOID NsmAcquireLock(AdapterContext *pAdapter,VOID *LockId); inline VOID NsmReleaseLock(AdapterContext *pNsm, VOID *LockId); //void NsmIndicateLinkStatus(AdapterContext *pAdapter);#define NsmDestroyLock(pNsm, LockId) kfree(LockId)#define NsmAcquireDPCLock(pNsm, LockId)#define NsmReleaseDPCLock(pNsm, LockId)#define NsmSleep(pNsm, SleepVal) mdelay(SleepVal);#define NsmCopy(src, dest, MAC_ADDR_LEN) \ memcpy((dest),(src),MAC_ADDR_LEN) #define NsmDbgMsg(x) #define NsmDbgMsg1(x,a1) #define NsmDbgMsg2(x,a1,a2) #define NsmDbgMsg3(x,a1,a2,a3) #define NsmDbgMsg4(x,a1,a2,a3,a4)inline VOID PrintContents(UCHAR *start, UINT len);#endif _NSMCONTEXT_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -