#ifndef _RTL8370_ASICDRV_LUT_H_ #define _RTL8370_ASICDRV_LUT_H_ #include <rtl8370_asicdrv.h> #define RTL8370_LUT_AGETIMERMAX 7 #define RTL8370_LUT_AGESPEEDMAX 3 #define RTL8370_LUT_LEARNLIMITMAX 0x3FFF #define RTL8370_LUT_ADDRMAX 0x203F enum RTL8370_LRNOVERACT{ LRNOVERACT_FORWARD=0, LRNOVERACT_DROP, LRNOVERACT_TRAP, LRNOVERACT_MAX, }; enum RTL8370_LUTREADMETHOD{ LUTREADMETHOD_MAC =0, LUTREADMETHOD_ADDRESS, }; typedef struct LUTTABLE{ ipaddr_t sip; ipaddr_t dip; ether_addr_t mac; uint16 static_bit:1; uint16 block:1; uint16 auth:1; uint16 macpri:3; uint16 sa_en:1; uint16 da_en:1; uint16 portmask; uint16 spa:4; uint16 age:3; uint16 fid:12; uint16 efid:3; uint16 ipmul:1; uint16 valid:1; uint16 lookup_hit:1; uint16 address:14; }rtl8370_luttb; struct fdb_maclearn_st{ #ifdef _LITTLE_ENDIAN uint16 static_bit:1; uint16 block:1; uint16 auth:1; uint16 macpri:3; uint16 da_en:1; uint16 sa_en:1; uint16 spa:4; uint16 age:3; uint16 reserved1:1; uint16 reserved2:8; uint16 mac5:8; uint16 mac4:8; uint16 mac3:8; uint16 mac2:8; uint16 mac1:8; uint16 mac0:8; uint16 fid1:8; uint16 fid2:4; uint16 efid:3; uint16 ipmul:1; uint16 reserved3:8; uint16 valid:1; uint16 reserved4:15; #else uint16 reserved1:1; uint16 age:3; uint16 spa:4; uint16 sa_en:1; uint16 da_en:1; uint16 macpri:3; uint16 auth:1; uint16 block:1; uint16 static_bit:1; uint16 mac5:8; uint16 reserved2:8; uint16 mac3:8; uint16 mac4:8; uint16 mac1:8; uint16 mac2:8; uint16 fid1:8; uint16 mac0:8; uint16 reserved3:8; uint16 ipmul:1; uint16 efid:3; uint16 fid2:4; uint16 reserved4:15; uint16 valid:1; #endif }; struct fdb_l2multicast_st{ #ifdef _LITTLE_ENDIAN uint16 static_bit:1; uint16 block:1; uint16 auth:1; uint16 macpri:3; uint16 da_en:1; uint16 sa_en:1; uint16 portmask1:8; uint16 portmask2:8; uint16 mac5:8; uint16 mac4:8; uint16 mac3:8; uint16 mac2:8; uint16 mac1:8; uint16 mac0:8; uint16 fid1:8; uint16 fid2:4; uint16 efid:3; uint16 ipmul:1; uint16 reserved1:8; uint16 valid:1; uint16 reserved2:15; #else uint16 portmask1:8; uint16 sa_en:1; uint16 da_en:1; uint16 macpri:3; uint16 auth:1; uint16 block:1; uint16 static_bit:1; uint16 mac5:8; uint16 portmask2:8; uint16 mac3:8; uint16 mac4:8; uint16 mac1:8; uint16 mac2:8; uint16 fid1:8; uint16 mac0:8; uint16 reserved1:8; uint16 ipmul:1; uint16 efid:3; uint16 fid2:4; uint16 reserved2:15; uint16 valid:1; #endif }; struct fdb_ipmulticast_st{ #ifdef _LITTLE_ENDIAN uint16 static_bit:1; uint16 reserved1:2; uint16 macpri:3; uint16 da_en:1; uint16 sa_en:1; uint16 portmask1:8; uint16 portmask2:8; uint16 sip0:8; uint16 sip1:8; uint16 sip2:8; uint16 sip3:8; uint16 dip0:8; uint16 dip1:8; uint16 dip2:8; uint16 dip3:4; uint16 reserved2:3; uint16 ipmul:1; uint16 reserved3:8; uint16 valid:1; uint16 reserved4:15; #else uint16 portmask1:8; uint16 sa_en:1; uint16 da_en:1; uint16 macpri:3; uint16 reserved1:2; uint16 static_bit:1; uint16 sip3:8; uint16 portmask2:8; uint16 sip1:8; uint16 sip2:8; uint16 dip3:8; uint16 sip0:8; uint16 dip1:8; uint16 dip2:8; uint16 reserved3:8; uint16 ipmul:1; uint16 reserved2:3; uint16 dip0:4; uint16 reserved4:15; uint16 valid:1; #endif }; typedef union FDBSMITABLE{ struct fdb_ipmulticast_st smi_ipmul; struct fdb_l2multicast_st smi_l2mul; struct fdb_maclearn_st smi_auto; }rtl8370_fdbtb; extern ret_t rtl8370_setAsicLutIpMulticastLookup(uint32 enabled); extern ret_t rtl8370_getAsicLutIpMulticastLookup(uint32* enabled); extern ret_t rtl8370_setAsicLutAgeTimerSpeed( uint32 timer, uint32 speed); extern ret_t rtl8370_getAsicLutAgeTimerSpeed( uint32* timer, uint32* speed); extern ret_t rtl8370_setAsicLutCamTbUsage(uint32 disabled); extern ret_t rtl8370_getAsicLutCamTbUsage(uint32* disabled); extern ret_t rtl8370_setAsicLutCamType(uint32 type); extern ret_t rtl8370_getAsicLutCamType(uint32* type); extern ret_t rtl8370_setAsicLutLearnLimitNo(uint32 port,uint32 number); extern ret_t rtl8370_getAsicLutLearnLimitNo(uint32 port,uint32* number); extern ret_t rtl8370_setAsicLutLearnOverAct(uint32 action); extern ret_t rtl8370_getAsicLutLearnOverAct(uint32* action); extern ret_t rtl8370_setAsicL2LookupTb(rtl8370_luttb *l2Table); extern ret_t rtl8370_getAsicL2LookupTb(enum RTL8370_LUTREADMETHOD method, rtl8370_luttb *l2Table); extern ret_t rtl8370_getAsicLutLearnNo(uint32 port,uint32* number); extern ret_t rtl8370_setAsicLutLinkDownForceAging(uint32 enable); extern ret_t rtl8370_getAsicLutLinkDownForceAging(uint32* enable); #endif /*_RTL8370_ASICDRV_LUT_H_*/