📄 nsm.h
字号:
//******************************************************************************
//
// NSM.H
//
// Copyright (c) 2005 National Semiconductor Corporation.
// All Rights Reserved
//
// Linux core related defines for MacPhyter
//
//*****************************************************************************
#ifndef _NSM_H_
#define _NSM_H_
#include <nsmos.h>
#include <nsmdebug.h>
#include <mplclient.h>
#ifdef NSM_DIAG_MODE
#include <nsmapp.h>
#include <nsmdiag.h>
#endif //NSM_DIAG_MODE
// Our DMA capability mask
#define NSM_DMA_MASK (~0x0UL)
#define PCIPM 0x44
#define BAR_0 0
#define BAR_1 1
#define ENET_MTU 1500
#define ENET_BUFFER_SIZE 1536
#define ENET_HEADER_SIZE 14
#define CRC_LENGTH 4
// NSM Defaults for User Configurable values
#define NSM_DEFAULT_TXD_CNT 64
#define NSM_DEFAULT_TX_Q_CNT 1
#define NSM_DEFAULT_TX_FILL_THOLD 512
#define NSM_DEFAULT_TX_DRAIN_THOLD 64
#define NSM_DEFAULT_TX_MAX_DMA 256
#define NSM_DEFAULT_TX_MAX_INDY 1
#define NSM_DEFAULT_RXD_CNT 64
#define NSM_DEFAULT_RX_Q_CNT 1
#define NSM_DEFAULT_RX_DRAIN_THOLD 128
#define NSM_DEFAULT_RX_MAX_DMA 256
#define NSM_DEFAULT_RX_MAX_INDY 1
#define NSM_DEFAULT_RX_REPL 4
#define NSM_DEFAULT_LINK_MODE MPL_LINK_MODE_AUTO
#define NSM_DEFAULT_LINK_SPEED MPL_LINK_SPEED_HUNDREDMBPS
#define NSM_DEFAULT_LINK_DUPLEX MPL_LINK_DUPLEX_FULL
#define NSM_DEFAULT_LINK_PAUSE MPL_LINK_PAUSE_RECEIVE
#define NSM_DEFAULT_LINK_PAUSE_COUNTER 0x0004
#define NSM_DEFAULT_LINK_PAUSE_DALO 0
#define NSM_DEFAULT_LINK_PAUSE_DAHI 0
#define NSM_DEFAULT_LINK_PAUSE_STHI 0
#define NSM_DEFAULT_LINK_PAUSE_STHI 0
#define NSM_DEFAULT_INTR_TIMER_HOLD 100
#define NSM_DEFAULT_INTR_TX_HOLD 2
#define NSM_DEFAULT_INTR_RX_HOLD 2
#define NSM_DEFAULT_MODE MPL_MODE_NORMAL
//#define NSM_DEFAULT_MODE MPL_MODE_MONITOR
typedef struct NSM_CONTEXT {
// Pointer to next and prev context
struct _NSM_CONTEXT *next;
struct _NSM_CONTEXT *prev;
// Count of NSC Nics found so far
NS_UINT8 cardIndex;
// Driver details
NS_UINT verMajor; // Driver version - Major
NS_UINT verMinor; // Driver version - Minor
MPL_MODE opMode; // Current Operation Mode
// Pci stuff
struct pci_dev *pdev;
NS_UINT8 pciRevId;
NS_UINT16 pciSubVendorId;
NS_UINT16 pciSubDeviceId;
NS_UINT8 pciBusWidth;
// Base device Memory IO address
NS_VOID *regAddr;
// Irq
NS_UINT8 irq;
// MPL capabilities
MPL_CAPS mplCaps;
// Receive
NS_UINT16 rxBufferLen;
NS_UINT16 rxdCnt;
NS_UINT8 rxQCnt;
NS_UINT rxdEmpty;
NS_VOID *rxFrags;
MPL_PKT_FRAG *rxFragsHead;
MPL_PKT_FRAG *rxFragsTail;
spinlock_t rxLock;
// Transmit
spinlock_t txLock;
NS_UINT16 txdCnt;
NS_UINT8 txQCnt;
NS_UINT16 mtu;
// Link
MPL_LINK_NEGOTIATION linkMode;
MPL_LINK_SPEED linkSpeed;
MPL_LINK_DUPLEX linkDuplex;
NS_UINT linkPause;
MPL_LINK_STATUS linkStatus;
struct tasklet_struct linkMonTask;
spinlock_t linkLock;
// Intr
NS_UINT timerHold;
NS_UINT txHold;
NS_UINT rxHold;
// Power
NS_UINT wolModes;
// Stats
struct net_device_stats netStats;
// MPL context
NS_VOID *mplContext;
MPL_DEVICE_ID deviceId;
// Net stack context
struct net_device *netdev;
NS_BOOLEAN netdevReg;
// Diag related
#ifdef NSM_DIAG_MODE
MPL_LIST diagTxDoneList; // Tx done pkt list
MPL_LIST diagRxDoneList; // Rx done pkt list
MPL_LIST diagFreeList; // Free pkt list
NS_VOID *diagPkts;
// Diag Transmit
NS_UINT16 txBufferLen;
NS_VOID *txFrags;
MPL_PKT_FRAG *txFragsHead;
MPL_PKT_FRAG *txFragsTail;
NS_UINT diagStsQueueSize; // Size of status queue
DIAG_STATS diagStats; // Stats
#endif // NSM_DIAG_MODE
} NSM_CONTEXT;
// Exported functions
NS_SINT NsmProbe(struct pci_dev *pdev, const struct pci_device_id *id);
NS_SINT NsmSuspend(struct pci_dev *pdev, NS_UINT state);
NS_SINT NsmResume(struct pci_dev *pdev);
NS_VOID NsmRemove(struct pci_dev *pdev);
NS_SINT NsmOpen(struct net_device *netdev);
NS_SINT NsmXmit(struct sk_buff *skb, struct net_device *netdev);
NS_VOID NsmSetMulti(struct net_device *netdev);
struct net_device_stats * NsmStats(struct net_device *netdev);
NS_SINT NsmSetMac(struct net_device *netdev, void *p);
NS_SINT NsmIoctl(struct net_device *netdev, struct ifreq *ifr, NS_SINT cmd);
NS_SINT NsmChangeMtu(struct net_device *netdev, int new_mtu);
#ifdef L26
NS_SINT NsmIsr(NS_SINT irq, void *data, struct pt_regs *regs);
#else
NS_VOID NsmIsr(NS_SINT irq, void *data, struct pt_regs *regs);
#endif
NS_SINT NsmClose(struct net_device *netdev);
NS_BOOLEAN setupRxFrags(NSM_CONTEXT *adapter);
NS_VOID freeRxFrags(NSM_CONTEXT *adapter);
NS_VOID replenishTask(unsigned long data);
// Exported variables
extern char DP_driverVersionMaj; // Major Ver
extern char DP_driverVersionMin; // Minor Ver
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -