📄 skgeinit.h
字号:
* configured. *//* * Master/Slave Mode capabilities */#define SK_MS_CAP_AUTO (1<<0) /* Automatic resolution */#define SK_MS_CAP_MASTER (1<<1) /* This station is master */#define SK_MS_CAP_SLAVE (1<<2) /* This station is slave */#define SK_MS_CAP_INDETERMINATED (1<<3) /* Return value for virtual port if * multiple ports are differently * configured. *//* * Set Master/Slave Mode Parameter (and capabilities) */#define SK_MS_MODE_AUTO 1 /* Automatic resolution */#define SK_MS_MODE_MASTER 2 /* This station is master */#define SK_MS_MODE_SLAVE 3 /* This station is slave */#define SK_MS_MODE_INDETERMINATED 4 /* Return value for virtual port if * multiple ports are differently *//* * Master/Slave Status Parameter */#define SK_MS_STAT_UNSET 1 /* The MS status is never been determ*/#define SK_MS_STAT_MASTER 2 /* This station is master */#define SK_MS_STAT_SLAVE 3 /* This station is slave */#define SK_MS_STAT_FAULT 4 /* MS resolution failed */#define SK_MS_STAT_INDETERMINATED 5 /* Return value for virtual port if * multiple ports are differently *//* * defines for parameter 'Mode' when calling SkXmSetRxCmd() */#define SK_STRIP_FCS_ON (1<<0) /* Enable FCS stripping of rx frames */#define SK_STRIP_FCS_OFF (1<<1) /* Disable FCS stripping of rx frames */#define SK_STRIP_PAD_ON (1<<2) /* Enable pad byte stripping of rx f */#define SK_STRIP_PAD_OFF (1<<3) /* Disable pad byte stripping of rx f */#define SK_LENERR_OK_ON (1<<4) /* Don't chk fr for in range len error*/#define SK_LENERR_OK_OFF (1<<5) /* Check frames for in range len error*/#define SK_BIG_PK_OK_ON (1<<6) /* Don't set rcvError bit for big fr */#define SK_BIG_PK_OK_OFF (1<<7) /* Set rcvError bit for big frames */ /* * States of PState */#define SK_PRT_RESET 0 /* the port is reset */#define SK_PRT_STOP 1 /* the port is stopped (similar to sw reset) */#define SK_PRT_INIT 2 /* the port is initialized */#define SK_PRT_RUN 3 /* the port has an active link *//* * Default receive frame limit for Workaround of XMAC Errata */#define SK_DEF_RX_WA_LIM SK_CONSTU64(100)/* * Define link partner Status */#define SK_LIPA_UNKNOWN 0 /* Link partner is in unknown state */#define SK_LIPA_MANUAL 1 /* Link partner is in detected manual state */#define SK_LIPA_AUTO 2 /* Link partner is in autonegotiation state *//* * Define Maximum Restarts before restart is ignored (3com WA) */#define SK_MAX_LRESTART 3 /* Max. 3 times the link is restarted *//* * define max. autonegotiation timeouts before link detection in sense mode is * reset. */#define SK_MAX_ANEG_TO 10 /* Max. 10 times the sense mode is reset *//* structures *****************************************************************//* * Port Structure */typedef struct s_GePort {#ifndef SK_DIAG SK_TIMER PWaTimer; /* Workaround Timer */#endif SK_U64 PPrevShorts; /* Previous short Counter checking */ SK_U64 PPrevRx; /* Previous RxOk Counter checking */ SK_U64 PPrevFcs; /* Previous FCS Error Counter checking */ SK_U64 PRxLim; /* Previous RxOk Counter checking */ SK_U64 LastOctets; /* For half duplex hang check */#ifndef SK_DIAG SK_TIMER HalfDupChkTimer;#endif int PLinkResCt; /* Link Restart Counter */ int PAutoNegTimeOut;/* AutoNegotiation timeout current value */ int PAutoNegTOCt; /* AutoNeg Timeout Counter */ int PRxQSize; /* Port Rx Queue Size in kB */ int PXSQSize; /* Port Synchronous Transmit Queue Size in kB */ int PXAQSize; /* Port Asynchronous Transmit Queue Size in kB*/ SK_U32 PRxQRamStart; /* Receive Queue RAM Buffer Start Address */ SK_U32 PRxQRamEnd; /* Receive Queue RAM Buffer End Address */ SK_U32 PXsQRamStart; /* Sync Tx Queue RAM Buffer Start Address */ SK_U32 PXsQRamEnd; /* Sync Tx Queue RAM Buffer End Address */ SK_U32 PXaQRamStart; /* Async Tx Queue RAM Buffer Start Address */ SK_U32 PXaQRamEnd; /* Async Tx Queue RAM Buffer End Address */ int PRxQOff; /* Rx Queue Address Offset */ int PXsQOff; /* Synchronous Tx Queue Address Offset */ int PXaQOff; /* Asynchronous Tx Queue Address Offset */ int PhyType; /* PHY used on this port */ SK_U16 PhyAddr; /* MDIO/MDC PHY address */ SK_U16 PRxCmd; /* Port Receive Command Configuration Value */ SK_U16 PIsave; /* Saved Interrupt status word */ SK_U16 PSsave; /* Saved PHY status word */ SK_U16 Align01; SK_BOOL PHWLinkUp; /* The hardware Link is up (wireing) */ SK_BOOL PState; /* Is port initialized ? */ SK_BOOL PLinkBroken; /* Is Link broken ? */ SK_BOOL PCheckPar; /* Do we check for parity errors ? */ SK_BOOL HalfDupTimerActive; SK_U8 PLinkCap; /* Link Capabilities */ SK_U8 PLinkModeConf; /* Link Mode configured */ SK_U8 PLinkMode; /* Link Mode currently used */ SK_U8 PLinkModeStatus;/* Link Mode Status */ SK_U8 PFlowCtrlCap; /* Flow Control Capabilities */ SK_U8 PFlowCtrlMode; /* Flow Control Mode */ SK_U8 PFlowCtrlStatus;/* Flow Control Status */ SK_U8 PMSCap; /* Master/Slave Capabilities */ SK_U8 PMSMode; /* Master/Slave Mode */ SK_U8 PMSStatus; /* Master/Slave Status */ SK_U8 PAutoNegFail; /* Autonegotiation fail flag */ SK_U8 PLipaAutoNeg; /* Autonegotiation possible with Link Partner */ SK_U8 Align02;} SK_GEPORT;/* * Gigabit Ethernet Initalization Struct * (has to be included in the adapter context) */typedef struct s_GeInit { int GIMacsFound; /* Number of MACs found on this adapter */ int GIPciHwRev; /* PCI HW Revision Number */ SK_U32 GIRamOffs; /* RAM Address Offset for addr calculation */ int GIRamSize; /* The RAM size of the adapter in kB */ int GIHstClkFact; /* Host Clock Factor (62.5 / HstClk * 100) */ int GIPortUsage; /* driver port usage: SK_RED_LINK/SK_MUL_LINK */ SK_U32 GIPollTimerVal; /* Descriptor Poll Timer Init Val in clk ticks*/ int GILevel; /* Initialization Level Completed */ SK_GEPORT GP[SK_MAX_MACS];/* Port Dependent Information */ SK_BOOL GIAnyPortAct; /* Is True if one or more port is initialized */ SK_U8 Align01; SK_U16 Align02;} SK_GEINIT;/* * Define the error numbers and messages for xmac_ii.c and skgeinit.c */#define SKERR_HWI_E001 (SK_ERRBASE_HWINIT)#define SKERR_HWI_E001MSG "SkXmClrExactAddr() has got illegal parameters"#define SKERR_HWI_E002 (SKERR_HWI_E001+1)#define SKERR_HWI_E002MSG "SkGeInit() Level 1 call missing"#define SKERR_HWI_E003 (SKERR_HWI_E002+1)#define SKERR_HWI_E003MSG "SkGeInit() called with illegal init Level"#define SKERR_HWI_E004 (SKERR_HWI_E003+1)#define SKERR_HWI_E004MSG "SkGeInitPort() Queue size illegal configured"#define SKERR_HWI_E005 (SKERR_HWI_E004+1)#define SKERR_HWI_E005MSG "SkGeInitPort() cannot init running ports"#define SKERR_HWI_E006 (SKERR_HWI_E005+1)#define SKERR_HWI_E006MSG "SkGeXmInit(): PState does not match HW state"#define SKERR_HWI_E007 (SKERR_HWI_E006+1)#define SKERR_HWI_E007MSG "SkXmInitDupMd() called with invalid Dup Mode"#define SKERR_HWI_E008 (SKERR_HWI_E007+1)#define SKERR_HWI_E008MSG "SkXmSetRxCmd() called with invalid Mode"#define SKERR_HWI_E009 (SKERR_HWI_E008+1)#define SKERR_HWI_E009MSG "SkGeCfgSync() called although PXSQSize zero"#define SKERR_HWI_E010 (SKERR_HWI_E009+1)#define SKERR_HWI_E010MSG "SkGeCfgSync() called with invalid parameters"#define SKERR_HWI_E011 (SKERR_HWI_E010+1)#define SKERR_HWI_E011MSG "SkGeInitPort() Receive Queue Size to small"#define SKERR_HWI_E012 (SKERR_HWI_E011+1)#define SKERR_HWI_E012MSG "SkGeInitPort() invalid Queue Size specified"#define SKERR_HWI_E013 (SKERR_HWI_E012+1)#define SKERR_HWI_E013MSG "SkGeInitPort() cfg changed for running queue"#define SKERR_HWI_E014 (SKERR_HWI_E013+1)#define SKERR_HWI_E014MSG "SkGeInitPort() unknown GIPortUsage specified"#define SKERR_HWI_E015 (SKERR_HWI_E014+1)#define SKERR_HWI_E015MSG "Illegal Link mode parameter"#define SKERR_HWI_E016 (SKERR_HWI_E015+1)#define SKERR_HWI_E016MSG "Illegal Flow control mode parameter"#define SKERR_HWI_E017 (SKERR_HWI_E016+1)#define SKERR_HWI_E017MSG "Illegal value specified for GIPollTimerVal"#define SKERR_HWI_E018 (SKERR_HWI_E017+1)#define SKERR_HWI_E018MSG "FATAL: SkGeStopPort() does not terminate"#define SKERR_HWI_E019 (SKERR_HWI_E018+1)#define SKERR_HWI_E019MSG ""/* function prototypes ********************************************************/#ifndef SK_KR_PROTO/* * public functions in skgeinit.c */extern void SkGePollRxD( SK_AC *pAC, SK_IOC IoC, int Port, SK_BOOL PollRxD);extern void SkGePollTxD( SK_AC *pAC, SK_IOC IoC, int Port, SK_BOOL PollTxD);extern void SkGeYellowLED( SK_AC *pAC, SK_IOC IoC, int State);extern int SkGeCfgSync( SK_AC *pAC, SK_IOC IoC, int Port, SK_U32 IntTime, SK_U32 LimCount, int SyncMode);extern void SkGeLoadLnkSyncCnt( SK_AC *pAC, SK_IOC IoC, int Port, SK_U32 CntVal);extern void SkGeStopPort( SK_AC *pAC, SK_IOC IoC, int Port, int Dir, int RstMode);extern int SkGeInit( SK_AC *pAC, SK_IOC IoC, int Level);extern void SkGeDeInit( SK_AC *pAC, SK_IOC IoC);extern int SkGeInitPort( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkGeXmitLED( SK_AC *pAC, SK_IOC IoC, int Led, int Mode);extern void SkGeInitRamIface( SK_AC *pAC, SK_IOC IoC);/* * public functions in skxmac2.c */extern void SkXmSetRxCmd( SK_AC *pAC, SK_IOC IoC, int Port, int Mode);extern void SkXmClrExactAddr( SK_AC *pAC, SK_IOC IoC, int Port, int StartNum, int StopNum);extern void SkXmFlushTxFifo( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkXmFlushRxFifo( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkXmSoftRst( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkXmHardRst( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkXmInitMac( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkXmInitDupMd( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkXmInitPauseMd( SK_AC *pAC, SK_IOC IoC, int Port);extern int SkXmAutoNegDone( SK_AC *pAC, SK_IOC IoC, int Port);extern void SkXmAutoNegLipaXmac( SK_AC *pAC, SK_IOC IoC, int Port, SK_U16 IStatus);extern void SkXmAutoNegLipaBcom( SK_AC *pAC, SK_IOC IoC, int Port, SK_U16 IStatus);extern void SkXmAutoNegLipaLone( SK_AC *pAC, SK_IOC IoC, int Port, SK_U16 IStatus);extern void SkXmIrq( SK_AC *pAC, SK_IOC IoC, int Port, SK_U16 IStatus);#else /* SK_KR_PROTO *//* * public functions in skgeinit.c */extern void SkGePollRxD();extern void SkGePollTxD();extern void SkGeYellowLED();extern int SkGeCfgSync();extern void SkGeLoadLnkSyncCnt();extern void SkGeStopPort();extern int SkGeInit();extern void SkGeDeInit();extern int SkGeInitPort();extern void SkGeXmitLED();extern void SkGeInitRamIface();/* * public functions in skxmac2.c */extern void SkXmSetRxCmd();extern void SkXmClrExactAddr();extern void SkXmFlushTxFifo();extern void SkXmFlushRxFifo();extern void SkXmSoftRst();extern void SkXmHardRst();extern void SkXmInitMac();extern void SkXmInitDupMd();extern void SkXmInitPauseMd();extern int SkXmAutoNegDone();extern void SkXmAutoNegLipa();extern void SkXmIrq();#endif /* SK_KR_PROTO */#ifdef __cplusplus}#endif /* __cplusplus */#endif /* __INC_SKGEINIT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -