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