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 (¶g¤T, 08 ¤T¤ë 2017) $
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : SVLAN related functions
18 #ifndef _RTL8367C_ASICDRV_SVLAN_H_
19 #define _RTL8367C_ASICDRV_SVLAN_H_
21 #include <rtl8367c_asicdrv.h>
23 #define RTL8367C_C2SIDXNO 128
24 #define RTL8367C_C2SIDXMAX (RTL8367C_C2SIDXNO-1)
25 #define RTL8367C_MC2SIDXNO 32
26 #define RTL8367C_MC2SIDXMAX (RTL8367C_MC2SIDXNO-1)
27 #define RTL8367C_SP2CIDXNO 128
28 #define RTL8367C_SP2CMAX (RTL8367C_SP2CIDXNO-1)
30 #define RTL8367C_SVLAN_MEMCONF_LEN 4
31 #define RTL8367C_SVLAN_MC2S_LEN 5
32 #define RTL8367C_SVLAN_SP2C_LEN 2
36 SPRISEL_INTERNALPRI
= 0,
43 enum RTL8367C_SUNACCEPT
51 enum RTL8367C_SVLAN_MC2S_MODE
53 SVLAN_MC2S_MODE_MAC
= 0,
59 typedef struct rtl8367c_svlan_memconf_s
{
61 rtk_uint16 vs_member
:11;
62 rtk_uint16 vs_untag
:11;
64 rtk_uint16 vs_fid_msti
:4;
65 rtk_uint16 vs_priority
:3;
66 rtk_uint16 vs_force_fid
:1;
67 rtk_uint16 reserved
:8;
69 rtk_uint16 vs_svid
:12;
70 rtk_uint16 vs_efiden
:1;
74 }rtl8367c_svlan_memconf_t
;
77 typedef struct rtl8367c_svlan_mc2s_s
{
84 }rtl8367c_svlan_mc2s_t
;
87 typedef struct rtl8367c_svlan_s2c_s
{
93 }rtl8367c_svlan_s2c_t
;
95 extern ret_t
rtl8367c_setAsicSvlanIngressUntag(rtk_uint32 mode
);
96 extern ret_t
rtl8367c_getAsicSvlanIngressUntag(rtk_uint32
* pMode
);
97 extern ret_t
rtl8367c_setAsicSvlanIngressUnmatch(rtk_uint32 mode
);
98 extern ret_t
rtl8367c_getAsicSvlanIngressUnmatch(rtk_uint32
* pMode
);
99 extern ret_t
rtl8367c_setAsicSvlanTrapPriority(rtk_uint32 priority
);
100 extern ret_t
rtl8367c_getAsicSvlanTrapPriority(rtk_uint32
* pPriority
);
101 extern ret_t
rtl8367c_setAsicSvlanDefaultVlan(rtk_uint32 port
, rtk_uint32 index
);
102 extern ret_t
rtl8367c_getAsicSvlanDefaultVlan(rtk_uint32 port
, rtk_uint32
* pIndex
);
104 extern ret_t
rtl8367c_setAsicSvlanMemberConfiguration(rtk_uint32 index
,rtl8367c_svlan_memconf_t
* pSvlanMemCfg
);
105 extern ret_t
rtl8367c_getAsicSvlanMemberConfiguration(rtk_uint32 index
,rtl8367c_svlan_memconf_t
* pSvlanMemCfg
);
107 extern ret_t
rtl8367c_setAsicSvlanPrioritySel(rtk_uint32 priSel
);
108 extern ret_t
rtl8367c_getAsicSvlanPrioritySel(rtk_uint32
* pPriSel
);
109 extern ret_t
rtl8367c_setAsicSvlanTpid(rtk_uint32 protocolType
);
110 extern ret_t
rtl8367c_getAsicSvlanTpid(rtk_uint32
* pProtocolType
);
111 extern ret_t
rtl8367c_setAsicSvlanUplinkPortMask(rtk_uint32 portMask
);
112 extern ret_t
rtl8367c_getAsicSvlanUplinkPortMask(rtk_uint32
* pPortmask
);
113 extern ret_t
rtl8367c_setAsicSvlanEgressUnassign(rtk_uint32 enabled
);
114 extern ret_t
rtl8367c_getAsicSvlanEgressUnassign(rtk_uint32
* pEnabled
);
115 extern ret_t
rtl8367c_setAsicSvlanC2SConf(rtk_uint32 index
, rtk_uint32 evid
, rtk_uint32 portmask
, rtk_uint32 svidx
);
116 extern ret_t
rtl8367c_getAsicSvlanC2SConf(rtk_uint32 index
, rtk_uint32
* pEvid
, rtk_uint32
* pPortmask
, rtk_uint32
* pSvidx
);
117 extern ret_t
rtl8367c_setAsicSvlanMC2SConf(rtk_uint32 index
,rtl8367c_svlan_mc2s_t
* pSvlanMc2sCfg
);
118 extern ret_t
rtl8367c_getAsicSvlanMC2SConf(rtk_uint32 index
,rtl8367c_svlan_mc2s_t
* pSvlanMc2sCfg
);
119 extern ret_t
rtl8367c_setAsicSvlanSP2CConf(rtk_uint32 index
,rtl8367c_svlan_s2c_t
* pSvlanSp2cCfg
);
120 extern ret_t
rtl8367c_getAsicSvlanSP2CConf(rtk_uint32 index
,rtl8367c_svlan_s2c_t
* pSvlanSp2cCfg
);
121 extern ret_t
rtl8367c_setAsicSvlanDmacCvidSel(rtk_uint32 port
, rtk_uint32 enabled
);
122 extern ret_t
rtl8367c_getAsicSvlanDmacCvidSel(rtk_uint32 port
, rtk_uint32
* pEnabled
);
123 extern ret_t
rtl8367c_setAsicSvlanUntagVlan(rtk_uint32 index
);
124 extern ret_t
rtl8367c_getAsicSvlanUntagVlan(rtk_uint32
* pIndex
);
125 extern ret_t
rtl8367c_setAsicSvlanUnmatchVlan(rtk_uint32 index
);
126 extern ret_t
rtl8367c_getAsicSvlanUnmatchVlan(rtk_uint32
* pIndex
);
127 extern ret_t
rtl8367c_setAsicSvlanLookupType(rtk_uint32 type
);
128 extern ret_t
rtl8367c_getAsicSvlanLookupType(rtk_uint32
* pType
);
131 #endif /*#ifndef _RTL8367C_ASICDRV_SVLAN_H_*/