#ifndef _RTL8370_ASICDRV_VLAN_H_ #define _RTL8370_ASICDRV_VLAN_H_ /****************************************************************/ /* Header File inclusion */ /****************************************************************/ #include <rtl8370_asicdrv.h> /****************************************************************/ /* Constant Definition */ /****************************************************************/ #define RTL8370_METERIDXMAX 0x3F #define RTL8370_PROTOVLAN_GIDX_MAX 3 #define RTL8370_PROTOVLAN_GROUPNO 4 /****************************************************************/ /* Type Definition */ /****************************************************************/ typedef struct VLANCONFIGSMI { #ifdef _LITTLE_ENDIAN uint16 mbr:16; uint16 fid:12; uint16 msti:4; uint16 lurep:1; uint16 vbpen:1; uint16 vbpri:3; uint16 envlanpol:1; uint16 meteridx:8; uint16 reserved1:2; uint16 evid:13; uint16 reserved2:3; #else uint16 mbr:16; uint16 msti:4; uint16 fid:12; uint16 reserved1:2; uint16 meteridx:8; uint16 envlanpol:1; uint16 vbpri:3; uint16 vbpen:1; uint16 lurep:1; uint16 reserved2:3; uint16 evid:13; #endif }rtl8370_vlanconfigsmi; typedef struct VLANCONFIGUSER { uint16 evid; uint16 lurep; uint16 mbr; uint16 fid; uint16 msti; uint16 envlanpol; uint16 meteridx; uint16 vbpen; uint16 vbpri; }rtl8370_vlanconfiguser; typedef struct VLANTABLE { #ifdef _LITTLE_ENDIAN uint16 mbr; uint16 fid:12; uint16 msti:4; uint16 lurep:1; uint16 vbpen:1; uint16 vbpri:3; uint16 envlanpol:1; uint16 meteridx:8; uint16 untag1:2; uint16 untag2:14; uint16 reserved1:2; #else uint16 mbr; uint16 msti:4; uint16 fid:12; uint16 untag1:2; uint16 meteridx:8; uint16 envlanpol:1; uint16 vbpri:3; uint16 vbpen:1; uint16 lurep:1; uint16 reserved1:2; uint16 untag2:14; #endif }rtl8370_vlan4kentrysmi; typedef struct USER_VLANTABLE{ uint16 vid; uint16 lurep; uint16 mbr; uint16 untag; uint16 fid; uint16 msti; uint16 envlanpol; uint16 meteridx; uint16 vbpen; uint16 vbpri; }rtl8370_user_vlan4kentry; typedef enum { FRAME_TYPE_BOTH = 0, FRAME_TYPE_TAGGED_ONLY, FRAME_TYPE_UNTAGGED_ONLY, FRAME_TYPE_MAX_BOUND } rtl8370_accframetype; typedef enum { EG_TAG_MODE_ORI = 0, EG_TAG_MODE_KEEP, EG_TAG_MODE_PRI_TAG, EG_TAG_MODE_REAL_KEEP, EG_TAG_MODE_MAX_BOUND } rtl8370_egtagmode; typedef enum { PPVLAN_FRAME_TYPE_ETHERNET = 0, PPVLAN_FRAME_TYPE_LLC, PPVLAN_FRAME_TYPE_RFC1042, PPVLAN_FRAME_TYPE_MAX_BOUND } rtl8370_provlan_frametype; enum RTL8370_STPST { STPST_DISABLED = 0, STPST_BLOCKING, STPST_LEARNING, STPST_FORWARDING }; typedef struct { rtl8370_provlan_frametype frame_type; uint32 ether_type; } rtl8370_protocolgdatacfg; typedef struct { uint32 valid; uint32 vlan_idx; uint32 priority; } rtl8370_protocolvlancfg; /****************************************************************/ /* Driver Proto Type Definition */ /****************************************************************/ extern ret_t rtl8370_setAsicVlanMemberConfig(uint32 index, rtl8370_vlanconfiguser *ptr_vlancfg); extern ret_t rtl8370_getAsicVlanMemberConfig(uint32 index, rtl8370_vlanconfiguser *ptr_vlancfg); extern ret_t rtl8370_setAsicVlan4kEntry(rtl8370_user_vlan4kentry *ptr_vlan4kEntry ); extern ret_t rtl8370_getAsicVlan4kEntry(rtl8370_user_vlan4kentry *ptr_vlan4kEntry ); extern ret_t rtl8370_setAsicVlanAccpetFrameType(uint32 port, rtl8370_accframetype frame_type); extern ret_t rtl8370_getAsicVlanAccpetFrameType(uint32 port, rtl8370_accframetype *ptr_frame_type); extern ret_t rtl8370_setAsicVlanIngressFilter(uint32 port, uint32 enabled); extern ret_t rtl8370_getAsicVlanIngressFilter(uint32 port, uint32 *ptr_enabled); extern ret_t rtl8370_setAsicVlanEgressTagMode(uint32 port, rtl8370_egtagmode tag_mode); extern ret_t rtl8370_getAsicVlanEgressTagMode(uint32 port, rtl8370_egtagmode *ptr_tag_mode); extern ret_t rtl8370_setAsicVlanPortBasedVID(uint32 port, uint32 index, uint32 pri); extern ret_t rtl8370_getAsicVlanPortBasedVID(uint32 port, uint32 *ptr_index, uint32 *ptr_pri); extern ret_t rtl8370_setAsicVlanProtocolBasedGroupData(uint32 index, rtl8370_protocolgdatacfg *ptr_pbcfg); extern ret_t rtl8370_getAsicVlanProtocolBasedGroupData(uint32 index, rtl8370_protocolgdatacfg *ptr_pbcfg); extern ret_t rtl8370_setAsicVlanPortAndProtocolBased(uint32 port, uint32 index, rtl8370_protocolvlancfg *ptr_ppbcfg); extern ret_t rtl8370_getAsicVlanPortAndProtocolBased(uint32 port, uint32 index, rtl8370_protocolvlancfg *ptr_ppbcfg); extern ret_t rtl8370_setAsicVlanFilter(uint32 enabled); extern ret_t rtl8370_getAsicVlanFilter(uint32* enabled); extern ret_t rtl8370_setAsicPortBasedFid(uint32 port, uint32 fid); extern ret_t rtl8370_getAsicPortBasedFid(uint32 port, uint32* fid); extern ret_t rtl8370_setAsicPortBasedFidEn(uint32 port, uint32 enabled); extern ret_t rtl8370_getAsicPortBasedFidEn(uint32 port, uint32* enabled); extern ret_t rtl8370_setAsicSpanningTreeStatus(uint32 port, uint32 msti, uint32 state); extern ret_t rtl8370_getAsicSpanningTreeStatus(uint32 port, uint32 msti, uint32* state); #endif /*#ifndef _RTL8370_ASICDRV_VLAN_H_*/