2 * Copyright (C) 2013 Realtek Semiconductor Corp.
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
11 * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : IGMP related functions
18 #ifndef _RTL8367C_ASICDRV_IGMP_H_
19 #define _RTL8367C_ASICDRV_IGMP_H_
21 /****************************************************************/
22 /* Header File inclusion */
23 /****************************************************************/
24 #include <rtl8367c_asicdrv.h>
26 #define RTL8367C_MAX_LEAVE_TIMER (7)
27 #define RTL8367C_MAX_QUERY_INT (0xFFFF)
28 #define RTL8367C_MAX_ROB_VAR (7)
30 #define RTL8367C_IGMP_GOUP_NO (256)
31 #define RTL8367C_IGMP_MAX_GOUP (0xFF)
32 #define RTL8367C_IGMP_GRP_BLEN (3)
33 #define RTL8367C_ROUTER_PORT_INVALID (0xF)
35 enum RTL8367C_IGMPTABLE_FULL_OP
37 TABLE_FULL_FORWARD
= 0,
43 enum RTL8367C_CRC_ERR_OP
51 enum RTL8367C_IGMP_MLD_PROTOCOL_OP
60 enum RTL8367C_IGMP_MLD_BYPASS_GROUP
82 rtk_uint32 report_supp_flag
;
86 * Copyright (C) 2013 Realtek Semiconductor Corp.
87 * All Rights Reserved.
89 * This program is the proprietary software of Realtek Semiconductor
90 * Corporation and/or its licensors, and only be used, duplicated,
91 * modified or distributed under the authorized license from Realtek.
93 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER
94 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
97 * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
99 * Purpose : RTL8367C switch high-level API for RTL8367C
100 * Feature : IGMP related functions
103 #include <rtl8367c_asicdrv_igmp.h>
105 ret_t
rtl8367c_setAsicIgmp(rtk_uint32 enabled
);
106 ret_t
rtl8367c_getAsicIgmp(rtk_uint32
*pEnabled
);
107 ret_t
rtl8367c_setAsicIpMulticastVlanLeaky(rtk_uint32 port
, rtk_uint32 enabled
);
108 ret_t
rtl8367c_getAsicIpMulticastVlanLeaky(rtk_uint32 port
, rtk_uint32
*pEnabled
);
109 ret_t
rtl8367c_setAsicIGMPTableFullOP(rtk_uint32 operation
);
110 ret_t
rtl8367c_getAsicIGMPTableFullOP(rtk_uint32
*pOperation
);
111 ret_t
rtl8367c_setAsicIGMPCRCErrOP(rtk_uint32 operation
);
112 ret_t
rtl8367c_getAsicIGMPCRCErrOP(rtk_uint32
*pOperation
);
113 ret_t
rtl8367c_setAsicIGMPFastLeaveEn(rtk_uint32 enabled
);
114 ret_t
rtl8367c_getAsicIGMPFastLeaveEn(rtk_uint32
*pEnabled
);
115 ret_t
rtl8367c_setAsicIGMPLeaveTimer(rtk_uint32 leave_timer
);
116 ret_t
rtl8367c_getAsicIGMPLeaveTimer(rtk_uint32
*pLeave_timer
);
117 ret_t
rtl8367c_setAsicIGMPQueryInterval(rtk_uint32 interval
);
118 ret_t
rtl8367c_getAsicIGMPQueryInterval(rtk_uint32
*pInterval
);
119 ret_t
rtl8367c_setAsicIGMPRobVar(rtk_uint32 rob_var
);
120 ret_t
rtl8367c_getAsicIGMPRobVar(rtk_uint32
*pRob_var
);
121 ret_t
rtl8367c_setAsicIGMPStaticRouterPort(rtk_uint32 pmsk
);
122 ret_t
rtl8367c_getAsicIGMPStaticRouterPort(rtk_uint32
*pMsk
);
123 ret_t
rtl8367c_setAsicIGMPAllowDynamicRouterPort(rtk_uint32 pmsk
);
124 ret_t
rtl8367c_getAsicIGMPAllowDynamicRouterPort(rtk_uint32
*pPmsk
);
125 ret_t
rtl8367c_getAsicIGMPdynamicRouterPort1(rtk_uint32
*pPort
, rtk_uint32
*pTimer
);
126 ret_t
rtl8367c_getAsicIGMPdynamicRouterPort2(rtk_uint32
*pPort
, rtk_uint32
*pTimer
);
127 ret_t
rtl8367c_setAsicIGMPSuppression(rtk_uint32 report_supp_enabled
, rtk_uint32 leave_supp_enabled
);
128 ret_t
rtl8367c_getAsicIGMPSuppression(rtk_uint32
*pReport_supp_enabled
, rtk_uint32
*pLeave_supp_enabled
);
129 ret_t
rtl8367c_setAsicIGMPQueryRX(rtk_uint32 port
, rtk_uint32 allow_query
);
130 ret_t
rtl8367c_getAsicIGMPQueryRX(rtk_uint32 port
, rtk_uint32
*pAllow_query
);
131 ret_t
rtl8367c_setAsicIGMPReportRX(rtk_uint32 port
, rtk_uint32 allow_report
);
132 ret_t
rtl8367c_getAsicIGMPReportRX(rtk_uint32 port
, rtk_uint32
*pAllow_report
);
133 ret_t
rtl8367c_setAsicIGMPLeaveRX(rtk_uint32 port
, rtk_uint32 allow_leave
);
134 ret_t
rtl8367c_getAsicIGMPLeaveRX(rtk_uint32 port
, rtk_uint32
*pAllow_leave
);
135 ret_t
rtl8367c_setAsicIGMPMRPRX(rtk_uint32 port
, rtk_uint32 allow_mrp
);
136 ret_t
rtl8367c_getAsicIGMPMRPRX(rtk_uint32 port
, rtk_uint32
*pAllow_mrp
);
137 ret_t
rtl8367c_setAsicIGMPMcDataRX(rtk_uint32 port
, rtk_uint32 allow_mcdata
);
138 ret_t
rtl8367c_getAsicIGMPMcDataRX(rtk_uint32 port
, rtk_uint32
*pAllow_mcdata
);
139 ret_t
rtl8367c_setAsicIGMPv1Opeartion(rtk_uint32 port
, rtk_uint32 igmpv1_op
);
140 ret_t
rtl8367c_getAsicIGMPv1Opeartion(rtk_uint32 port
, rtk_uint32
*pIgmpv1_op
);
141 ret_t
rtl8367c_setAsicIGMPv2Opeartion(rtk_uint32 port
, rtk_uint32 igmpv2_op
);
142 ret_t
rtl8367c_getAsicIGMPv2Opeartion(rtk_uint32 port
, rtk_uint32
*pIgmpv2_op
);
143 ret_t
rtl8367c_setAsicIGMPv3Opeartion(rtk_uint32 port
, rtk_uint32 igmpv3_op
);
144 ret_t
rtl8367c_getAsicIGMPv3Opeartion(rtk_uint32 port
, rtk_uint32
*pIgmpv3_op
);
145 ret_t
rtl8367c_setAsicMLDv1Opeartion(rtk_uint32 port
, rtk_uint32 mldv1_op
);
146 ret_t
rtl8367c_getAsicMLDv1Opeartion(rtk_uint32 port
, rtk_uint32
*pMldv1_op
);
147 ret_t
rtl8367c_setAsicMLDv2Opeartion(rtk_uint32 port
, rtk_uint32 mldv2_op
);
148 ret_t
rtl8367c_getAsicMLDv2Opeartion(rtk_uint32 port
, rtk_uint32
*pMldv2_op
);
149 ret_t
rtl8367c_setAsicIGMPPortMAXGroup(rtk_uint32 port
, rtk_uint32 max_group
);
150 ret_t
rtl8367c_getAsicIGMPPortMAXGroup(rtk_uint32 port
, rtk_uint32
*pMax_group
);
151 ret_t
rtl8367c_getAsicIGMPPortCurrentGroup(rtk_uint32 port
, rtk_uint32
*pCurrent_group
);
152 ret_t
rtl8367c_getAsicIGMPGroup(rtk_uint32 idx
, rtk_uint32
*pValid
, rtl8367c_igmpgroup
*pGrp
);
153 ret_t
rtl8367c_setAsicIpMulticastPortIsoLeaky(rtk_uint32 port
, rtk_uint32 enabled
);
154 ret_t
rtl8367c_getAsicIpMulticastPortIsoLeaky(rtk_uint32 port
, rtk_uint32
*pEnabled
);
155 ret_t
rtl8367c_setAsicIGMPReportLeaveFlood(rtk_uint32 flood
);
156 ret_t
rtl8367c_getAsicIGMPReportLeaveFlood(rtk_uint32
*pFlood
);
157 ret_t
rtl8367c_setAsicIGMPDropLeaveZero(rtk_uint32 drop
);
158 ret_t
rtl8367c_getAsicIGMPDropLeaveZero(rtk_uint32
*pDrop
);
159 ret_t
rtl8367c_setAsicIGMPBypassStormCTRL(rtk_uint32 bypass
);
160 ret_t
rtl8367c_getAsicIGMPBypassStormCTRL(rtk_uint32
*pBypass
);
161 ret_t
rtl8367c_setAsicIGMPIsoLeaky(rtk_uint32 leaky
);
162 ret_t
rtl8367c_getAsicIGMPIsoLeaky(rtk_uint32
*pLeaky
);
163 ret_t
rtl8367c_setAsicIGMPVLANLeaky(rtk_uint32 leaky
);
164 ret_t
rtl8367c_getAsicIGMPVLANLeaky(rtk_uint32
*pLeaky
);
165 ret_t
rtl8367c_setAsicIGMPBypassGroup(rtk_uint32 bypassType
, rtk_uint32 enabled
);
166 ret_t
rtl8367c_getAsicIGMPBypassGroup(rtk_uint32 bypassType
, rtk_uint32
*pEnabled
);
168 #endif /*#ifndef _RTL8367C_ASICDRV_IGMP_H_*/