📄 tigon3.c
字号:
if (Status != LM_STATUS_SUCCESS) { return Status; } /* if */ /* Default receive mask. */ pDevice->ReceiveMask = LM_ACCEPT_MULTICAST | LM_ACCEPT_BROADCAST | LM_ACCEPT_UNICAST; /* Make sure we are in the first 32k memory window or NicSendBd. */ REG_WR (pDevice, PciCfg.MemWindowBaseAddr, 0); /* Initialize the hardware. */ Status = LM_ResetAdapter (pDevice); if (Status != LM_STATUS_SUCCESS) { return Status; } /* We are done with initialization. */ pDevice->InitDone = TRUE; return LM_STATUS_SUCCESS;} /* LM_InitializeAdapter *//******************************************************************************//* Description: *//* This function Enables/Disables a given block. *//* *//* Return: *//* LM_STATUS_SUCCESS *//******************************************************************************/LM_STATUSLM_CntrlBlock (PLM_DEVICE_BLOCK pDevice, LM_UINT32 mask, LM_UINT32 cntrl){ LM_UINT32 j, i, data; LM_UINT32 MaxWaitCnt; MaxWaitCnt = 2; j = 0; for (i = 0; i < 32; i++) { if (!(mask & (1 << i))) continue; switch (1 << i) { case T3_BLOCK_DMA_RD: data = REG_RD (pDevice, DmaRead.Mode); if (cntrl == LM_DISABLE) { data &= ~DMA_READ_MODE_ENABLE; REG_WR (pDevice, DmaRead.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, DmaRead.Mode) & DMA_READ_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, DmaRead.Mode, data | DMA_READ_MODE_ENABLE); break; case T3_BLOCK_DMA_COMP: data = REG_RD (pDevice, DmaComp.Mode); if (cntrl == LM_DISABLE) { data &= ~DMA_COMP_MODE_ENABLE; REG_WR (pDevice, DmaComp.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, DmaComp.Mode) & DMA_COMP_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, DmaComp.Mode, data | DMA_COMP_MODE_ENABLE); break; case T3_BLOCK_RX_BD_INITIATOR: data = REG_RD (pDevice, RcvBdIn.Mode); if (cntrl == LM_DISABLE) { data &= ~RCV_BD_IN_MODE_ENABLE; REG_WR (pDevice, RcvBdIn.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, RcvBdIn.Mode) & RCV_BD_IN_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, RcvBdIn.Mode, data | RCV_BD_IN_MODE_ENABLE); break; case T3_BLOCK_RX_BD_COMP: data = REG_RD (pDevice, RcvBdComp.Mode); if (cntrl == LM_DISABLE) { data &= ~RCV_BD_COMP_MODE_ENABLE; REG_WR (pDevice, RcvBdComp.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, RcvBdComp.Mode) & RCV_BD_COMP_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, RcvBdComp.Mode, data | RCV_BD_COMP_MODE_ENABLE); break; case T3_BLOCK_DMA_WR: data = REG_RD (pDevice, DmaWrite.Mode); if (cntrl == LM_DISABLE) { data &= ~DMA_WRITE_MODE_ENABLE; REG_WR (pDevice, DmaWrite.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, DmaWrite.Mode) & DMA_WRITE_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, DmaWrite.Mode, data | DMA_WRITE_MODE_ENABLE); break; case T3_BLOCK_MSI_HANDLER: data = REG_RD (pDevice, Msi.Mode); if (cntrl == LM_DISABLE) { data &= ~MSI_MODE_ENABLE; REG_WR (pDevice, Msi.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, Msi.Mode) & MSI_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, Msi.Mode, data | MSI_MODE_ENABLE); break; case T3_BLOCK_RX_LIST_PLMT: data = REG_RD (pDevice, RcvListPlmt.Mode); if (cntrl == LM_DISABLE) { data &= ~RCV_LIST_PLMT_MODE_ENABLE; REG_WR (pDevice, RcvListPlmt.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, RcvListPlmt.Mode) & RCV_LIST_PLMT_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, RcvListPlmt.Mode, data | RCV_LIST_PLMT_MODE_ENABLE); break; case T3_BLOCK_RX_LIST_SELECTOR: data = REG_RD (pDevice, RcvListSel.Mode); if (cntrl == LM_DISABLE) { data &= ~RCV_LIST_SEL_MODE_ENABLE; REG_WR (pDevice, RcvListSel.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, RcvListSel.Mode) & RCV_LIST_SEL_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, RcvListSel.Mode, data | RCV_LIST_SEL_MODE_ENABLE); break; case T3_BLOCK_RX_DATA_INITIATOR: data = REG_RD (pDevice, RcvDataBdIn.Mode); if (cntrl == LM_DISABLE) { data &= ~RCV_DATA_BD_IN_MODE_ENABLE; REG_WR (pDevice, RcvDataBdIn.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, RcvDataBdIn.Mode) & RCV_DATA_BD_IN_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, RcvDataBdIn.Mode, data | RCV_DATA_BD_IN_MODE_ENABLE); break; case T3_BLOCK_RX_DATA_COMP: data = REG_RD (pDevice, RcvDataComp.Mode); if (cntrl == LM_DISABLE) { data &= ~RCV_DATA_COMP_MODE_ENABLE; REG_WR (pDevice, RcvDataComp.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, RcvDataBdIn.Mode) & RCV_DATA_COMP_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, RcvDataComp.Mode, data | RCV_DATA_COMP_MODE_ENABLE); break; case T3_BLOCK_HOST_COALESING: data = REG_RD (pDevice, HostCoalesce.Mode); if (cntrl == LM_DISABLE) { data &= ~HOST_COALESCE_ENABLE; REG_WR (pDevice, HostCoalesce.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, SndBdIn.Mode) & HOST_COALESCE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, HostCoalesce.Mode, data | HOST_COALESCE_ENABLE); break; case T3_BLOCK_MAC_RX_ENGINE: if (cntrl == LM_DISABLE) { pDevice->RxMode &= ~RX_MODE_ENABLE; REG_WR (pDevice, MacCtrl.RxMode, pDevice->RxMode); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, MacCtrl.RxMode) & RX_MODE_ENABLE)) { break; } MM_Wait (10); } } else { pDevice->RxMode |= RX_MODE_ENABLE; REG_WR (pDevice, MacCtrl.RxMode, pDevice->RxMode); } break; case T3_BLOCK_MBUF_CLUSTER_FREE: data = REG_RD (pDevice, MbufClusterFree.Mode); if (cntrl == LM_DISABLE) { data &= ~MBUF_CLUSTER_FREE_MODE_ENABLE; REG_WR (pDevice, MbufClusterFree.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, MbufClusterFree. Mode) & MBUF_CLUSTER_FREE_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, MbufClusterFree.Mode, data | MBUF_CLUSTER_FREE_MODE_ENABLE); break; case T3_BLOCK_SEND_BD_INITIATOR: data = REG_RD (pDevice, SndBdIn.Mode); if (cntrl == LM_DISABLE) { data &= ~SND_BD_IN_MODE_ENABLE; REG_WR (pDevice, SndBdIn.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, SndBdIn.Mode) & SND_BD_IN_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, SndBdIn.Mode, data | SND_BD_IN_MODE_ENABLE); break; case T3_BLOCK_SEND_BD_COMP: data = REG_RD (pDevice, SndBdComp.Mode); if (cntrl == LM_DISABLE) { data &= ~SND_BD_COMP_MODE_ENABLE; REG_WR (pDevice, SndBdComp.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, SndBdComp.Mode) & SND_BD_COMP_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, SndBdComp.Mode, data | SND_BD_COMP_MODE_ENABLE); break; case T3_BLOCK_SEND_BD_SELECTOR: data = REG_RD (pDevice, SndBdSel.Mode); if (cntrl == LM_DISABLE) { data &= ~SND_BD_SEL_MODE_ENABLE; REG_WR (pDevice, SndBdSel.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, SndBdSel.Mode) & SND_BD_SEL_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, SndBdSel.Mode, data | SND_BD_SEL_MODE_ENABLE); break; case T3_BLOCK_SEND_DATA_INITIATOR: data = REG_RD (pDevice, SndDataIn.Mode); if (cntrl == LM_DISABLE) { data &= ~T3_SND_DATA_IN_MODE_ENABLE; REG_WR (pDevice, SndDataIn.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, SndDataIn.Mode) & T3_SND_DATA_IN_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, SndDataIn.Mode, data | T3_SND_DATA_IN_MODE_ENABLE); break; case T3_BLOCK_SEND_DATA_COMP: data = REG_RD (pDevice, SndDataComp.Mode); if (cntrl == LM_DISABLE) { data &= ~SND_DATA_COMP_MODE_ENABLE; REG_WR (pDevice, SndDataComp.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, SndDataComp.Mode) & SND_DATA_COMP_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, SndDataComp.Mode, data | SND_DATA_COMP_MODE_ENABLE); break; case T3_BLOCK_MAC_TX_ENGINE: if (cntrl == LM_DISABLE) { pDevice->TxMode &= ~TX_MODE_ENABLE; REG_WR (pDevice, MacCtrl.TxMode, pDevice->TxMode); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, MacCtrl.TxMode) & TX_MODE_ENABLE)) break; MM_Wait (10); } } else { pDevice->TxMode |= TX_MODE_ENABLE; REG_WR (pDevice, MacCtrl.TxMode, pDevice->TxMode); } break; case T3_BLOCK_MEM_ARBITOR: data = REG_RD (pDevice, MemArbiter.Mode); if (cntrl == LM_DISABLE) { data &= ~T3_MEM_ARBITER_MODE_ENABLE; REG_WR (pDevice, MemArbiter.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, MemArbiter.Mode) & T3_MEM_ARBITER_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, MemArbiter.Mode, data | T3_MEM_ARBITER_MODE_ENABLE); break; case T3_BLOCK_MBUF_MANAGER: data = REG_RD (pDevice, BufMgr.Mode); if (cntrl == LM_DISABLE) { data &= ~BUFMGR_MODE_ENABLE; REG_WR (pDevice, BufMgr.Mode, data); for (j = 0; j < MaxWaitCnt; j++) { if (! (REG_RD (pDevice, BufMgr.Mode) & BUFMGR_MODE_ENABLE)) break; MM_Wait (10); } } else REG_WR (pDevice, BufMgr.Mode, data | BUFMGR_MODE_ENABLE); break; case T3_BLOCK_MAC_GLOBAL: if (cntrl == LM_DISABLE) { pDevice->MacMode &= ~(MAC_MODE_ENABLE_TDE | MAC_MODE_ENABLE_RDE | MAC_MODE_ENABLE_FHDE); } else { pDevice->MacMode |= (MAC_MODE_ENABLE_TDE | MAC_MODE_ENABLE_RDE | MAC_MODE_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -