mediatek: mt7622: add Linux 5.10 support
[openwrt/staging/rmilecki.git] / target / linux / mediatek / files-5.10 / drivers / net / phy / rtk / rtl8367c / include / rtl8367c_asicdrv_igmp.h
1 /*
2 * Copyright (C) 2013 Realtek Semiconductor Corp.
3 * All Rights Reserved.
4 *
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
9 *
10 * $Revision: 76306 $
11 * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
12 *
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : IGMP related functions
15 *
16 */
17
18 #ifndef _RTL8367C_ASICDRV_IGMP_H_
19 #define _RTL8367C_ASICDRV_IGMP_H_
20
21 /****************************************************************/
22 /* Header File inclusion */
23 /****************************************************************/
24 #include <rtl8367c_asicdrv.h>
25
26 #define RTL8367C_MAX_LEAVE_TIMER (7)
27 #define RTL8367C_MAX_QUERY_INT (0xFFFF)
28 #define RTL8367C_MAX_ROB_VAR (7)
29
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)
34
35 enum RTL8367C_IGMPTABLE_FULL_OP
36 {
37 TABLE_FULL_FORWARD = 0,
38 TABLE_FULL_DROP,
39 TABLE_FULL_TRAP,
40 TABLE_FULL_OP_END
41 };
42
43 enum RTL8367C_CRC_ERR_OP
44 {
45 CRC_ERR_DROP = 0,
46 CRC_ERR_TRAP,
47 CRC_ERR_FORWARD,
48 CRC_ERR_OP_END
49 };
50
51 enum RTL8367C_IGMP_MLD_PROTOCOL_OP
52 {
53 PROTOCOL_OP_ASIC = 0,
54 PROTOCOL_OP_FLOOD,
55 PROTOCOL_OP_TRAP,
56 PROTOCOL_OP_DROP,
57 PROTOCOL_OP_END
58 };
59
60 enum RTL8367C_IGMP_MLD_BYPASS_GROUP
61 {
62 BYPASS_224_0_0_X = 0,
63 BYPASS_224_0_1_X,
64 BYPASS_239_255_255_X,
65 BYPASS_IPV6_00XX,
66 BYPASS_GROUP_END
67 };
68
69 typedef struct
70 {
71 rtk_uint32 p0_timer;
72 rtk_uint32 p1_timer;
73 rtk_uint32 p2_timer;
74 rtk_uint32 p3_timer;
75 rtk_uint32 p4_timer;
76 rtk_uint32 p5_timer;
77 rtk_uint32 p6_timer;
78 rtk_uint32 p7_timer;
79 rtk_uint32 p8_timer;
80 rtk_uint32 p9_timer;
81 rtk_uint32 p10_timer;
82 rtk_uint32 report_supp_flag;
83
84 }rtl8367c_igmpgroup;
85 /*
86 * Copyright (C) 2013 Realtek Semiconductor Corp.
87 * All Rights Reserved.
88 *
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.
92 *
93 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER
94 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
95 *
96 * $Revision: 76306 $
97 * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
98 *
99 * Purpose : RTL8367C switch high-level API for RTL8367C
100 * Feature : IGMP related functions
101 *
102 */
103 #include <rtl8367c_asicdrv_igmp.h>
104
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);
167
168 #endif /*#ifndef _RTL8367C_ASICDRV_IGMP_H_*/
169