mirror of
https://github.com/plappermaul/realtek-doc.git
synced 2025-12-10 07:44:41 +01:00
524 lines
No EOL
15 KiB
C
Executable file
524 lines
No EOL
15 KiB
C
Executable file
/*
|
|
* Copyright (C) 2012 Realtek Semiconductor Corp.
|
|
* All Rights Reserved.
|
|
*
|
|
* This program is the proprietary software of Realtek Semiconductor
|
|
* Corporation and/or its licensors, and only be used, duplicated,
|
|
* modified or distributed under the authorized license from Realtek.
|
|
*
|
|
* ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER
|
|
* THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
|
*
|
|
* $Revision: 39101 $
|
|
* $Date: 2013-05-03 17:35:27 +0800 (週五, 03 五月 2013) $
|
|
*
|
|
* Purpose : Definition of Port Bandwidth Control and Storm Control API
|
|
*
|
|
* Feature : The file includes the following modules and sub-modules
|
|
* (1) Configuration of Ingress Port Bandwidth Control [Ingress Rate Limit]
|
|
* (2) Configuration of Egress Port Bandwidth Control [Egress Rate Limit]
|
|
* (3) Configuration of Storm Control
|
|
* (3) Configuration of meter
|
|
*
|
|
*/
|
|
|
|
#ifndef __DAL_CA8277B_RATE_H__
|
|
#define __DAL_CA8277B_RATE_H__
|
|
|
|
/*
|
|
* Include Files
|
|
*/
|
|
|
|
/*
|
|
* Symbol Definition
|
|
*/
|
|
|
|
|
|
/*
|
|
* Data Declaration
|
|
*/
|
|
|
|
/*
|
|
* Function Declaration
|
|
*/
|
|
|
|
/* Module Name : Rate */
|
|
/* Sub-module Name: Configuration of egress port bandwidth control */
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_init
|
|
* Description:
|
|
* Initial the rate module.
|
|
* Input:
|
|
* None.
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* Note:
|
|
* None.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_init(void);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_portIgrBandwidthCtrlRate_get
|
|
* Description:
|
|
* Get the ingress bandwidth control rate.
|
|
* Input:
|
|
* port - port id
|
|
* Output:
|
|
* pRate - ingress bandwidth control rate
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_PORT_ID - Invalid port id
|
|
* RT_ERR_NULL_POINTER - NULL pointer
|
|
* Note:
|
|
* (1) The rate unit is 1 kbps and the range is from 8k to 1048568k.
|
|
* (2) The granularity of rate is 8 kbps
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_portIgrBandwidthCtrlRate_get(rtk_port_t port, uint32 *pRate);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_portIgrBandwidthCtrlRate_set
|
|
* Description:
|
|
* Set the ingress bandwidth control rate.
|
|
* Input:
|
|
* port - port id
|
|
* rate - ingress bandwidth control rate
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_PORT_ID - Invalid port id
|
|
* RT_ERR_RATE - Invalid input rate
|
|
* Note:
|
|
* (1) The rate unit is 1 kbps and the range is from 8k to 1048568k.
|
|
* (2) The granularity of rate is 8 kbps
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_portIgrBandwidthCtrlRate_set(rtk_port_t port, uint32 rate);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_portEgrBandwidthCtrlRate_get
|
|
* Description:
|
|
* Get the egress bandwidth control rate.
|
|
* Input:
|
|
* port - port id
|
|
* Output:
|
|
* pRate - egress bandwidth control rate
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_PORT_ID - Invalid port id
|
|
* RT_ERR_NULL_POINTER - NULL pointer
|
|
* Note:
|
|
* (1) The rate unit is 1 kbps and the range is from 1k to 1048568k.
|
|
* (2) The granularity of rate is 1 kbps
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_portEgrBandwidthCtrlRate_get(rtk_port_t port, uint32 *pRate);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_portEgrBandwidthCtrlRate_set
|
|
* Description:
|
|
* Set the egress bandwidth control rate.
|
|
* Input:
|
|
* port - port id
|
|
* rate - egress bandwidth control rate
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_PORT_ID - Invalid port id
|
|
* RT_ERR_RATE - Invalid input rate
|
|
* Note:
|
|
* (1) The rate unit is 1 kbps and the range is from 1k to 1048568k.
|
|
* (2) The granularity of rate is 1 kbps
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_portEgrBandwidthCtrlRate_set(rtk_port_t port, uint32 rate);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_egrQueueBwCtrlEnable_get
|
|
* Description:
|
|
* Get enable status of egress bandwidth control on specified queue.
|
|
* Input:
|
|
* port - port id
|
|
* queue - queue id
|
|
* Output:
|
|
* pEnable - Pointer to enable status of egress queue bandwidth control
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NOT_INIT - The module is not initial
|
|
* RT_ERR_PORT_ID - invalid port id
|
|
* RT_ERR_QUEUE_ID - invalid queue id
|
|
* RT_ERR_NULL_POINTER - input parameter may be null pointer
|
|
* Note:
|
|
* None
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_egrQueueBwCtrlEnable_get(
|
|
rtk_port_t port,
|
|
rtk_qid_t queue,
|
|
rtk_enable_t *pEnable);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_egrQueueBwCtrlEnable_set
|
|
* Description:
|
|
* Set enable status of egress bandwidth control on specified queue.
|
|
* Input:
|
|
* port - port id
|
|
* queue - queue id
|
|
* enable - enable status of egress queue bandwidth control
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NOT_INIT - The module is not initial
|
|
* RT_ERR_PORT_ID - invalid port id
|
|
* RT_ERR_QUEUE_ID - invalid queue id
|
|
* RT_ERR_INPUT - invalid input parameter
|
|
* Note:
|
|
* None
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_egrQueueBwCtrlEnable_set(
|
|
rtk_port_t port,
|
|
rtk_qid_t queue,
|
|
rtk_enable_t enable);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_egrQueueBwCtrlMeterIdx_get
|
|
* Description:
|
|
* Get rate of egress bandwidth control on specified queue.
|
|
* Input:
|
|
* port - port id
|
|
* queue - queue id
|
|
* Output:
|
|
* pMeterIndex - meter index
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NOT_INIT - The module is not initial
|
|
* RT_ERR_PORT_ID - invalid port id
|
|
* RT_ERR_QUEUE_ID - invalid queue id
|
|
* RT_ERR_NULL_POINTER - input parameter may be null pointer
|
|
* Note:
|
|
* The actual rate is "rate * chip granularity".
|
|
* The unit of granularity in Apollo is 8Kbps.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_egrQueueBwCtrlMeterIdx_get(
|
|
rtk_port_t port,
|
|
rtk_qid_t queue,
|
|
uint32 *pMeterIndex);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_egrQueueBwCtrlMeterIdx_set
|
|
* Description:
|
|
* Set rate of egress bandwidth control on specified queue.
|
|
* Input:
|
|
* port - port id
|
|
* queue - queue id
|
|
* meterIndex - meter index
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NOT_INIT - The module is not initial
|
|
* RT_ERR_PORT_ID - invalid port id
|
|
* RT_ERR_QUEUE_ID - invalid queue id
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* Note:
|
|
* The actual rate is "rate * chip granularity".
|
|
* The unit of granularity in Apollo is 8Kbps.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_egrQueueBwCtrlMeterIdx_set(
|
|
rtk_port_t port,
|
|
rtk_qid_t queue,
|
|
uint32 meterIndex);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_stormControlRate_get
|
|
* Description:
|
|
* Get the storm control meter index.
|
|
* Input:
|
|
* port - port id
|
|
* stormType - storm group type
|
|
* Output:
|
|
* pIndex - storm control meter index.
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_PORT_ID - Invalid port id
|
|
* RT_ERR_ENTRY_NOTFOUND - The global strom group is not enable for this group
|
|
* RT_ERR_NULL_POINTER - NULL pointer
|
|
* Note:
|
|
* The storm group types are as following:
|
|
* - STORM_GROUP_UNKNOWN_UNICAST
|
|
* - STORM_GROUP_UNKNOWN_MULTICAST
|
|
* - STORM_GROUP_MULTICAST
|
|
* - STORM_GROUP_BROADCAST
|
|
* - STORM_GROUP_DHCP
|
|
* - STORM_GROUP_ARP
|
|
* - STORM_GROUP_IGMP_MLD
|
|
* - Before call this API must make sure the global strom gruop for given group is enabled,
|
|
* otherwise this API will return RT_ERR_ENTRY_NOTFOUND
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_stormControlMeterIdx_get(
|
|
rtk_port_t port,
|
|
rtk_rate_storm_group_t stormType,
|
|
uint32 *pIndex);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_stormControlMeterIdx_set
|
|
* Description:
|
|
* Set the storm control meter index.
|
|
* Input:
|
|
* port - port id
|
|
* storm_type - storm group type
|
|
* index - storm control meter index.
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_PORT_ID - Invalid port id
|
|
* RT_ERR_ENTRY_NOTFOUND - The global strom group is not enable for this group
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* RT_ERR_RATE - Invalid input bandwidth
|
|
* Note:
|
|
* The storm group types are as following:
|
|
* - STORM_GROUP_UNKNOWN_UNICAST
|
|
* - STORM_GROUP_UNKNOWN_MULTICAST
|
|
* - STORM_GROUP_MULTICAST
|
|
* - STORM_GROUP_BROADCAST
|
|
* - STORM_GROUP_DHCP
|
|
* - STORM_GROUP_ARP
|
|
* - STORM_GROUP_IGMP_MLD
|
|
* - Before call this API must make sure the global strom gruop for given group is enabled,
|
|
* otherwise this API will return RT_ERR_ENTRY_NOTFOUND
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_stormControlMeterIdx_set(
|
|
rtk_port_t port,
|
|
rtk_rate_storm_group_t stormType,
|
|
uint32 index);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_stormControlPortEnable_get
|
|
* Description:
|
|
* Get enable status of storm control on specified port.
|
|
* Input:
|
|
* port - port id
|
|
* stormType - storm group type
|
|
* Output:
|
|
* pEnable - pointer to enable status of storm control
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NOT_INIT - The module is not initial
|
|
* RT_ERR_PORT_ID - invalid port id
|
|
* RT_ERR_SFC_UNKNOWN_GROUP - Unknown storm group
|
|
* RT_ERR_NULL_POINTER - input parameter may be null pointer
|
|
* Note:
|
|
* The storm group types are as following:
|
|
* - STORM_GROUP_UNKNOWN_UNICAST
|
|
* - STORM_GROUP_UNKNOWN_MULTICAST
|
|
* - STORM_GROUP_MULTICAST
|
|
* - STORM_GROUP_BROADCAST
|
|
* - STORM_GROUP_DHCP
|
|
* - STORM_GROUP_ARP
|
|
* - STORM_GROUP_IGMP_MLD
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_stormControlPortEnable_get(
|
|
rtk_port_t port,
|
|
rtk_rate_storm_group_t stormType,
|
|
rtk_enable_t *pEnable);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_stormControlPortEnable_set
|
|
* Description:
|
|
* Set enable status of storm control on specified port.
|
|
* Input:
|
|
* port - port id
|
|
* stormType - storm group type
|
|
* enable - enable status of storm control
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NOT_INIT - The module is not initial
|
|
* RT_ERR_PORT_ID - invalid port id
|
|
* RT_ERR_SFC_UNKNOWN_GROUP - Unknown storm group
|
|
* RT_ERR_ENTRY_NOTFOUND - The global strom group is not enable for this group
|
|
* RT_ERR_INPUT - invalid input parameter
|
|
* Note:
|
|
* The storm group types are as following:
|
|
* - STORM_GROUP_UNKNOWN_UNICAST
|
|
* - STORM_GROUP_UNKNOWN_MULTICAST
|
|
* - STORM_GROUP_MULTICAST
|
|
* - STORM_GROUP_BROADCAST
|
|
* - STORM_GROUP_DHCP
|
|
* - STORM_GROUP_ARP
|
|
* - STORM_GROUP_IGMP_MLD
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_stormControlPortEnable_set(
|
|
rtk_port_t port,
|
|
rtk_rate_storm_group_t stormType,
|
|
rtk_enable_t enable);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_shareMeter_set
|
|
* Description:
|
|
* Set meter configuration
|
|
* Input:
|
|
* index - shared meter index
|
|
* rate - rate of share meter
|
|
* ifgInclude - include IFG or not, ENABLE:include DISABLE:exclude
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* RT_ERR_RATE - Invalid rate
|
|
* RT_ERR_INPUT - Invalid input parameters
|
|
* Note:
|
|
* The API can set shared meter rate and ifg include for each meter.
|
|
* The rate unit is 1 kbps and the range is from 8k to 1048568k.
|
|
* The granularity of rate is 8 kbps. The ifg_include parameter is used
|
|
* for rate calculation with/without inter-frame-gap and preamble.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_shareMeter_set (
|
|
uint32 index,
|
|
uint32 rate,
|
|
rtk_enable_t ifgInclude );
|
|
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_shareMeter_get
|
|
* Description:
|
|
* Get meter configuration
|
|
* Input:
|
|
* index - shared meter index
|
|
* Output:
|
|
* pRate - pointer of rate of share meter
|
|
* pIfgInclude - include IFG or not, ENABLE:include DISABLE:exclude
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* Note:
|
|
* The API can get shared meter rate and ifg include for each meter.
|
|
* The rate unit is 1 kbps and the granularity of rate is 8 kbps.
|
|
* The ifg_include parameter is used for rate calculation with/without inter-frame-gap and preamble
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_shareMeter_get (
|
|
uint32 index,
|
|
uint32* pRate,
|
|
rtk_enable_t* pIfgInclude );
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_shareMeterMode_set
|
|
* Description:
|
|
* Set meter mode
|
|
* Input:
|
|
* index - shared meter index
|
|
* meterMode - meter mode(bit rate mode or packet rate mode)
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_INPUT - Error Input
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* Note:
|
|
* The API can set shared meter type.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_shareMeterMode_set (
|
|
uint32 index,
|
|
rtk_rate_metet_mode_t meterMode );
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_shareMeterMode_get
|
|
* Description:
|
|
* Set meter mode
|
|
* Input:
|
|
* index - shared meter index
|
|
* pMeterMode - meter mode(bit rate mode or packet rate mode)
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_INPUT - Error Input
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* Note:
|
|
* The API can get shared meter mode.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_shareMeterMode_get (
|
|
uint32 index,
|
|
rtk_rate_metet_mode_t* pMeterMode);
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_shareMeterBucket_set
|
|
* Description:
|
|
* Set meter Bucket Size
|
|
* Input:
|
|
* index - shared meter index
|
|
* bucketSize - Bucket Size
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_INPUT - Error Input
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* Note:
|
|
* The API can set shared meter bucket size.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_shareMeterBucket_set (
|
|
uint32 index,
|
|
uint32 bucketSize );
|
|
|
|
/* Function Name:
|
|
* dal_ca8277b_rate_shareMeterBucket_get
|
|
* Description:
|
|
* Get meter Bucket Size
|
|
* Input:
|
|
* index - shared meter index
|
|
* Output:
|
|
* pBucketSize - Bucket Size
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_FILTER_METER_ID - Invalid meter
|
|
* Note:
|
|
* The API can get shared meter bucket size.
|
|
*/
|
|
extern int32
|
|
dal_ca8277b_rate_shareMeterBucket_get (
|
|
uint32 index,
|
|
uint32* pBucketSize );
|
|
|
|
#endif /* __DAL_CA8277B_RATE_H__ */ |