📄 txc_envoy_fifo_valid.c
字号:
/*--------------------------------------------------------------------------
******* ****
* ***** ** * * * * * * ***** **** * *
* * * * * ** * * * * * * * * * *
* * * * * * * * **** * * * * * ******
* ***** ****** * * * * * ** * * * * * *
* * * * * * ** * * ** ** * * * * * *
* * * * * * * **** * * * * **** * *
Proprietary and Confidential
This program is made available only to customers and prospective customers
of TranSwitch Corporation under license and may be used only with TranSwitch
semi-conductor products.
Copyright(c) 2004 TranSwitch Inc.
--------------------------------------------------------------------------
******* ** ** ** ** ******** ** **
******* *** ** ** ** ********** ** **
** ** * ** ** ** ** ** ** **
***** ** * ** ** ** ** ** * *
***** ** * ** ** ** ** ** **
** ** * ** ** ** ** ** **
******* ** *** **** ********** **
******* ** ** ** ******** **
--------------------------------------------------------------------------
TranSwitch Envoy-CE2/CE4
Device Driver
--------------------------------------------------------------------------
Workfile: txc_envoy_pkt_ctrl_valid.c
Description: Validation functions for FIFO-related API function calls.
--------------------------------------------------------------------------
Revision History
--------------------------------------------------------------------------
Rev # Date Author Description
----- ------- ----------- -----------
0.5.0 6/03/04 F. Giannella Initial release (beta)
*--------------------------------------------------------------------------*/
/****************************************************************************
** Include Files **
****************************************************************************/
#include "txc_envoy_api.h"
#include "txc_envoy_fifo_support.h"
#include "txc_envoy_database.h"
#include <string.h>
/****************************************************************************
** Static Functions **
****************************************************************************/
static TXC_U16BIT ENVOY_VerifySetFifoHandleAndPort (TXC_U16BIT, TXC_U16BIT);
static TXC_U16BIT ENVOY_VerifyGetFifoHandleAndPort (TXC_U16BIT, TXC_U16BIT);
static TXC_U16BIT ENVOY_VerifySetFifoHandleAndPortBlock (TXC_U16BIT, TXC_U16BIT);
static TXC_U16BIT ENVOY_VerifyGetFifoHandleAndPortBlock (TXC_U16BIT, TXC_U16BIT);
/****************************************************************************
** Static/Global Variables **
****************************************************************************/
/****************************************************************************
** Code **
****************************************************************************/
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_SetIngressFlowCtrlWatermarkValid
DESCRIPTION: This function validates the TXC_ENVOY_IngressFlowCtrlWatermarkSet
INPUTS: Same as TXC_ENVOY_IngressFlowCtrlWatermarkSet
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_SetIngressFlowCtrlWmarkValid (TXC_U16BIT handle, TXC_U16BIT portBlockID,
ENVOY_IFIFO_FLOW_CTRL_WMARK_STRUCT *ingressFlowCtrlWmarkDataPtr)
{
TXC_U16BIT error;
/* first, check the handle and the portBlockID */
error = ENVOY_VerifySetFifoHandleAndPortBlock (handle, portBlockID);
if (error == TXC_NO_ERR)
{
/* now range check the data */
if (ingressFlowCtrlWmarkDataPtr->ingressFlowControlHiWmark > MAX_INGRESS_FLOW_CTRL_HI_WMARK)
{
ingressFlowCtrlWmarkDataPtr->ingressFlowControlHiWmark = TXC_U16_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if (ingressFlowCtrlWmarkDataPtr->ingressFlowControlLoWmark > MAX_INGRESS_FLOW_CTRL_LO_WMARK)
{
ingressFlowCtrlWmarkDataPtr->ingressFlowControlLoWmark = TXC_U16_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if (ingressFlowCtrlWmarkDataPtr->ingressPauseFrameRegenerationTimer > MAX_INGRESS_PAUSE_FRM_REG_TIME)
{
ingressFlowCtrlWmarkDataPtr->ingressPauseFrameRegenerationTimer = TXC_U16_INVALID;
error = TXC_INVALID_PARM_ERR;
}
}
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetIngressFlowCtrlWatermarkValid
DESCRIPTION: This function validates the TXC_ENVOY_IngressFlowCtrlWatermarkGet
INPUTS: Same as TXC_ENVOY_IngressFlowCtrlWatermarkGet
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_GetIngressFlowCtrlWmarkValid (TXC_U16BIT handle, TXC_U16BIT portBlockID)
{
TXC_U16BIT error;
/* first, check the handle */
error = ENVOY_VerifyGetFifoHandleAndPortBlock (handle, portBlockID);
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_SetIngressFifoTransferModeValid
DESCRIPTION: This function validates the TXC_ENVOY_IfifoTransferModeSet
INPUTS: Same as TXC_ENVOY_IfifoTransferModeSet
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_SetIngressFifoTransferModeValid (TXC_U16BIT handle,
ENVOY_IFIFO_TRANSFER_MODE_STRUCT *ingressFifoTransferModeDataPtr)
{
TXC_U16BIT error;
TXC_IfSPI3_OUTPUT_FLOW_CTRL_STRUCT spi3OutputFlowCtrlData;
/* fill the structure with 0 */
memset ((void *) &spi3OutputFlowCtrlData, 0, sizeof (spi3OutputFlowCtrlData));
/* first, check the handle */
error = ENVOY_DbVerifyHandle (handle);
if (error == TXC_NO_ERR)
{
/* Check potential conflict with Output SPI-3 configuration, in which case issue a WARNING only */
if (ingressFifoTransferModeDataPtr->ingressFifoTransferMode == ENVOY_IFIFO_STREAMING_MODE)
{
/* check if OSPI is in packet mode, in which case a warning should be issued */
error = TXC_IfSPI3_OutputFlowCtrlCfgGet (handle, 0, 0, &spi3OutputFlowCtrlData);
if (error == TXC_NO_ERR)
{
if (spi3OutputFlowCtrlData.outputPtpaChunkSize == 0) /* i.e., if OSPI3 is in Packet data transfer mode */
{
error = TXC_OSPI_PACKET_MODE_WARNING;
}
/* now range check the data (it overwrites the warning, if any) */
if (ingressFifoTransferModeDataPtr->ingressFifoTransferMode >= ENVOY_IFIFO_END_OF_TRANSFER_MODE_ENUM)
{
ingressFifoTransferModeDataPtr->ingressFifoTransferMode = ENVOY_IFIFO_TRANSFER_MODE_ENUM_ERR;
error = TXC_INVALID_PARM_ERR;
}
}
}
}
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetIngressFifoTransferModeValid
DESCRIPTION: This function validates the TXC_ENVOY_IfifoTransferModeGet
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_GetIngressFifoTransferModeValid (TXC_U16BIT handle)
{
TXC_U16BIT error;
error = ENVOY_DbVerifyHandle (handle);
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_SetEgressFifoTransferModeValid
DESCRIPTION: This function validates the TXC_ENVOY_EfifoTransferModeSet
INPUTS: Same as TXC_ENVOY_IngressFifoTransferModeSet
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_SetEgressFifoTransferModeValid (TXC_U16BIT handle,
ENVOY_EFIFO_TRANSFER_MODE_STRUCT *eFifoTransferModeDataPtr)
{
TXC_U16BIT error;
/* first, check the handle */
error = ENVOY_DbVerifyHandle (handle);
if (error == TXC_NO_ERR)
{
/* now range check the data (it overwrites the warning, if any) */
if (eFifoTransferModeDataPtr->egressFifoTransferMode >= ENVOY_EFIFO_END_OF_TRANSFER_MODE_ENUM)
{
eFifoTransferModeDataPtr->egressFifoTransferMode = ENVOY_EFIFO_TRANSFER_MODE_ENUM_ERR;
error = TXC_INVALID_PARM_ERR;
}
}
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetEgressFifoTransferModeValid
DESCRIPTION: This function validates the TXC_ENVOY_EfifoTransferModeGet
INPUT: handle
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_GetEgressFifoTransferModeValid (TXC_U16BIT handle)
{
TXC_U16BIT error;
/* first, check the handle */
error = ENVOY_DbVerifyHandle (handle);
/* return the error code */
return error;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -