/* * Copyright (C) 2013 Realtek Semiconductor Corp. * All Rights Reserved. * * Unless you and Realtek execute a separate written software license * agreement governing use of this software, this software is licensed * to you under the terms of the GNU General Public License version 2, * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt * * Purpose : RTL8367/RTL8367C switch high-level API * * Feature : The file includes Storm module high-layer API defination * */ #ifndef __RTK_API_STORM_H__ #define __RTK_API_STORM_H__ #define STORM_UNUC_INDEX 28 #define STORM_UNMC_INDEX 29 #define STORM_MC_INDEX 30 #define STORM_BC_INDEX 31 typedef enum rtk_rate_storm_group_e { STORM_GROUP_UNKNOWN_UNICAST = 0, STORM_GROUP_UNKNOWN_MULTICAST, STORM_GROUP_MULTICAST, STORM_GROUP_BROADCAST, STORM_GROUP_END } rtk_rate_storm_group_t; typedef enum rtk_storm_bypass_e { BYPASS_BRG_GROUP = 0, BYPASS_FD_PAUSE, BYPASS_SP_MCAST, BYPASS_1X_PAE, BYPASS_UNDEF_BRG_04, BYPASS_UNDEF_BRG_05, BYPASS_UNDEF_BRG_06, BYPASS_UNDEF_BRG_07, BYPASS_PROVIDER_BRIDGE_GROUP_ADDRESS, BYPASS_UNDEF_BRG_09, BYPASS_UNDEF_BRG_0A, BYPASS_UNDEF_BRG_0B, BYPASS_UNDEF_BRG_0C, BYPASS_PROVIDER_BRIDGE_GVRP_ADDRESS, BYPASS_8021AB, BYPASS_UNDEF_BRG_0F, BYPASS_BRG_MNGEMENT, BYPASS_UNDEFINED_11, BYPASS_UNDEFINED_12, BYPASS_UNDEFINED_13, BYPASS_UNDEFINED_14, BYPASS_UNDEFINED_15, BYPASS_UNDEFINED_16, BYPASS_UNDEFINED_17, BYPASS_UNDEFINED_18, BYPASS_UNDEFINED_19, BYPASS_UNDEFINED_1A, BYPASS_UNDEFINED_1B, BYPASS_UNDEFINED_1C, BYPASS_UNDEFINED_1D, BYPASS_UNDEFINED_1E, BYPASS_UNDEFINED_1F, BYPASS_GMRP, BYPASS_GVRP, BYPASS_UNDEF_GARP_22, BYPASS_UNDEF_GARP_23, BYPASS_UNDEF_GARP_24, BYPASS_UNDEF_GARP_25, BYPASS_UNDEF_GARP_26, BYPASS_UNDEF_GARP_27, BYPASS_UNDEF_GARP_28, BYPASS_UNDEF_GARP_29, BYPASS_UNDEF_GARP_2A, BYPASS_UNDEF_GARP_2B, BYPASS_UNDEF_GARP_2C, BYPASS_UNDEF_GARP_2D, BYPASS_UNDEF_GARP_2E, BYPASS_UNDEF_GARP_2F, BYPASS_IGMP, BYPASS_CDP, BYPASS_CSSTP, BYPASS_LLDP, BYPASS_END, }rtk_storm_bypass_t; /* Function Name: * rtk_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_FILTER_METER_ID - Invalid meter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlMeterIdx_set(rtk_port_t port, rtk_rate_storm_group_t stormType, rtk_uint32 index); /* Function Name: * rtk_rate_stormControlMeterIdx_get * Description: * Get the storm control meter index. * Input: * port - port id * storm_type - 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_FILTER_METER_ID - Invalid meter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlMeterIdx_get(rtk_port_t port, rtk_rate_storm_group_t stormType, rtk_uint32 *pIndex); /* Function Name: * rtk_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_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlPortEnable_set(rtk_port_t port, rtk_rate_storm_group_t stormType, rtk_enable_t enable); /* Function Name: * rtk_rate_stormControlPortEnable_set * Description: * Set enable status of storm control on specified port. * Input: * port - port id * stormType - storm group type * Output: * pEnable - 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_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlPortEnable_get(rtk_port_t port, rtk_rate_storm_group_t stormType, rtk_enable_t *pEnable); /* Function Name: * rtk_storm_bypass_set * Description: * Set bypass storm filter control configuration. * Input: * type - Bypass storm filter control type. * enable - Bypass status. * Output: * None * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_SMI - SMI access error * RT_ERR_INPUT - Invalid input parameters. * RT_ERR_ENABLE - Invalid IFG parameter * Note: * * This API can set per-port bypass stomr filter control frame type including RMA and igmp. * The bypass frame type is as following: * - BYPASS_BRG_GROUP, * - BYPASS_FD_PAUSE, * - BYPASS_SP_MCAST, * - BYPASS_1X_PAE, * - BYPASS_UNDEF_BRG_04, * - BYPASS_UNDEF_BRG_05, * - BYPASS_UNDEF_BRG_06, * - BYPASS_UNDEF_BRG_07, * - BYPASS_PROVIDER_BRIDGE_GROUP_ADDRESS, * - BYPASS_UNDEF_BRG_09, * - BYPASS_UNDEF_BRG_0A, * - BYPASS_UNDEF_BRG_0B, * - BYPASS_UNDEF_BRG_0C, * - BYPASS_PROVIDER_BRIDGE_GVRP_ADDRESS, * - BYPASS_8021AB, * - BYPASS_UNDEF_BRG_0F, * - BYPASS_BRG_MNGEMENT, * - BYPASS_UNDEFINED_11, * - BYPASS_UNDEFINED_12, * - BYPASS_UNDEFINED_13, * - BYPASS_UNDEFINED_14, * - BYPASS_UNDEFINED_15, * - BYPASS_UNDEFINED_16, * - BYPASS_UNDEFINED_17, * - BYPASS_UNDEFINED_18, * - BYPASS_UNDEFINED_19, * - BYPASS_UNDEFINED_1A, * - BYPASS_UNDEFINED_1B, * - BYPASS_UNDEFINED_1C, * - BYPASS_UNDEFINED_1D, * - BYPASS_UNDEFINED_1E, * - BYPASS_UNDEFINED_1F, * - BYPASS_GMRP, * - BYPASS_GVRP, * - BYPASS_UNDEF_GARP_22, * - BYPASS_UNDEF_GARP_23, * - BYPASS_UNDEF_GARP_24, * - BYPASS_UNDEF_GARP_25, * - BYPASS_UNDEF_GARP_26, * - BYPASS_UNDEF_GARP_27, * - BYPASS_UNDEF_GARP_28, * - BYPASS_UNDEF_GARP_29, * - BYPASS_UNDEF_GARP_2A, * - BYPASS_UNDEF_GARP_2B, * - BYPASS_UNDEF_GARP_2C, * - BYPASS_UNDEF_GARP_2D, * - BYPASS_UNDEF_GARP_2E, * - BYPASS_UNDEF_GARP_2F, * - BYPASS_IGMP. */ extern rtk_api_ret_t rtk_storm_bypass_set(rtk_storm_bypass_t type, rtk_enable_t enable); /* Function Name: * rtk_storm_bypass_get * Description: * Get bypass storm filter control configuration. * Input: * type - Bypass storm filter control type. * Output: * pEnable - Bypass status. * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_SMI - SMI access error * RT_ERR_INPUT - Invalid input parameters. * Note: * This API can get per-port bypass stomr filter control frame type including RMA and igmp. * The bypass frame type is as following: * - BYPASS_BRG_GROUP, * - BYPASS_FD_PAUSE, * - BYPASS_SP_MCAST, * - BYPASS_1X_PAE, * - BYPASS_UNDEF_BRG_04, * - BYPASS_UNDEF_BRG_05, * - BYPASS_UNDEF_BRG_06, * - BYPASS_UNDEF_BRG_07, * - BYPASS_PROVIDER_BRIDGE_GROUP_ADDRESS, * - BYPASS_UNDEF_BRG_09, * - BYPASS_UNDEF_BRG_0A, * - BYPASS_UNDEF_BRG_0B, * - BYPASS_UNDEF_BRG_0C, * - BYPASS_PROVIDER_BRIDGE_GVRP_ADDRESS, * - BYPASS_8021AB, * - BYPASS_UNDEF_BRG_0F, * - BYPASS_BRG_MNGEMENT, * - BYPASS_UNDEFINED_11, * - BYPASS_UNDEFINED_12, * - BYPASS_UNDEFINED_13, * - BYPASS_UNDEFINED_14, * - BYPASS_UNDEFINED_15, * - BYPASS_UNDEFINED_16, * - BYPASS_UNDEFINED_17, * - BYPASS_UNDEFINED_18, * - BYPASS_UNDEFINED_19, * - BYPASS_UNDEFINED_1A, * - BYPASS_UNDEFINED_1B, * - BYPASS_UNDEFINED_1C, * - BYPASS_UNDEFINED_1D, * - BYPASS_UNDEFINED_1E, * - BYPASS_UNDEFINED_1F, * - BYPASS_GMRP, * - BYPASS_GVRP, * - BYPASS_UNDEF_GARP_22, * - BYPASS_UNDEF_GARP_23, * - BYPASS_UNDEF_GARP_24, * - BYPASS_UNDEF_GARP_25, * - BYPASS_UNDEF_GARP_26, * - BYPASS_UNDEF_GARP_27, * - BYPASS_UNDEF_GARP_28, * - BYPASS_UNDEF_GARP_29, * - BYPASS_UNDEF_GARP_2A, * - BYPASS_UNDEF_GARP_2B, * - BYPASS_UNDEF_GARP_2C, * - BYPASS_UNDEF_GARP_2D, * - BYPASS_UNDEF_GARP_2E, * - BYPASS_UNDEF_GARP_2F, * - BYPASS_IGMP. */ extern rtk_api_ret_t rtk_storm_bypass_get(rtk_storm_bypass_t type, rtk_enable_t *pEnable); /* Function Name: * rtk_rate_stormControlExtPortmask_set * Description: * Set externsion storm control port mask * Input: * pPortmask - port mask * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlExtPortmask_set(rtk_portmask_t *pPortmask); /* Function Name: * rtk_rate_stormControlExtPortmask_get * Description: * Set externsion storm control port mask * Input: * None * Output: * pPortmask - port mask * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlExtPortmask_get(rtk_portmask_t *pPortmask); /* Function Name: * rtk_rate_stormControlExtEnable_set * Description: * Set externsion storm control state * Input: * stormType - storm group type * enable - externsion storm control state * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlExtEnable_set(rtk_rate_storm_group_t stormType, rtk_enable_t enable); /* Function Name: * rtk_rate_stormControlExtEnable_get * Description: * Get externsion storm control state * Input: * stormType - storm group type * Output: * pEnable - externsion storm control state * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlExtEnable_get(rtk_rate_storm_group_t stormType, rtk_enable_t *pEnable); /* Function Name: * rtk_rate_stormControlExtMeterIdx_set * Description: * Set externsion storm control meter index * Input: * stormType - storm group type * index - externsion storm control state * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlExtMeterIdx_set(rtk_rate_storm_group_t stormType, rtk_uint32 index); /* Function Name: * rtk_rate_stormControlExtMeterIdx_get * Description: * Get externsion storm control meter index * Input: * stormType - storm group type * pIndex - externsion storm control state * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_INPUT - invalid input parameter * Note: * */ extern rtk_api_ret_t rtk_rate_stormControlExtMeterIdx_get(rtk_rate_storm_group_t stormType, rtk_uint32 *pIndex); #endif /* __RTK_API_STORM_H__ */