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

📄 skdrv2nd.h

📁 这是Marvell Technology Group Ltd. 4355 (rev 12)网卡在linux下的驱动程序源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
			 (IS_R1_F)   | (IS_R2_F)  | \			 (IS_XS1_F)  | (IS_XA1_F) | \			 (IS_XS2_F)  | (IS_XA2_F))#define TX_COMPL_IRQS	((IS_XS1_B)  | (IS_XS1_F) | \			 (IS_XA1_B)  | (IS_XA1_F) | \			 (IS_XS2_B)  | (IS_XS2_F) | \			 (IS_XA2_B)  | (IS_XA2_F))#define NAPI_DRV_IRQS	((IS_R1_F)   | (IS_R2_F) | \			 (IS_XS1_F)  | (IS_XA1_F)| \			 (IS_XS2_F)  | (IS_XA2_F))#define Y2_DRIVER_IRQS	((Y2_IS_STAT_BMU) | (Y2_IS_IRQ_SW) | (Y2_IS_POLL_CHK))#define SPECIAL_IRQS	((IS_HW_ERR)    |(IS_I2C_READY)  | \			 (IS_EXT_REG)   |(IS_TIMINT)     | \			 (IS_PA_TO_RX1) |(IS_PA_TO_RX2)  | \			 (IS_PA_TO_TX1) |(IS_PA_TO_TX2)  | \			 (IS_MAC1)      |(IS_LNK_SYNC_M1)| \			 (IS_MAC2)      |(IS_LNK_SYNC_M2)| \			 (IS_R1_C)      |(IS_R2_C)       | \			 (IS_XS1_C)     |(IS_XA1_C)      | \			 (IS_XS2_C)     |(IS_XA2_C))#define Y2_SPECIAL_IRQS	((Y2_IS_HW_ERR)   |(Y2_IS_ASF)      | \			 (Y2_IS_TWSI_RDY) |(Y2_IS_TIMINT)   | \			 (Y2_IS_IRQ_PHY2) |(Y2_IS_IRQ_MAC2) | \			 (Y2_IS_CHK_RX2)  |(Y2_IS_CHK_TXS2) | \			 (Y2_IS_CHK_TXA2) |(Y2_IS_IRQ_PHY1) | \			 (Y2_IS_IRQ_MAC1) |(Y2_IS_CHK_RX1)  | \			 (Y2_IS_CHK_TXS1) |(Y2_IS_CHK_TXA1))#define IRQ_MASK	((IS_IRQ_SW)    | \			 (IS_R1_F)      |(IS_R2_F)     | \			 (IS_XS1_F)     |(IS_XA1_F)    | \			 (IS_XS2_F)     |(IS_XA2_F)    | \			 (IS_HW_ERR)    |(IS_I2C_READY)| \			 (IS_EXT_REG)   |(IS_TIMINT)   | \			 (IS_PA_TO_RX1) |(IS_PA_TO_RX2)| \			 (IS_PA_TO_TX1) |(IS_PA_TO_TX2)| \			 (IS_MAC1)      |(IS_MAC2)     | \			 (IS_R1_C)      |(IS_R2_C)     | \			 (IS_XS1_C)     |(IS_XA1_C)    | \			 (IS_XS2_C)     |(IS_XA2_C))#define Y2_IRQ_MASK	((Y2_DRIVER_IRQS) | (Y2_SPECIAL_IRQS))#define IRQ_HWE_MASK	(IS_ERR_MSK)		/* enable all HW irqs */#define Y2_IRQ_HWE_MASK	(Y2_HWE_ALL_MSK)	/* enable all HW irqs */typedef struct s_DevNet DEV_NET;struct s_DevNet {	struct		proc_dir_entry *proc;	int		PortNr;	int		NetNr;	char		InitialDevName[20];	char		CurrentName[20];	SK_BOOL		NetConsoleMode;#ifdef Y2_RECOVERY	struct 		timer_list KernelTimer;	/* Kernel timer struct  */	int		TransmitTimeoutTimer; 	/* Transmit timer       */	SK_BOOL		TimerExpired;		/* Transmit timer       */	SK_BOOL		InRecover;		/* Recover flag		*/#ifdef Y2_RX_CHECK	SK_U32 		PreviousMACFifoRP;	/* Backup of the FRP    */	SK_U32 		PreviousMACFifoRLev;	/* Backup of the FRL    */	SK_U32 		PreviousRXFifoRP;	/* Backup of the RX FRP */	SK_U8 		PreviousRXFifoRLev;	/* Backup of the RX FRL */	SK_U32		LastJiffies;		/* Backup of the jiffies*/#endif#endif	SK_AC		*pAC;	struct 		timer_list ProcfsTimer;	/* Procfs timer struct  */#ifdef USE_ASF_DASH_FW	struct 		timer_list LLCTimer;	/* LLC timer struct  */	struct 		timer_list WakeupTimer;	/* Wakeup packet timer struct  */#endif};  /******************************************************************************* * * Rx/Tx Port structures * ******************************************************************************/typedef struct s_TxPort	TX_PORT;struct s_TxPort {                       /* the transmit descriptor rings */	caddr_t         pTxDescrRing;   /* descriptor area memory        */	SK_U64          VTxDescrRing;   /* descr. area bus virt. addr.   */	TXD            *pTxdRingHead;   /* Head of Tx rings              */	TXD            *pTxdRingTail;   /* Tail of Tx rings              */	TXD            *pTxdRingPrev;   /* descriptor sent previously    */	int             TxdRingPrevFree;/* previously # of free entrys   */	int             TxdRingFree;    /* # of free entrys              */	spinlock_t      TxDesRingLock;  /* serialize descriptor accesses */	SK_IOC		HwAddr;         /* bmu registers address         */	int             PortIndex;      /* index number of port (0 or 1) */	SK_PACKET      *TransmitPacketTable;	SK_LE_TABLE     TxALET;         /* tx (async) list element table */	SK_LE_TABLE     TxSLET;         /* tx (sync) list element table  */	SK_PKT_QUEUE    TxQ_free;	SK_PKT_QUEUE    TxAQ_waiting;	SK_PKT_QUEUE    TxSQ_waiting;	SK_PKT_QUEUE    TxAQ_working;	SK_PKT_QUEUE    TxSQ_working;	unsigned	LastDone;};typedef struct s_RxPort	RX_PORT;struct s_RxPort {                       /* the receive descriptor rings  */	caddr_t         pRxDescrRing;   /* descriptor area memory        */	SK_U64          VRxDescrRing;   /* descr. area bus virt. addr.   */	RXD            *pRxdRingHead;   /* Head of Rx rings              */	RXD            *pRxdRingTail;   /* Tail of Rx rings              */	RXD            *pRxdRingPrev;   /* descr given to BMU previously */	int             RxdRingFree;    /* # of free entrys              */	spinlock_t      RxDesRingLock;  /* serialize descriptor accesses */	int             RxFillLimit;    /* limit for buffers in ring     */	SK_IOC          HwAddr;         /* bmu registers address         */	int             PortIndex;      /* index number of port (0 or 1) */	SK_BOOL         UseRxCsum;      /* use Rx checksumming (yes/no)  */	SK_PACKET      *ReceivePacketTable;	SK_LE_TABLE     RxLET;          /* rx list element table         */	SK_PKT_QUEUE    RxQ_working;	SK_PKT_QUEUE    RxQ_waiting;	int             RxBufSize;};/******************************************************************************* * * Interrupt masks used in combination with interrupt moderation * ******************************************************************************/#define IRQ_EOF_AS_TX     ((IS_XA1_F)     | (IS_XA2_F))#define IRQ_EOF_SY_TX     ((IS_XS1_F)     | (IS_XS2_F))#define IRQ_MASK_TX_ONLY  ((IRQ_EOF_AS_TX)| (IRQ_EOF_SY_TX))#define IRQ_MASK_RX_ONLY  ((IS_R1_F)      | (IS_R2_F))#define IRQ_MASK_SP_ONLY  (SPECIAL_IRQS)#define IRQ_MASK_TX_RX    ((IRQ_MASK_TX_ONLY)| (IRQ_MASK_RX_ONLY))#define IRQ_MASK_SP_RX    ((SPECIAL_IRQS)    | (IRQ_MASK_RX_ONLY))#define IRQ_MASK_SP_TX    ((SPECIAL_IRQS)    | (IRQ_MASK_TX_ONLY))#define IRQ_MASK_RX_TX_SP ((SPECIAL_IRQS)    | (IRQ_MASK_TX_RX))#define IRQ_MASK_Y2_TX_ONLY  (Y2_IS_STAT_BMU)#define IRQ_MASK_Y2_RX_ONLY  (Y2_IS_STAT_BMU)#define IRQ_MASK_Y2_SP_ONLY  (SPECIAL_IRQS)#define IRQ_MASK_Y2_TX_RX    ((IRQ_MASK_TX_ONLY)| (IRQ_MASK_RX_ONLY))#define IRQ_MASK_Y2_SP_RX    ((SPECIAL_IRQS)    | (IRQ_MASK_RX_ONLY))#define IRQ_MASK_Y2_SP_TX    ((SPECIAL_IRQS)    | (IRQ_MASK_TX_ONLY))#define IRQ_MASK_Y2_RX_TX_SP ((SPECIAL_IRQS)    | (IRQ_MASK_TX_RX))/******************************************************************************* * * Defines and typedefs regarding interrupt moderation * ******************************************************************************/#define C_INT_MOD_NONE			1#define C_INT_MOD_STATIC		2#define C_INT_MOD_DYNAMIC		4#define C_CLK_FREQ_GENESIS		 53215000 /* or:  53.125 MHz */#define C_CLK_FREQ_YUKON		 78215000 /* or:  78.125 MHz */#define C_CLK_FREQ_YUKON_EC		125000000 /* or: 125.000 MHz */#define C_Y2_INTS_PER_SEC_DEFAULT	5000 #define C_INTS_PER_SEC_DEFAULT		2000 #define C_INT_MOD_IPS_LOWER_RANGE	30        /* in IRQs/second */#define C_INT_MOD_IPS_UPPER_RANGE	40000     /* in IRQs/second */#define C_TX_INT_MOD_UPPER_RANGE	4095     /* in IRQs/second */typedef struct s_DynIrqModInfo {	SK_U64     PrevPort0RxIntrCts;	SK_U64     PrevPort1RxIntrCts;	SK_U64     PrevPort0TxIntrCts;	SK_U64     PrevPort1TxIntrCts;	SK_U64     PrevPort0StatusLeIntrCts;	SK_U64     PrevPort1StatusLeIntrCts;	int        MaxModIntsPerSec;            /* Moderation Threshold   */	int        MaxModIntsPerSecUpperLimit;  /* Upper limit for DIM    */	int        MaxModIntsPerSecLowerLimit;  /* Lower limit for DIM    */	long       MaskIrqModeration;           /* IRQ Mask (eg. 'TxRx')  */	int        IntModTypeSelect;            /* Type  (eg. 'dynamic')  */	int        DynIrqModSampleInterval;     /* expressed in seconds!  */	SK_TIMER   ModTimer;                    /* Timer for dynamic mod. */} DIM_INFO;/******************************************************************************* * * Defines and typedefs regarding wake-on-lan * ******************************************************************************/typedef struct s_WakeOnLanInfo {	SK_U32     SupportedWolOptions;         /* e.g. WAKE_PHY...         */	SK_U32     ConfiguredWolOptions;        /* e.g. WAKE_PHY...         */} WOL_INFO;#define SK_ALLOC_IRQ	0x00000001#define	DIAG_ACTIVE		1#define	DIAG_NOTACTIVE		0/**************************************************************************** * * Per board structure / Adapter Context structure: * Contains all 'per device' necessary handles, flags, locks etc.: * ******************************************************************************/struct s_AC  {	SK_GEINIT                GIni;          /* GE init struct             */	SK_PNMI                  Pnmi;          /* PNMI data struct           */	SK_VPD                   vpd;           /* vpd data struct            */	SK_QUEUE                 Event;         /* Event queue                */	SK_HWT                   Hwt;           /* Hardware Timer ctrl struct */	SK_TIMCTRL               Tim;           /* Software Timer ctrl struct */	SK_I2C                   I2c;           /* I2C relevant data structure*/	SK_ADDR                  Addr;          /* for Address module         */	SK_CSUM                  Csum;          /* for checksum module        */	SK_RLMT                  Rlmt;          /* for rlmt module            */#ifdef SK_ASF	SK_ASF_DATA              AsfData;	unsigned char            IpAddr[4];#endif#ifdef USE_ASF_DASH_FW	unsigned char            IpV6Addr[16*7];	unsigned int             ForceFWIPUpdate;	unsigned int             RecvNewPattern;	DRIVER_INTERFACE         NewPatternDef;	SK_U32                   RamAddr;	int                      RamSelect;	unsigned int             ReturningFromSuspend; /* Just resumed? Reset by ASF */	unsigned int             ReceivedPacket;	unsigned int             SendWolPattern;	unsigned int             SendLLCPacket;	unsigned char            SuspendLinkSpeed;	unsigned char            SuspendDuplexMode;	unsigned char            LinkSpeed;	unsigned char            LinkSpeedSet;	unsigned char            SetIFFRunning;#endif	spinlock_t               SlowPathLock;  /* Normal IRQ lock            */	spinlock_t               InitLock;	/* Init lock                  */	spinlock_t               TxQueueLock;   /* TX Queue lock              */	SK_PNMI_STRUCT_DATA      PnmiStruct;    /* struct for all Pnmi-Data   */	int                      RlmtMode;      /* link check mode to set     */	int                      RlmtNets;      /* Number of nets             */	SK_IOC                   IoBase;        /* register set of adapter    */	int                      BoardLevel;    /* level of hw init (0-2)     */	char                     DeviceStr[80]; /* adapter string from vpd    */	SK_U32                   AllocFlag;     /* alloc flag of resources    */	struct pci_dev          *PciDev;        /* for access to pci cfg space*/	SK_U32                   PciDevId;      /* pci device id              */	struct SK_NET_DEVICE    *dev[2];        /* pointer to device struct   */	char                     Name[30];      /* driver name                */	struct SK_NET_DEVICE    *Next;          /* link all devs for cleanup  */	struct net_device_stats  stats;         /* linux 'netstat -i' stats   */	int                      Index;         /* internal board idx number  */	int                      RxQueueSize;   /* memory used for RX queue   */	int                      TxSQueueSize;  /* memory used for TXS queue  */	int                      TxAQueueSize;  /* memory used for TXA queue  */	int                      PromiscCount;  /* promiscuous mode counter   */	int                      AllMultiCount; /* allmulticast mode counter  */	int                      MulticCount;   /* number of MC addresses used*/	int                      HWRevision;	/* Hardware revision          */	int                      ActivePort;	/* the active XMAC port       */	int                      MaxPorts;      /* number of activated ports  */	int                      TxDescrPerRing;/* # of descriptors TX ring   */	int                      RxDescrPerRing;/* # of descriptors RX ring   */	caddr_t                  pDescrMem;     /* Ptr to the descriptor area */	dma_addr_t               pDescrMemDMA;  /* PCI DMA address of area    */	SK_U32			 PciState[16];  /* PCI state */	TX_PORT                  TxPort[SK_MAX_MACS][2];	RX_PORT                  RxPort[SK_MAX_MACS];	SK_LE_TABLE              StatusLETable; 	unsigned                 SizeOfAlignedLETables;		spinlock_t               SetPutIndexLock;	int                      MaxUnusedRxLeWorking;        int                      InterfaceUp[2];	unsigned int             CsOfs1;        /* for checksum calculation   */	unsigned int             CsOfs2;        /* for checksum calculation   */	SK_U32                   CsOfs;         /* for checksum calculation   */	SK_BOOL                  CheckQueue;    /* check event queue soon     */	DIM_INFO                 DynIrqModInfo; /* all data related to IntMod */	WOL_INFO                 WolInfo;       /* all info regarding WOL     */	int                      ChipsetType;   /* 0=GENESIS; 1=Yukon         */	SK_BOOL                  LowLatency;    /* LowLatency optimization on?*/	SK_U32                   TxModeration;  /* TxModeration optimization  */	SK_U32                   DiagModeActive;/* is diag active?            */	SK_BOOL                  DiagFlowCtrl;  /* for control purposes       */	SK_PNMI_STRUCT_DATA      PnmiBackup;    /* backup structure for PNMI  */	SK_BOOL                  WasIfUp[SK_MAX_MACS];	char                     *pVirtMemAddr;#ifdef USE_TIST_FOR_RESET	int			 AdapterResetState;	SK_U32			 MinTistLo;	SK_U32			 MinTistHi;#endif#ifdef Y2_RECOVERY	int                      LastPort;       /* port for curr. handled rx */        int                      LastOpc;        /* last rx LEs opcode	      */#endif#ifdef Y2_SYNC_CHECK	unsigned long            FramesWithoutSyncCheck; /* since last check  */#endif	unsigned int             InterruptSource;};#endif/******************************************************************************* * * End of file * ******************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -