• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/char/rtl8365mb/
1#ifndef _RTL8367C_ASICDRV_IGMP_H_
2#define _RTL8367C_ASICDRV_IGMP_H_
3
4/****************************************************************/
5/* Header File inclusion                                        */
6/****************************************************************/
7#include <rtl8367c_asicdrv.h>
8
9#define RTL8367C_MAX_LEAVE_TIMER        (7)
10#define RTL8367C_MAX_QUERY_INT          (0xFFFF)
11#define RTL8367C_MAX_ROB_VAR            (7)
12
13#define RTL8367C_IGMP_GOUP_NO		    (256)
14#define RTL8367C_IGMP_MAX_GOUP		    (0xFF)
15#define RTL8367C_IGMP_GRP_BLEN	        (2)
16#define RTL8367C_ROUTER_PORT_INVALID    (0xF)
17
18enum RTL8367C_IGMPTABLE_FULL_OP
19{
20    TABLE_FULL_FORWARD = 0,
21    TABLE_FULL_DROP,
22    TABLE_FULL_TRAP,
23    TABLE_FULL_OP_END
24};
25
26enum RTL8367C_CRC_ERR_OP
27{
28    CRC_ERR_DROP = 0,
29    CRC_ERR_TRAP,
30    CRC_ERR_FORWARD,
31    CRC_ERR_OP_END
32};
33
34enum RTL8367C_IGMP_MLD_PROTOCOL_OP
35{
36    PROTOCOL_OP_ASIC = 0,
37    PROTOCOL_OP_FLOOD,
38    PROTOCOL_OP_TRAP,
39    PROTOCOL_OP_DROP,
40    PROTOCOL_OP_END
41};
42
43enum RTL8367C_IGMP_MLD_BYPASS_GROUP
44{
45    BYPASS_224_0_0_X = 0,
46    BYPASS_224_0_1_X,
47    BYPASS_239_255_255_X,
48    BYPASS_IPV6_00XX,
49    BYPASS_GROUP_END
50};
51
52typedef struct
53{
54#ifdef _LITTLE_ENDIAN
55    rtk_uint32 p0_timer:3;
56    rtk_uint32 p1_timer:3;
57    rtk_uint32 p2_timer:3;
58    rtk_uint32 p3_timer:3;
59    rtk_uint32 p4_timer:3;
60    rtk_uint32 p5_timer:3;
61    rtk_uint32 p6_timer:3;
62    rtk_uint32 p7_timer:3;
63    rtk_uint32 report_supp_flag:1;
64    rtk_uint32 p8_timer:3;
65    rtk_uint32 p9_timer:3;
66    rtk_uint32 p10_timer:3;
67#else
68    rtk_uint32 p10_timer:3;
69    rtk_uint32 p9_timer:3;
70    rtk_uint32 p8_timer:3;
71    rtk_uint32 report_supp_flag:1;
72    rtk_uint32 p7_timer:3;
73    rtk_uint32 p6_timer:3;
74    rtk_uint32 p5_timer:3;
75    rtk_uint32 p4_timer:3;
76    rtk_uint32 p3_timer:3;
77    rtk_uint32 p2_timer:3;
78    rtk_uint32 p1_timer:3;
79    rtk_uint32 p0_timer:3;
80#endif
81
82}rtl8367c_igmpgroup;
83/*
84 * Copyright (C) 2013 Realtek Semiconductor Corp.
85 * All Rights Reserved.
86 *
87 * This program is the proprietary software of Realtek Semiconductor
88 * Corporation and/or its licensors, and only be used, duplicated,
89 * modified or distributed under the authorized license from Realtek.
90 *
91 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER
92 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
93 *
94 * $Revision: 42321 $
95 * $Date: 2013-08-26 13:51:29 +0800 (������, 26 ������ 2013) $
96 *
97 * Purpose : RTL8367C switch high-level API for RTL8367C
98 * Feature : IGMP related functions
99 *
100 */
101#include <rtl8367c_asicdrv_igmp.h>
102
103ret_t rtl8367c_setAsicIgmp(rtk_uint32 enabled);
104ret_t rtl8367c_getAsicIgmp(rtk_uint32 *pEnabled);
105ret_t rtl8367c_setAsicIpMulticastVlanLeaky(rtk_uint32 port, rtk_uint32 enabled );
106ret_t rtl8367c_getAsicIpMulticastVlanLeaky(rtk_uint32 port, rtk_uint32 *pEnabled );
107ret_t rtl8367c_setAsicIGMPTableFullOP(rtk_uint32 operation);
108ret_t rtl8367c_getAsicIGMPTableFullOP(rtk_uint32 *pOperation);
109ret_t rtl8367c_setAsicIGMPCRCErrOP(rtk_uint32 operation);
110ret_t rtl8367c_getAsicIGMPCRCErrOP(rtk_uint32 *pOperation);
111ret_t rtl8367c_setAsicIGMPFastLeaveEn(rtk_uint32 enabled);
112ret_t rtl8367c_getAsicIGMPFastLeaveEn(rtk_uint32 *pEnabled);
113ret_t rtl8367c_setAsicIGMPLeaveTimer(rtk_uint32 leave_timer);
114ret_t rtl8367c_getAsicIGMPLeaveTimer(rtk_uint32 *pLeave_timer);
115ret_t rtl8367c_setAsicIGMPQueryInterval(rtk_uint32 interval);
116ret_t rtl8367c_getAsicIGMPQueryInterval(rtk_uint32 *pInterval);
117ret_t rtl8367c_setAsicIGMPRobVar(rtk_uint32 rob_var);
118ret_t rtl8367c_getAsicIGMPRobVar(rtk_uint32 *pRob_var);
119ret_t rtl8367c_setAsicIGMPStaticRouterPort(rtk_uint32 pmsk);
120ret_t rtl8367c_getAsicIGMPStaticRouterPort(rtk_uint32 *pMsk);
121ret_t rtl8367c_setAsicIGMPAllowDynamicRouterPort(rtk_uint32 pmsk);
122ret_t rtl8367c_getAsicIGMPAllowDynamicRouterPort(rtk_uint32 *pPmsk);
123ret_t rtl8367c_getAsicIGMPdynamicRouterPort1(rtk_uint32 *pPort, rtk_uint32 *pTimer);
124ret_t rtl8367c_getAsicIGMPdynamicRouterPort2(rtk_uint32 *pPort, rtk_uint32 *pTimer);
125ret_t rtl8367c_setAsicIGMPSuppression(rtk_uint32 report_supp_enabled, rtk_uint32 leave_supp_enabled);
126ret_t rtl8367c_getAsicIGMPSuppression(rtk_uint32 *pReport_supp_enabled, rtk_uint32 *pLeave_supp_enabled);
127ret_t rtl8367c_setAsicIGMPQueryRX(rtk_uint32 port, rtk_uint32 allow_query);
128ret_t rtl8367c_getAsicIGMPQueryRX(rtk_uint32 port, rtk_uint32 *pAllow_query);
129ret_t rtl8367c_setAsicIGMPReportRX(rtk_uint32 port, rtk_uint32 allow_report);
130ret_t rtl8367c_getAsicIGMPReportRX(rtk_uint32 port, rtk_uint32 *pAllow_report);
131ret_t rtl8367c_setAsicIGMPLeaveRX(rtk_uint32 port, rtk_uint32 allow_leave);
132ret_t rtl8367c_getAsicIGMPLeaveRX(rtk_uint32 port, rtk_uint32 *pAllow_leave);
133ret_t rtl8367c_setAsicIGMPMRPRX(rtk_uint32 port, rtk_uint32 allow_mrp);
134ret_t rtl8367c_getAsicIGMPMRPRX(rtk_uint32 port, rtk_uint32 *pAllow_mrp);
135ret_t rtl8367c_setAsicIGMPMcDataRX(rtk_uint32 port, rtk_uint32 allow_mcdata);
136ret_t rtl8367c_getAsicIGMPMcDataRX(rtk_uint32 port, rtk_uint32 *pAllow_mcdata);
137ret_t rtl8367c_setAsicIGMPv1Opeartion(rtk_uint32 port, rtk_uint32 igmpv1_op);
138ret_t rtl8367c_getAsicIGMPv1Opeartion(rtk_uint32 port, rtk_uint32 *pIgmpv1_op);
139ret_t rtl8367c_setAsicIGMPv2Opeartion(rtk_uint32 port, rtk_uint32 igmpv2_op);
140ret_t rtl8367c_getAsicIGMPv2Opeartion(rtk_uint32 port, rtk_uint32 *pIgmpv2_op);
141ret_t rtl8367c_setAsicIGMPv3Opeartion(rtk_uint32 port, rtk_uint32 igmpv3_op);
142ret_t rtl8367c_getAsicIGMPv3Opeartion(rtk_uint32 port, rtk_uint32 *pIgmpv3_op);
143ret_t rtl8367c_setAsicMLDv1Opeartion(rtk_uint32 port, rtk_uint32 mldv1_op);
144ret_t rtl8367c_getAsicMLDv1Opeartion(rtk_uint32 port, rtk_uint32 *pMldv1_op);
145ret_t rtl8367c_setAsicMLDv2Opeartion(rtk_uint32 port, rtk_uint32 mldv2_op);
146ret_t rtl8367c_getAsicMLDv2Opeartion(rtk_uint32 port, rtk_uint32 *pMldv2_op);
147ret_t rtl8367c_setAsicIGMPPortMAXGroup(rtk_uint32 port, rtk_uint32 max_group);
148ret_t rtl8367c_getAsicIGMPPortMAXGroup(rtk_uint32 port, rtk_uint32 *pMax_group);
149ret_t rtl8367c_getAsicIGMPPortCurrentGroup(rtk_uint32 port, rtk_uint32 *pCurrent_group);
150ret_t rtl8367c_getAsicIGMPGroup(rtk_uint32 idx, rtk_uint32 *pValid, rtl8367c_igmpgroup *pGrp);
151ret_t rtl8367c_setAsicIpMulticastPortIsoLeaky(rtk_uint32 port, rtk_uint32 enabled);
152ret_t rtl8367c_getAsicIpMulticastPortIsoLeaky(rtk_uint32 port, rtk_uint32 *pEnabled);
153ret_t rtl8367c_setAsicIGMPReportLeaveFlood(rtk_uint32 flood);
154ret_t rtl8367c_getAsicIGMPReportLeaveFlood(rtk_uint32 *pFlood);
155ret_t rtl8367c_setAsicIGMPDropLeaveZero(rtk_uint32 drop);
156ret_t rtl8367c_getAsicIGMPDropLeaveZero(rtk_uint32 *pDrop);
157ret_t rtl8367c_setAsicIGMPBypassStormCTRL(rtk_uint32 bypass);
158ret_t rtl8367c_getAsicIGMPBypassStormCTRL(rtk_uint32 *pBypass);
159ret_t rtl8367c_setAsicIGMPIsoLeaky(rtk_uint32 leaky);
160ret_t rtl8367c_getAsicIGMPIsoLeaky(rtk_uint32 *pLeaky);
161ret_t rtl8367c_setAsicIGMPVLANLeaky(rtk_uint32 leaky);
162ret_t rtl8367c_getAsicIGMPVLANLeaky(rtk_uint32 *pLeaky);
163ret_t rtl8367c_setAsicIGMPBypassGroup(rtk_uint32 bypassType, rtk_uint32 enabled);
164ret_t rtl8367c_getAsicIGMPBypassGroup(rtk_uint32 bypassType, rtk_uint32 *pEnabled);
165
166#endif /*#ifndef _RTL8367C_ASICDRV_IGMP_H_*/
167
168