📄 txc_envoy_pkt_ctrl_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 of Packet Control API 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_pkt_ctrl_support.h"
#include "txc_envoy_database.h"
/****************************************************************************
** Static Functions **
****************************************************************************/
static TXC_U16BIT ENVOY_VerifySetPktCtrlHandleAndPort (TXC_U16BIT, TXC_U16BIT);
static TXC_U16BIT ENVOY_VerifyGetPktCtrlHandleAndPort (TXC_U16BIT, TXC_U16BIT);
/****************************************************************************
** Static/Global Variables **
****************************************************************************/
/****************************************************************************
** Code **
****************************************************************************/
/*--------------------------------------------------------------------------*
FUNCTION: ENVOY_SetIngressPacketCtrlValid
DESCRIPTION: This function validates the TXC_ENVOY_IngressPacketCtrlSet
INPUTS: Same as TXC_ENVOY_IngressPacketCtrlSet
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_SetIngressPacketCtrlValid (TXC_U16BIT handle, TXC_U16BIT port,
ENVOY_INGRESS_PKT_CTRL_STRUCT *ingressPktCtrlDataPtr)
{
TXC_U16BIT error;
/* first, check the handle & port */
error = ENVOY_VerifySetPktCtrlHandleAndPort (handle, port);
/* now range check the data */
if (error == TXC_NO_ERR)
{
if ((ingressPktCtrlDataPtr->ingressDiscardErroredFramesEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressDiscardErroredFramesEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressDiscardErroredFramesEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((ingressPktCtrlDataPtr->ingressDiscardTruncatedFramesEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressDiscardTruncatedFramesEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressDiscardTruncatedFramesEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((ingressPktCtrlDataPtr->ingressDiscardLengthMismatchEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressDiscardLengthMismatchEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressDiscardLengthMismatchEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((ingressPktCtrlDataPtr->ingressDiscardCrcMismatchEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressDiscardCrcMismatchEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressDiscardCrcMismatchEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((ingressPktCtrlDataPtr->ingressDiscardAddressMismatchEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressDiscardAddressMismatchEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressDiscardAddressMismatchEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((ingressPktCtrlDataPtr->ingressCrcRemoveEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressCrcRemoveEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressCrcRemoveEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((ingressPktCtrlDataPtr->ingressPauseFrameDiscardEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressPauseFrameDiscardEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressPauseFrameDiscardEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((ingressPktCtrlDataPtr->ingressPrependEnable != TXC_FALSE) &&
(ingressPktCtrlDataPtr->ingressPrependEnable != TXC_TRUE))
{
ingressPktCtrlDataPtr->ingressPrependEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
}
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetIngressPacketCtrlValid
DESCRIPTION: This function validates the TXC_ENVOY_IngressPacketCtrlSet
INPUTS: Same as TXC_ENVOY_IngressPacketCtrlSet
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_GetIngressPacketCtrlValid (TXC_U16BIT handle, TXC_U16BIT port)
{
TXC_U16BIT error;
error = ENVOY_VerifyGetPktCtrlHandleAndPort (handle, port);
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_SetEgressPacketCtrlValid
DESCRIPTION: This function validates the TXC_ENVOY_EgressPacketCtrlSet
INPUTS: Same as TXC_ENVOY_EgressPacketCtrlSet
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_SetEgressPacketCtrlValid (TXC_U16BIT handle, TXC_U16BIT port,
ENVOY_EGRESS_PKT_CTRL_STRUCT *egressPktCtrlDataPtr)
{
TXC_U16BIT error;
/* first, check the handle & port */
error = ENVOY_VerifySetPktCtrlHandleAndPort (handle, port);
/* now range check the data */
if (error == TXC_NO_ERR)
{
if ((egressPktCtrlDataPtr->egressAddrSubstEnable != TXC_FALSE) &&
(egressPktCtrlDataPtr->egressAddrSubstEnable != TXC_TRUE))
{
egressPktCtrlDataPtr->egressAddrSubstEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((egressPktCtrlDataPtr->egressPauseFrmDiscEnable != TXC_FALSE) &&
(egressPktCtrlDataPtr->egressPauseFrmDiscEnable != TXC_TRUE))
{
egressPktCtrlDataPtr->egressPauseFrmDiscEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
if ((egressPktCtrlDataPtr->egressStripEnable != TXC_FALSE) &&
(egressPktCtrlDataPtr->egressStripEnable != TXC_TRUE))
{
egressPktCtrlDataPtr->egressStripEnable = TXC_BOOL_INVALID;
error = TXC_INVALID_PARM_ERR;
}
}
/* return the error code */
return error;
}
/************************************************************************************/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/************************************************************************************
FUNCTION: ENVOY_GetEgressPacketCtrlValid
DESCRIPTION: This function validates the TXC_ENVOY_EgressPacketCtrlGet
INPUTS: Same as TXC_ENVOY_EgressPacketCtrlGet
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_GetEgressPacketCtrlValid (TXC_U16BIT handle, TXC_U16BIT port)
{
TXC_U16BIT error;
error = ENVOY_VerifyGetPktCtrlHandleAndPort (handle, port);
/* return the error code */
return error;
}
/****************************************************************************
** Static Function **
****************************************************************************/
/* check port and handle, in that order for valid range.
ON THE SET FUNCTIONS. Set function allow the port == 0xFFFF.
Overwrite the last error, so the hierarchy is correctly followed. */
static TXC_U16BIT ENVOY_VerifySetPktCtrlHandleAndPort(TXC_U16BIT handle,
TXC_U16BIT port)
{
TXC_U16BIT maxPorts, error;
/* first, check the handle. This may return invalid handle or driver not created */
error = ENVOY_DbVerifyHandle (handle);
/* if NO handle error, make sure the port value is correct,
allow for the all ports (0xFFFF) */
if (error == TXC_NO_ERR)
{
maxPorts = ENVOY_DbGetMaxMacPorts (handle);
if (port >= maxPorts)
{
if (port != ENVOY_MAC_ALL_PORTS)
error = TXC_INVALID_CHANNEL_ERR;
}
}
/* return the error */
return error;
}
/* check port, then handle, in that order for valid range. ON THE GET
Overwrite the last error, so the hierarchy is correctly followed. */
static TXC_U16BIT ENVOY_VerifyGetPktCtrlHandleAndPort(TXC_U16BIT handle,
TXC_U16BIT port)
{
/* TXC_U16BIT maxTerms, maxPorts, error; */
TXC_U16BIT maxPorts, error;
/* first, check the handle. This may return invalid handle or driver not created */
error = ENVOY_DbVerifyHandle (handle);
/* if NO handle error, make sure the port value is correct,
do not allow for the all ports (0xFFFF) */
if (error == TXC_NO_ERR)
{
maxPorts = ENVOY_DbGetMaxMacPorts (handle);
if (port >= maxPorts)
error = TXC_INVALID_CHANNEL_ERR;
}
/* return the error */
return error;
}
/****************************************************************************
** End of Module **
****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -