📄 txc_envoy_fifo_real.c
字号:
/* First, fill the batch platform header. This function requires 1
register to be written */
/* This function requires 5 registers to be written */
memset (®Data[0], 0, (sizeof(TXC_REG_ACCESS_32BIT_STRUCT) ) );
batchData.regDataPtr = ®Data[0];
batchData.writeVerifyFlag = TXC_WRITE_VERIFY_FLAG;
batchData.semId = ENVOY_DbGetSemId();
batchData.regCount = 1;
/* determine the base address of the device */
baseAddr = (TXC_REG_32 *) ENVOY_DbGetDeviceAddr (handle);
/* Setup the data and masks for Mac Address */
regData[0].data = ingressFifoTransferModeDataPtr->ingressFifoTransferMode;
regData[0].mask = 0x1;
ififoModeRegPtr = (ENVOY_IFIFO_MODE_STRUCT *) (baseAddr + ENVOY_IFIFO_MODE_OFFSET);
regData[0].addr = (TXC_REG_32 *) &(ififoModeRegPtr->iFifoModeReg);
error = TXC_BatchReg32BitWrite (&batchData);
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetIngressFifoTransferModeReal
DESCRIPTION: This function actually processess the TXC_ENVOY_IfifoTransferModeGet
API function.
INPUTS: Same as TXC_ENVOY_IfifoTransferModeGet
RETURNS: TXC_NO_ERR or an appropriate specific error code listed in
appendix.
CAVEATS: None.
REVISION HISTORY:
Rev Date Author Description
----- ------- ------------ -----------------
0.5.0 6/03/04 F. Giannella Initial release (beta)
*--------------------------------------------------------------------------*/
TXC_U16BIT ENVOY_GetIngressFifoTransferModeReal (TXC_U16BIT handle,
ENVOY_IFIFO_TRANSFER_MODE_STRUCT *iFifoTransferModeDataPtr)
{
TXC_U16BIT error;
TXC_BATCH_REG_ACCESS_32BIT_STRUCT batchData;
TXC_REG_ACCESS_32BIT_STRUCT regData[3];
TXC_REG_32 *baseAddr;
ENVOY_IFIFO_MODE_STRUCT *ififoModeRegPtr;
/* First, fill the batch platform header. This function requires
register to be read */
memset (®Data[0], 0, (sizeof(TXC_REG_ACCESS_32BIT_STRUCT) ) );
batchData.regDataPtr = ®Data[0];
batchData.writeVerifyFlag = TXC_WRITE_VERIFY_FLAG;
batchData.semId = ENVOY_DbGetSemId();
batchData.regCount = 1;
/* determine the base address of the device */
baseAddr = (TXC_REG_32 *) ENVOY_DbGetDeviceAddr (handle);
/* Setup the address and mask to read */
ififoModeRegPtr = (ENVOY_IFIFO_MODE_STRUCT *) (baseAddr + ENVOY_IFIFO_MODE_OFFSET);
regData[0].addr = (TXC_REG_32 *) &(ififoModeRegPtr->iFifoModeReg);
regData[0].mask = 0x1;
/* Read the registers and return the data */
error = TXC_BatchReg32BitRead (&batchData);
if (regData[0].data)
{
iFifoTransferModeDataPtr->ingressFifoTransferMode = ENVOY_IFIFO_STREAMING_MODE;
}
else
{
iFifoTransferModeDataPtr->ingressFifoTransferMode = ENVOY_IFIFO_STORE_AND_FWRD_MODE;
}
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_SetEgressFifoTransferModeReal
DESCRIPTION: This function actually processess the TXC_ENVOY_EfifoTransferModeSet
API function.
INPUTS: Same as TXC_ENVOY_EfifoTransferModeSet
RETURNS: TXC_NO_ERR or an appropriate specific error code listed in
appendix.
CAVEATS: None.
REVISION HISTORY:
Rev Date Author Description
----- ------- ------------ -----------------
0.5.0 6/03/04 F. Giannella Initial release (beta)
*--------------------------------------------------------------------------*/
TXC_U16BIT ENVOY_SetEgressFifoTransferModeReal (TXC_U16BIT handle,
ENVOY_EFIFO_TRANSFER_MODE_STRUCT *eFifoTransferModeDataPtr)
{
TXC_U16BIT error = TXC_NO_ERR;
TXC_BATCH_REG_ACCESS_32BIT_STRUCT batchData;
TXC_REG_ACCESS_32BIT_STRUCT regData[1];
TXC_REG_32 *baseAddr;
ENVOY_EFIFO_MODE_STRUCT *efifoModeRegPtr;
/* First, fill the batch platform header. This function requires 1
register to be written */
/* This function requires 5 registers to be written */
memset (®Data[0], 0, (sizeof(TXC_REG_ACCESS_32BIT_STRUCT) ) );
batchData.regDataPtr = ®Data[0];
batchData.writeVerifyFlag = TXC_WRITE_VERIFY_FLAG;
batchData.semId = ENVOY_DbGetSemId();
batchData.regCount = 1;
/* determine the base address of the device */
baseAddr = (TXC_REG_32 *) ENVOY_DbGetDeviceAddr (handle);
/* Setup the data and masks for Mac Address */
regData[0].data = eFifoTransferModeDataPtr->egressFifoTransferMode;
regData[0].mask = 0x1;
efifoModeRegPtr = (ENVOY_EFIFO_MODE_STRUCT *) (baseAddr + ENVOY_EFIFO_MODE_OFFSET);
regData[0].addr = (TXC_REG_32 *) &(efifoModeRegPtr->eFifoModeReg);
error = TXC_BatchReg32BitWrite (&batchData);
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetEgressFifoTransferModeReal
DESCRIPTION: This function actually processess the TXC_ENVOY_EfifoTransferModeGet
API function.
INPUTS: Same as TXC_ENVOY_EfifoTransferModeGet
RETURNS: TXC_NO_ERR or an appropriate specific error code listed in
appendix.
CAVEATS: None.
REVISION HISTORY:
Rev Date Author Description
----- ------- ------------ -----------------
0.5.0 6/03/04 F. Giannella Initial release (beta)
*--------------------------------------------------------------------------*/
TXC_U16BIT ENVOY_GetEgressFifoTransferModeReal (TXC_U16BIT handle,
ENVOY_EFIFO_TRANSFER_MODE_STRUCT *eFifoTransferModeDataPtr)
{
TXC_U16BIT error;
TXC_BATCH_REG_ACCESS_32BIT_STRUCT batchData;
TXC_REG_ACCESS_32BIT_STRUCT regData[1];
TXC_REG_32 *baseAddr;
ENVOY_EFIFO_MODE_STRUCT *efifoModeRegPtr;
/* First, fill the batch platform header. This function requires
register to be read */
memset (®Data[0], 0, (sizeof(TXC_REG_ACCESS_32BIT_STRUCT) ) );
batchData.regDataPtr = ®Data[0];
batchData.writeVerifyFlag = TXC_WRITE_VERIFY_FLAG;
batchData.semId = ENVOY_DbGetSemId();
batchData.regCount = 1;
/* determine the base address of the device */
baseAddr = (TXC_REG_32 *) ENVOY_DbGetDeviceAddr (handle);
/* Setup the address and mask to read */
efifoModeRegPtr = (ENVOY_EFIFO_MODE_STRUCT *) (baseAddr + ENVOY_EFIFO_MODE_OFFSET);
regData[0].addr = (TXC_REG_32 *) &(efifoModeRegPtr->eFifoModeReg);
regData[0].mask = 0x1;
/* Read the registers and return the data */
error = TXC_BatchReg32BitRead (&batchData);
if (error == TXC_NO_ERR)
{
if (regData[0].data)
{
eFifoTransferModeDataPtr->egressFifoTransferMode = ENVOY_EFIFO_STREAMING_MODE;
}
else
{
eFifoTransferModeDataPtr->egressFifoTransferMode = ENVOY_EFIFO_STORE_AND_FWRD_MODE;
}
}
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_SetEfifoStreamingCfgReal
DESCRIPTION: This function actually processess the TXC_ENVOY_EfifoStreamingCfgSet
API function.
INPUTS: Same as TXC_ENVOY_EfifoStreamingCfgSet
RETURNS: TXC_NO_ERR or an appropriate specific error code listed in
appendix.
CAVEATS: None.
REVISION HISTORY:
Rev Date Author Description
----- ------- ------------ -----------------
0.5.0 6/03/04 F. Giannella Initial release (beta)
*--------------------------------------------------------------------------*/
TXC_U16BIT ENVOY_SetEfifoStreamingCfgReal (TXC_U16BIT handle, TXC_U16BIT port,
ENVOY_EFIFO_STREAMING_CFG_STRUCT *eFifoStreamDataPtr)
{
TXC_U16BIT error = TXC_NO_ERR;
TXC_BATCH_REG_ACCESS_32BIT_STRUCT batchData;
TXC_REG_ACCESS_32BIT_STRUCT regData[1];
TXC_REG_32 *baseAddr;
TXC_U16BIT portIdx;
TXC_U16BIT startPort;
TXC_U16BIT endPort;
TXC_U16BIT portInc;
ENVOY_EFIFO_PORT_STRM_THRSHLD_STRUCT *efifoStreamingRegPtr;
/* determine if one EFIFO port is being reset or all ports */
GetFifoPortRange(handle, port, &startPort, &endPort, &portInc);
/* First, fill the batch platform header. This function requires 1
register to be written */
/* This function requires 1 registers to be written */
memset (®Data[0], 0, (sizeof(TXC_REG_ACCESS_32BIT_STRUCT) ) );
batchData.regDataPtr = ®Data[0];
batchData.writeVerifyFlag = TXC_WRITE_VERIFY_FLAG;
batchData.semId = ENVOY_DbGetSemId();
batchData.regCount = 1;
/* determine the base address of the device */
baseAddr = (TXC_REG_32 *) ENVOY_DbGetDeviceAddr (handle);
/* Setup the data and masks for Mac Address */
regData[0].data = eFifoStreamDataPtr->egressFifoStreamingThreshold;
regData[0].mask = 0x7;
efifoStreamingRegPtr = (ENVOY_EFIFO_PORT_STRM_THRSHLD_STRUCT *) (baseAddr + ENVOY_EFIFO_PORT_STRM_THRSHLD_OFFSET);
for (portIdx = startPort; portIdx < endPort; )
{
regData[0].addr = (TXC_REG_32 *) &efifoStreamingRegPtr->eFifoPortStreamThrshldReg[portIdx];
/* Read the registers and return the data */
error = TXC_BatchReg32BitWrite (&batchData);
portIdx += portInc;
}
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetEfifoStreamingCfgReal
DESCRIPTION: This function actually processess the TXC_ENVOY_EfifoStreamingCfgGet
API function.
INPUTS: Same as TXC_ENVOY_EfifoStreamingCfgGet
RETURNS: TXC_NO_ERR or an appropriate specific error code listed in
appendix.
CAVEATS: None.
REVISION HISTORY:
Rev Date Author Description
----- ------- ------------ -----------------
0.5.0 6/03/04 F. Giannella Initial release (beta)
*--------------------------------------------------------------------------*/
TXC_U16BIT ENVOY_GetEfifoStreamingCfgReal (TXC_U16BIT handle, TXC_U16BIT port,
ENVOY_EFIFO_STREAMING_CFG_STRUCT *eFifoStreamDataPtr)
{
TXC_U16BIT error;
TXC_BATCH_REG_ACCESS_32BIT_STRUCT batchData;
TXC_REG_ACCESS_32BIT_STRUCT regData[1];
TXC_REG_32 *baseAddr;
ENVOY_EFIFO_PORT_STRM_THRSHLD_STRUCT *efifoStreamingRegPtr;
/* First, fill the batch platform header. This function requires
register to be read */
memset (®Data[0], 0, (sizeof(TXC_REG_ACCESS_32BIT_STRUCT) ) );
batchData.regDataPtr = ®Data[0];
batchData.writeVerifyFlag = TXC_WRITE_VERIFY_FLAG;
batchData.semId = ENVOY_DbGetSemId();
batchData.regCount = 1;
/* determine the base address of the device */
baseAddr = (TXC_REG_32 *) ENVOY_DbGetDeviceAddr (handle);
/* Setup the address and mask to read */
efifoStreamingRegPtr = (ENVOY_EFIFO_PORT_STRM_THRSHLD_STRUCT *) (baseAddr + ENVOY_EFIFO_PORT_STRM_THRSHLD_OFFSET);
regData[0].addr = (TXC_REG_32 *) &efifoStreamingRegPtr->eFifoPortStreamThrshldReg[port];
regData[0].mask = 0x7;
/* Read the registers and return the data */
error = TXC_BatchReg32BitRead (&batchData);
if (error == TXC_NO_ERR)
{
switch (regData[0].data & 0x7)
{
case 0:
eFifoStreamDataPtr->egressFifoStreamingThreshold = ENVOY_EFIFO_STREAMING_64;
break;
case 1:
eFifoStreamDataPtr->egressFifoStreamingThreshold = ENVOY_EFIFO_STREAMING_128;
break;
case 2:
eFifoStreamDataPtr->egressFifoStreamingThreshold = ENVOY_EFIFO_STREAMING_256;
break;
case 3:
eFifoStreamDataPtr->egressFifoStreamingThreshold = ENVOY_EFIFO_STREAMING_512;
break;
case 4:
eFifoStreamDataPtr->egressFifoStreamingThreshold = ENVOY_EFIFO_STREAMING_768;
break;
case 5:
eFifoStreamDataPtr->egressFifoStreamingThreshold = ENVOY_EFIFO_STREAMING_1544;
break;
default:
break; /* it should never happen */
}
}
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_SetFifoPortCtrlReal
DESCRIPTION: This function actually processess the TXC_ENVOY_FifoPortCtrlSet
API function.
INPUTS: Same as TXC_ENVOY_FifoPortCtrlSet
RETURNS: TXC_NO_ERR or an appropriate specific error code listed in
appendix.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -