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

📄 skgepnmi.c

📁 linux和2410结合开发 用他可以生成2410所需的zImage文件
💻 C
📖 第 1 页 / 共 5 页
字号:
		SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlCapability),		SK_PNMI_RO, MacPrivateConf, 0},	{OID_SKGE_FLOWCTRL_MODE,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_CONF),		SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlMode),		SK_PNMI_RW, MacPrivateConf, 0},	{OID_SKGE_FLOWCTRL_STATUS,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_CONF),		SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlStatus),		SK_PNMI_RO, MacPrivateConf, 0},	{OID_SKGE_PHY_OPERATION_CAP,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_CONF),		SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationCapability),		SK_PNMI_RO, MacPrivateConf, 0},	{OID_SKGE_PHY_OPERATION_MODE,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_CONF),		SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationMode),		SK_PNMI_RW, MacPrivateConf, 0},	{OID_SKGE_PHY_OPERATION_STATUS,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_CONF),		SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationStatus),		SK_PNMI_RO, MacPrivateConf, 0},	{OID_SKGE_TRAP,		1,		0,		SK_PNMI_MAI_OFF(Trap),		SK_PNMI_RO, General, 0},	{OID_SKGE_TRAP_NUMBER,		1,		0,		SK_PNMI_MAI_OFF(TrapNumber),		SK_PNMI_RO, General, 0},	{OID_SKGE_RLMT_MODE,		1,		0,		SK_PNMI_MAI_OFF(RlmtMode),		SK_PNMI_RW, Rlmt, 0},	{OID_SKGE_RLMT_PORT_NUMBER,		1,		0,		SK_PNMI_MAI_OFF(RlmtPortNumber),		SK_PNMI_RO, Rlmt, 0},	{OID_SKGE_RLMT_PORT_ACTIVE,		1,		0,		SK_PNMI_MAI_OFF(RlmtPortActive),		SK_PNMI_RO, Rlmt, 0},	{OID_SKGE_RLMT_PORT_PREFERRED,		1,		0,		SK_PNMI_MAI_OFF(RlmtPortPreferred),		SK_PNMI_RW, Rlmt, 0},	{OID_SKGE_RLMT_CHANGE_CTS,		1,		0,		SK_PNMI_MAI_OFF(RlmtChangeCts),		SK_PNMI_RO, Rlmt, 0},	{OID_SKGE_RLMT_CHANGE_TIME,		1,		0,		SK_PNMI_MAI_OFF(RlmtChangeTime),		SK_PNMI_RO, Rlmt, 0},	{OID_SKGE_RLMT_CHANGE_ESTIM,		1,		0,		SK_PNMI_MAI_OFF(RlmtChangeEstimate),		SK_PNMI_RO, Rlmt, 0},	{OID_SKGE_RLMT_CHANGE_THRES,		1,		0,		SK_PNMI_MAI_OFF(RlmtChangeThreshold),		SK_PNMI_RW, Rlmt, 0},	{OID_SKGE_RLMT_PORT_INDEX,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_RLMT),		SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtIndex),		SK_PNMI_RO, RlmtStat, 0},	{OID_SKGE_RLMT_STATUS,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_RLMT),		SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtStatus),		SK_PNMI_RO, RlmtStat, 0},	{OID_SKGE_RLMT_TX_HELLO_CTS,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_RLMT),		SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtTxHelloCts),		SK_PNMI_RO, RlmtStat, 0},	{OID_SKGE_RLMT_RX_HELLO_CTS,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_RLMT),		SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtRxHelloCts),		SK_PNMI_RO, RlmtStat, 0},	{OID_SKGE_RLMT_TX_SP_REQ_CTS,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_RLMT),		SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtTxSpHelloReqCts),		SK_PNMI_RO, RlmtStat, 0},	{OID_SKGE_RLMT_RX_SP_CTS,		SK_PNMI_MAC_ENTRIES,		sizeof(SK_PNMI_RLMT),		SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtRxSpHelloCts),		SK_PNMI_RO, RlmtStat, 0},	{OID_SKGE_RLMT_MONITOR_NUMBER,		1,		0,		SK_PNMI_MAI_OFF(RlmtMonitorNumber),		SK_PNMI_RO, General, 0},	{OID_SKGE_RLMT_MONITOR_INDEX,		SK_PNMI_MONITOR_ENTRIES,		sizeof(SK_PNMI_RLMT_MONITOR),		SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorIndex),		SK_PNMI_RO, Monitor, 0},	{OID_SKGE_RLMT_MONITOR_ADDR,		SK_PNMI_MONITOR_ENTRIES,		sizeof(SK_PNMI_RLMT_MONITOR),		SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorAddr),		SK_PNMI_RO, Monitor, 0},	{OID_SKGE_RLMT_MONITOR_ERRS,		SK_PNMI_MONITOR_ENTRIES,		sizeof(SK_PNMI_RLMT_MONITOR),		SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorErrorCts),		SK_PNMI_RO, Monitor, 0},	{OID_SKGE_RLMT_MONITOR_TIMESTAMP,		SK_PNMI_MONITOR_ENTRIES,		sizeof(SK_PNMI_RLMT_MONITOR),		SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorTimestamp),		SK_PNMI_RO, Monitor, 0},	{OID_SKGE_RLMT_MONITOR_ADMIN,		SK_PNMI_MONITOR_ENTRIES,		sizeof(SK_PNMI_RLMT_MONITOR),		SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorAdmin),		SK_PNMI_RW, Monitor, 0},	{OID_SKGE_MTU,		1,		0,		SK_PNMI_MAI_OFF(MtuSize),		SK_PNMI_RW, MacPrivateConf, 0},};/* * Table for hardware register saving on resets and port switches */static const SK_PNMI_STATADDR StatAddress[SK_PNMI_MAX_IDX] = {	/*  0 */	{TRUE, XM_TXF_OK},	/*  1 */	{TRUE, 0},	/*  2 */	{FALSE, 0},	/*  3 */	{TRUE, XM_TXF_BC_OK},	/*  4 */	{TRUE, XM_TXF_MC_OK},	/*  5 */	{TRUE, XM_TXF_UC_OK},	/*  6 */	{TRUE, XM_TXF_LONG},	/*  7 */	{TRUE, XM_TXE_BURST},	/*  8 */	{TRUE, XM_TXF_MPAUSE},	/*  9 */	{TRUE, XM_TXF_MCTRL},	/* 10 */	{TRUE, XM_TXF_SNG_COL},	/* 11 */	{TRUE, XM_TXF_MUL_COL},	/* 12 */	{TRUE, XM_TXF_ABO_COL},	/* 13 */	{TRUE, XM_TXF_LAT_COL},	/* 14 */	{TRUE, XM_TXF_DEF},	/* 15 */	{TRUE, XM_TXF_EX_DEF},	/* 16 */	{TRUE, XM_TXE_FIFO_UR},	/* 17 */	{TRUE, XM_TXE_CS_ERR},	/* 18 */	{FALSE, 0},	/* 19 */	{FALSE, 0},	/* 20 */	{TRUE, XM_TXF_64B},	/* 21 */	{TRUE, XM_TXF_127B},	/* 22 */	{TRUE, XM_TXF_255B},	/* 23 */	{TRUE, XM_TXF_511B},	/* 24 */	{TRUE, XM_TXF_1023B},	/* 25 */	{TRUE, XM_TXF_MAX_SZ},	/* 26 */	{FALSE, 0},	/* 27 */	{FALSE, 0},	/* 28 */	{FALSE, 0},	/* 29 */	{FALSE, 0},	/* 30 */	{FALSE, 0},	/* 31 */	{FALSE, 0},	/* 32 */	{TRUE, XM_RXF_OK},	/* 33 */	{TRUE, 0},	/* 34 */	{FALSE, 0},	/* 35 */	{TRUE, XM_RXF_BC_OK},	/* 36 */	{TRUE, XM_RXF_MC_OK},	/* 37 */	{TRUE, XM_RXF_UC_OK},	/* 38 */	{TRUE, XM_RXF_MPAUSE},	/* 39 */	{TRUE, XM_RXF_MCTRL},	/* 40 */	{TRUE, XM_RXF_INV_MP},	/* 41 */	{TRUE, XM_RXF_INV_MOC},	/* 42 */	{TRUE, XM_RXE_BURST},	/* 43 */	{TRUE, XM_RXE_FMISS},	/* 44 */	{TRUE, XM_RXF_FRA_ERR},	/* 45 */	{TRUE, XM_RXE_FIFO_OV},	/* 46 */	{TRUE, XM_RXF_JAB_PKT},	/* 47 */	{TRUE, XM_RXE_CAR_ERR},	/* 48 */	{TRUE, XM_RXF_LEN_ERR},	/* 49 */	{TRUE, XM_RXE_SYM_ERR},	/* 50 */	{TRUE, XM_RXE_SHT_ERR},	/* 51 */	{TRUE, XM_RXE_RUNT},	/* 52 */	{TRUE, XM_RXF_LNG_ERR},	/* 53 */	{TRUE, XM_RXF_FCS_ERR},	/* 54 */	{FALSE, 0},	/* 55 */	{TRUE, XM_RXF_CEX_ERR},	/* 56 */	{FALSE, 0},	/* 57 */	{FALSE, 0},	/* 58 */	{TRUE, XM_RXF_64B},	/* 59 */	{TRUE, XM_RXF_127B},	/* 60 */	{TRUE, XM_RXF_255B},	/* 61 */	{TRUE, XM_RXF_511B},	/* 62 */	{TRUE, XM_RXF_1023B},	/* 63 */	{TRUE, XM_RXF_MAX_SZ},	/* 64 */	{FALSE, 0},	/* 65 */	{FALSE, 0},	/* 66 */	{TRUE, 0}};/***************************************************************************** * * Public functions * *//***************************************************************************** * * SkPnmiInit - Init function of PNMI * * Description: *	SK_INIT_DATA: Initialises the data structures *	SK_INIT_IO:   Resets the XMAC statistics, determines the device and *	              connector type. *	SK_INIT_RUN:  Starts a timer event for port switch per hour *	              calculation. * * Returns: *	Always 0 */int SkPnmiInit(SK_AC *pAC,		/* Pointer to adapter context */SK_IOC IoC,		/* IO context handle */int Level)		/* Initialization level */{	unsigned int	PortMax;	/* Number of ports */	unsigned int	PortIndex;	/* Current port index in loop */	SK_U16		Val16;		/* Multiple purpose 16 bit variable */	SK_U8		Val8;		/* Mulitple purpose 8 bit variable */	SK_EVPARA	EventParam;	/* Event struct for timer event */	SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,		("PNMI: SkPnmiInit: Called, level=%d\n", Level));	switch (Level) {	case SK_INIT_DATA:		SK_MEMSET((char *)&pAC->Pnmi, 0, sizeof(pAC->Pnmi));		pAC->Pnmi.TrapBufFree = SK_PNMI_TRAP_QUEUE_LEN;		pAC->Pnmi.StartUpTime = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));		pAC->Pnmi.RlmtChangeThreshold = SK_PNMI_DEF_RLMT_CHG_THRES;		for (PortIndex = 0; PortIndex < SK_MAX_MACS; PortIndex ++) {			pAC->Pnmi.Port[PortIndex].ActiveFlag = SK_FALSE;			pAC->Pnmi.DualNetActiveFlag = SK_FALSE;		}		break;	case SK_INIT_IO:		/*		 * Reset MAC counters		 */		PortMax = pAC->GIni.GIMacsFound;		for (PortIndex = 0; PortIndex < PortMax; PortIndex ++) {			Val16 = XM_SC_CLR_RXC | XM_SC_CLR_TXC;			XM_OUT16(IoC, PortIndex, XM_STAT_CMD, Val16);			/* Clear two times according to Errata #3 */			XM_OUT16(IoC, PortIndex, XM_STAT_CMD, Val16);		}		/*		 * Get pci bus speed		 */		SK_IN16(IoC, B0_CTST, &Val16);		if ((Val16 & CS_BUS_CLOCK) == 0) {			pAC->Pnmi.PciBusSpeed = 33;		}		else {			pAC->Pnmi.PciBusSpeed = 66;		}		/*		 * Get pci bus width		 */		SK_IN16(IoC, B0_CTST, &Val16);		if ((Val16 & CS_BUS_SLOT_SZ) == 0) {			pAC->Pnmi.PciBusWidth = 32;		}		else {			pAC->Pnmi.PciBusWidth = 64;		}		/*		 * Get PMD and DeviceType		 */		SK_IN8(IoC, B2_PMD_TYP, &Val8);		switch (Val8) {		case 'S':			pAC->Pnmi.PMD = 3;			if (pAC->GIni.GIMacsFound > 1) {				pAC->Pnmi.DeviceType = 0x00020002;			}			else {				pAC->Pnmi.DeviceType = 0x00020001;			}			break;		case 'L':			pAC->Pnmi.PMD = 2;			if (pAC->GIni.GIMacsFound > 1) {				pAC->Pnmi.DeviceType = 0x00020004;			}			else {				pAC->Pnmi.DeviceType = 0x00020003;			}			break;		case 'C':			pAC->Pnmi.PMD = 4;			if (pAC->GIni.GIMacsFound > 1) {				pAC->Pnmi.DeviceType = 0x00020006;			}			else {				pAC->Pnmi.DeviceType = 0x00020005;			}			break;		case 'T':			pAC->Pnmi.PMD = 5;			if (pAC->GIni.GIMacsFound > 1) {				pAC->Pnmi.DeviceType = 0x00020008;			}			else {				pAC->Pnmi.DeviceType = 0x00020007;			}			break;		default :			pAC->Pnmi.PMD = 1;			pAC->Pnmi.DeviceType = 0;			break;		}		/*		 * Get connector		 */		SK_IN8(IoC, B2_CONN_TYP, &Val8);		switch (Val8) {		case 'C':			pAC->Pnmi.Connector = 2;			break;		case 'D':			pAC->Pnmi.Connector = 3;			break;		case 'F':			pAC->Pnmi.Connector = 4;			break;		case 'J':			pAC->Pnmi.Connector = 5;			break;		case 'V':			pAC->Pnmi.Connector = 6;			break;		default:			pAC->Pnmi.Connector = 1;			break;		}		break;	case SK_INIT_RUN:		/*		 * Start timer for RLMT change counter		 */		SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));		SkTimerStart(pAC, IoC, &pAC->Pnmi.RlmtChangeEstimate.EstTimer,			28125000, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER,			EventParam);		break;	default:		break; /* Nothing todo */	}	return (0);

⌨️ 快捷键说明

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