⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nsm.h

📁 NATIONAL公司DP83816芯片Linux下驱动
💻 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 + -