1#ifndef _RTL8367C_ASICDRV_SVLAN_H_ 2#define _RTL8367C_ASICDRV_SVLAN_H_ 3 4#include <rtl8367c_asicdrv.h> 5 6#define RTL8367C_C2SIDXNO 128 7#define RTL8367C_C2SIDXMAX (RTL8367C_C2SIDXNO-1) 8#define RTL8367C_MC2SIDXNO 32 9#define RTL8367C_MC2SIDXMAX (RTL8367C_MC2SIDXNO-1) 10#define RTL8367C_SP2CIDXNO 128 11#define RTL8367C_SP2CMAX (RTL8367C_SP2CIDXNO-1) 12 13 14enum RTL8367C_SPRISEL 15{ 16 SPRISEL_INTERNALPRI = 0, 17 SPRISEL_CTAGPRI, 18 SPRISEL_VSPRI, 19 SPRISEL_PBPRI, 20 SPRISEL_END 21}; 22 23enum RTL8367C_SUNACCEPT 24{ 25 SUNACCEPT_DROP = 0, 26 SUNACCEPT_TRAP, 27 SUNACCEPT_SVLAN, 28 SUNACCEPT_END 29}; 30 31enum RTL8367C_SVLAN_MC2S_MODE 32{ 33 SVLAN_MC2S_MODE_MAC = 0, 34 SVLAN_MC2S_MODE_IP, 35 SVLAN_MC2S_MODE_END 36}; 37 38 39typedef struct rtl8367c_svlan_memconf_s{ 40 41 rtk_uint16 vs_member:11; 42 rtk_uint16 vs_untag:11; 43 44 rtk_uint16 vs_fid_msti:4; 45 rtk_uint16 vs_priority:3; 46 rtk_uint16 vs_force_fid:1; 47 rtk_uint16 reserved:8; 48 49 rtk_uint16 vs_svid:12; 50 rtk_uint16 vs_efiden:1; 51 rtk_uint16 vs_efid:3; 52 53 54}rtl8367c_svlan_memconf_t; 55 56typedef struct rtl8367c_svlan_memconf_smi_s{ 57#ifdef _LITTLE_ENDIAN 58 59 rtk_uint16 vs_member:8; 60 rtk_uint16 vs_untag:8; 61 62 rtk_uint16 vs_fid_msti:4; 63 rtk_uint16 vs_priority:3; 64 rtk_uint16 vs_force_fid:1; 65 rtk_uint16 reserved1:8; 66 67 rtk_uint16 vs_svid:12; 68 rtk_uint16 vs_efiden:1; 69 rtk_uint16 vs_efid:3; 70 71 rtk_uint16 vs_member_ext:3; 72 rtk_uint16 vs_untag_ext:3; 73 rtk_uint16 reserved2:12; 74#else 75 rtk_uint16 vs_untag:8; 76 rtk_uint16 vs_member:8; 77 78 rtk_uint16 reserved1:8; 79 rtk_uint16 vs_force_fid:1; 80 rtk_uint16 vs_priority:3; 81 rtk_uint16 vs_fid_msti:4; 82 83 rtk_uint16 vs_efid:3; 84 rtk_uint16 vs_efiden:1; 85 rtk_uint16 vs_svid:12; 86 87 rtk_uint16 reserved2:12; 88 rtk_uint16 vs_untag_ext:3; 89 rtk_uint16 vs_member_ext:3; 90#endif 91}rtl8367c_svlan_memconf_smi_t; 92 93 94typedef struct rtl8367c_svlan_c2s_smi_s{ 95 96#ifdef _LITTLE_ENDIAN 97 98 rtk_uint16 svidx:6; 99 rtk_uint16 reserved:10; 100 101 rtk_uint16 c2senPmsk:11; 102 rtk_uint16 reserved2:5; 103 104 rtk_uint16 evid:13; 105 rtk_uint16 reserved3:3; 106 107#else 108 109 rtk_uint16 reserved:10; 110 rtk_uint16 svidx:6; 111 112 rtk_uint16 reserved2:5; 113 rtk_uint16 c2senPmsk:11; 114 115 rtk_uint16 reserved3:3; 116 rtk_uint16 evid:13; 117 118#endif 119}rtl8367c_svlan_c2s_smi_t; 120 121 122typedef struct rtl8367c_svlan_mc2s_s{ 123 124 rtk_uint16 valid:1; 125 rtk_uint16 format:1; 126 rtk_uint16 svidx:6; 127 rtk_uint32 sdata; 128 rtk_uint32 smask; 129}rtl8367c_svlan_mc2s_t; 130 131typedef struct rtl8367c_svlan_mc2s_smi_s{ 132 133#ifdef _LITTLE_ENDIAN 134 135 rtk_uint16 svidx:6; 136 rtk_uint16 format:1; 137 rtk_uint16 valid:1; 138 rtk_uint16 reserved:8; 139 140 rtk_uint16 mask0:8; 141 rtk_uint16 mask1:8; 142 143 rtk_uint16 mask2:8; 144 rtk_uint16 mask3:8; 145 146 rtk_uint16 data0:8; 147 rtk_uint16 data1:8; 148 149 rtk_uint16 data2:8; 150 rtk_uint16 data3:8; 151 152#else 153 rtk_uint16 reserved:8; 154 rtk_uint16 valid:1; 155 rtk_uint16 format:1; 156 rtk_uint16 svidx:6; 157 158 rtk_uint16 mask1:8; 159 rtk_uint16 mask0:8; 160 161 rtk_uint16 mask3:8; 162 rtk_uint16 mask2:8; 163 164 rtk_uint16 data1:8; 165 rtk_uint16 data0:8; 166 167 rtk_uint16 data3:8; 168 rtk_uint16 data2:8; 169 170#endif 171}rtl8367c_svlan_mc2s_smi_t; 172 173typedef struct rtl8367c_svlan_s2c_s{ 174 175 rtk_uint16 valid:1; 176 rtk_uint16 svidx:6; 177 rtk_uint16 dstport:4; 178 rtk_uint32 vid:12; 179}rtl8367c_svlan_s2c_t; 180 181typedef struct rtl8367c_svlan_s2c_smi_s{ 182 183#ifdef _LITTLE_ENDIAN 184 185 rtk_uint16 dstport:3; 186 rtk_uint16 svidx:6; 187 rtk_uint16 dstport_ext:1; 188 rtk_uint16 reserved_1:6; 189 190 rtk_uint16 vid:12; 191 rtk_uint16 valid:1; 192 rtk_uint16 reserved_2:3; 193#else 194 rtk_uint16 reserved_1:6; 195 rtk_uint16 dstport_ext:1; 196 rtk_uint16 svidx:6; 197 rtk_uint16 dstport:3; 198 199 rtk_uint16 reserved_2:3; 200 rtk_uint16 valid:1; 201 rtk_uint16 vid:12; 202#endif 203}rtl8367c_svlan_s2c_smi_t; 204 205extern ret_t rtl8367c_setAsicSvlanIngressUntag(rtk_uint32 mode); 206extern ret_t rtl8367c_getAsicSvlanIngressUntag(rtk_uint32* pMode); 207extern ret_t rtl8367c_setAsicSvlanIngressUnmatch(rtk_uint32 mode); 208extern ret_t rtl8367c_getAsicSvlanIngressUnmatch(rtk_uint32* pMode); 209extern ret_t rtl8367c_setAsicSvlanTrapPriority(rtk_uint32 priority); 210extern ret_t rtl8367c_getAsicSvlanTrapPriority(rtk_uint32* pPriority); 211extern ret_t rtl8367c_setAsicSvlanDefaultVlan(rtk_uint32 port, rtk_uint32 index); 212extern ret_t rtl8367c_getAsicSvlanDefaultVlan(rtk_uint32 port, rtk_uint32* pIndex); 213 214extern ret_t rtl8367c_setAsicSvlanMemberConfiguration(rtk_uint32 index,rtl8367c_svlan_memconf_t* pSvlanMemCfg); 215extern ret_t rtl8367c_getAsicSvlanMemberConfiguration(rtk_uint32 index,rtl8367c_svlan_memconf_t* pSvlanMemCfg); 216 217extern ret_t rtl8367c_setAsicSvlanPrioritySel(rtk_uint32 priSel); 218extern ret_t rtl8367c_getAsicSvlanPrioritySel(rtk_uint32* pPriSel); 219extern ret_t rtl8367c_setAsicSvlanTpid(rtk_uint32 protocolType); 220extern ret_t rtl8367c_getAsicSvlanTpid(rtk_uint32* pProtocolType); 221extern ret_t rtl8367c_setAsicSvlanUplinkPortMask(rtk_uint32 portMask); 222extern ret_t rtl8367c_getAsicSvlanUplinkPortMask(rtk_uint32* pPortmask); 223extern ret_t rtl8367c_setAsicSvlanEgressUnassign(rtk_uint32 enabled); 224extern ret_t rtl8367c_getAsicSvlanEgressUnassign(rtk_uint32* pEnabled); 225extern ret_t rtl8367c_setAsicSvlanC2SConf(rtk_uint32 index, rtk_uint32 evid, rtk_uint32 portmask, rtk_uint32 svidx); 226extern ret_t rtl8367c_getAsicSvlanC2SConf(rtk_uint32 index, rtk_uint32* pEvid, rtk_uint32* pPortmask, rtk_uint32* pSvidx); 227extern ret_t rtl8367c_setAsicSvlanMC2SConf(rtk_uint32 index,rtl8367c_svlan_mc2s_t* pSvlanMc2sCfg); 228extern ret_t rtl8367c_getAsicSvlanMC2SConf(rtk_uint32 index,rtl8367c_svlan_mc2s_t* pSvlanMc2sCfg); 229extern ret_t rtl8367c_setAsicSvlanSP2CConf(rtk_uint32 index,rtl8367c_svlan_s2c_t* pSvlanSp2cCfg); 230extern ret_t rtl8367c_getAsicSvlanSP2CConf(rtk_uint32 index,rtl8367c_svlan_s2c_t* pSvlanSp2cCfg); 231extern ret_t rtl8367c_setAsicSvlanDmacCvidSel(rtk_uint32 port, rtk_uint32 enabled); 232extern ret_t rtl8367c_getAsicSvlanDmacCvidSel(rtk_uint32 port, rtk_uint32* pEnabled); 233extern ret_t rtl8367c_setAsicSvlanUntagVlan(rtk_uint32 index); 234extern ret_t rtl8367c_getAsicSvlanUntagVlan(rtk_uint32* pIndex); 235extern ret_t rtl8367c_setAsicSvlanUnmatchVlan(rtk_uint32 index); 236extern ret_t rtl8367c_getAsicSvlanUnmatchVlan(rtk_uint32* pIndex); 237extern ret_t rtl8367c_setAsicSvlanLookupType(rtk_uint32 type); 238extern ret_t rtl8367c_getAsicSvlanLookupType(rtk_uint32* pType); 239 240 241#endif /*#ifndef _RTL8367C_ASICDRV_SVLAN_H_*/ 242 243