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

📄 txc_envoy_fifo_valid.c

📁 TranSwitch Envoy CE2 & Envoy CE4 设备驱动及编程指南
💻 C
📖 第 1 页 / 共 2 页
字号:
/*--------------------------------------------------------------------------

  *******                           ****
     *     *****     **    *    *  *       *    *   *  *****   ****   *    *
     *     *    *   *  *   **   *  *       *    *   *    *    *    *  *    *
     *     *    *  *    *  * *  *   ****   *    *   *    *    *       ******
     *     *****   ******  *  * *       *  * ** *   *    *    *       *    *
     *     *   *   *    *  *   **  *    *  **  **   *    *    *    *  *    *
     *     *    *  *    *  *    *   ****   *    *   *    *     ****   *    *

                        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 + -