1#ifndef _RTL8367C_ASICDRV_PORTSECURITY_H_ 2#define _RTL8367C_ASICDRV_PORTSECURITY_H_ 3 4#include <rtl8367c_asicdrv.h> 5#include <rtl8367c_asicdrv_unknownMulticast.h> 6#include <rtl8367c_asicdrv_phy.h> 7 8/****************************************************************/ 9/* Type Definition */ 10/****************************************************************/ 11 12#define RTL8367C_MAC7 7 13#define RTL8367C_EXTNO 3 14 15#define RTL8367C_RTCT_PAGE (11) 16#define RTL8367C_RTCT_RESULT_A_REG (27) 17#define RTL8367C_RTCT_RESULT_B_REG (28) 18#define RTL8367C_RTCT_RESULT_C_REG (29) 19#define RTL8367C_RTCT_RESULT_D_REG (30) 20#define RTL8367C_RTCT_STATUS_REG (26) 21 22enum L2_SECURITY_BEHAVE 23{ 24 L2_BEHAVE_FLOODING = 0, 25 L2_BEHAVE_DROP, 26 L2_BEHAVE_TRAP, 27 L2_BEHAVE_END 28}; 29 30enum L2_UNDA_BEHAVE 31{ 32 L2_UNDA_BEHAVE_FLOODING_PMASK = 0, 33 L2_UNDA_BEHAVE_DROP, 34 L2_UNDA_BEHAVE_TRAP, 35 L2_UNDA_BEHAVE_FLOODING, 36 L2_UNDA_BEHAVE_END 37}; 38 39enum L2_SECURITY_SA_BEHAVE 40{ 41 L2_BEHAVE_SA_FLOODING = 0, 42 L2_BEHAVE_SA_DROP, 43 L2_BEHAVE_SA_TRAP, 44 L2_BEHAVE_SA_COPY28051, 45 L2_BEHAVE_SA_END 46}; 47 48/* enum for port current link speed */ 49enum SPEEDMODE 50{ 51 SPD_10M = 0, 52 SPD_100M, 53 SPD_1000M, 54 SPD_2500M 55}; 56 57/* enum for mac link mode */ 58enum LINKMODE 59{ 60 MAC_NORMAL = 0, 61 MAC_FORCE, 62}; 63 64/* enum for port current link duplex mode */ 65enum DUPLEXMODE 66{ 67 HALF_DUPLEX = 0, 68 FULL_DUPLEX 69}; 70 71/* enum for port current MST mode */ 72enum MSTMODE 73{ 74 SLAVE_MODE= 0, 75 MASTER_MODE 76}; 77 78 79enum EXTMODE 80{ 81 EXT_DISABLE = 0, 82 EXT_RGMII, 83 EXT_MII_MAC, 84 EXT_MII_PHY, 85 EXT_TMII_MAC, 86 EXT_TMII_PHY, 87 EXT_GMII, 88 EXT_RMII_MAC, 89 EXT_RMII_PHY, 90 EXT_SGMII, 91 EXT_HSGMII, 92 EXT_END 93}; 94 95enum DOSTYPE 96{ 97 DOS_DAEQSA = 0, 98 DOS_LANDATTACKS, 99 DOS_BLATATTACKS, 100 DOS_SYNFINSCAN, 101 DOS_XMASCAN, 102 DOS_NULLSCAN, 103 DOS_SYN1024, 104 DOS_TCPSHORTHDR, 105 DOS_TCPFRAGERROR, 106 DOS_ICMPFRAGMENT, 107 DOS_END, 108 109}; 110 111typedef struct rtl8367c_port_ability_s{ 112#ifdef _LITTLE_ENDIAN 113 rtk_uint16 speed:2; 114 rtk_uint16 duplex:1; 115 rtk_uint16 reserve1:1; 116 rtk_uint16 link:1; 117 rtk_uint16 rxpause:1; 118 rtk_uint16 txpause:1; 119 rtk_uint16 nway:1; 120 rtk_uint16 mstmode:1; 121 rtk_uint16 mstfault:1; 122 rtk_uint16 reserve2:2; 123 rtk_uint16 forcemode:1; 124 rtk_uint16 reserve3:3; 125#else 126 rtk_uint16 reserve3:3; 127 rtk_uint16 forcemode:1; 128 rtk_uint16 reserve2:2; 129 rtk_uint16 mstfault:1; 130 rtk_uint16 mstmode:1; 131 rtk_uint16 nway:1; 132 rtk_uint16 txpause:1; 133 rtk_uint16 rxpause:1; 134 rtk_uint16 link:1; 135 rtk_uint16 reserve1:1; 136 rtk_uint16 duplex:1; 137 rtk_uint16 speed:2; 138 139#endif 140}rtl8367c_port_ability_t; 141 142typedef struct rtl8367c_port_status_s{ 143#ifdef _LITTLE_ENDIAN 144 rtk_uint16 speed:2; 145 rtk_uint16 duplex:1; 146 rtk_uint16 reserve1:1; 147 rtk_uint16 link:1; 148 rtk_uint16 rxpause:1; 149 rtk_uint16 txpause:1; 150 rtk_uint16 nway:1; 151 rtk_uint16 mstmode:1; 152 rtk_uint16 mstfault:1; 153 rtk_uint16 lpi100:1; 154 rtk_uint16 lpi1000:1; 155 rtk_uint16 reserve2:4; 156#else 157 rtk_uint16 reserve2:4; 158 rtk_uint16 lpi1000:1; 159 rtk_uint16 lpi100:1; 160 rtk_uint16 mstfault:1; 161 rtk_uint16 mstmode:1; 162 rtk_uint16 nway:1; 163 rtk_uint16 txpause:1; 164 rtk_uint16 rxpause:1; 165 rtk_uint16 link:1; 166 rtk_uint16 reserve1:1; 167 rtk_uint16 duplex:1; 168 rtk_uint16 speed:2; 169 170#endif 171}rtl8367c_port_status_t; 172 173typedef struct rtct_result_s 174{ 175 rtk_uint32 channelAShort; 176 rtk_uint32 channelBShort; 177 rtk_uint32 channelCShort; 178 rtk_uint32 channelDShort; 179 180 rtk_uint32 channelAOpen; 181 rtk_uint32 channelBOpen; 182 rtk_uint32 channelCOpen; 183 rtk_uint32 channelDOpen; 184 185 rtk_uint32 channelAMismatch; 186 rtk_uint32 channelBMismatch; 187 rtk_uint32 channelCMismatch; 188 rtk_uint32 channelDMismatch; 189 190 rtk_uint32 channelALinedriver; 191 rtk_uint32 channelBLinedriver; 192 rtk_uint32 channelCLinedriver; 193 rtk_uint32 channelDLinedriver; 194 195 rtk_uint32 channelALen; 196 rtk_uint32 channelBLen; 197 rtk_uint32 channelCLen; 198 rtk_uint32 channelDLen; 199} rtl8367c_port_rtct_result_t; 200 201 202/****************************************************************/ 203/* Driver Proto Type Definition */ 204/****************************************************************/ 205extern ret_t rtl8367c_setAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 behavior); 206extern ret_t rtl8367c_getAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 *pBehavior); 207extern ret_t rtl8367c_setAsicPortUnknownSaBehavior(rtk_uint32 behavior); 208extern ret_t rtl8367c_getAsicPortUnknownSaBehavior(rtk_uint32 *pBehavior); 209extern ret_t rtl8367c_setAsicPortUnmatchedSaBehavior(rtk_uint32 behavior); 210extern ret_t rtl8367c_getAsicPortUnmatchedSaBehavior(rtk_uint32 *pBehavior); 211extern ret_t rtl8367c_setAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 enabled); 212extern ret_t rtl8367c_getAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 *pEnabled); 213extern ret_t rtl8367c_setAsicPortUnknownDaFloodingPortmask(rtk_uint32 portmask); 214extern ret_t rtl8367c_getAsicPortUnknownDaFloodingPortmask(rtk_uint32 *pPortmask); 215extern ret_t rtl8367c_setAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 portmask); 216extern ret_t rtl8367c_getAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 *pPortmask); 217extern ret_t rtl8367c_setAsicPortBcastFloodingPortmask(rtk_uint32 portmask); 218extern ret_t rtl8367c_getAsicPortBcastFloodingPortmask(rtk_uint32 *pPortmask); 219extern ret_t rtl8367c_setAsicPortBlockSpa(rtk_uint32 port, rtk_uint32 block); 220extern ret_t rtl8367c_getAsicPortBlockSpa(rtk_uint32 port, rtk_uint32 *pBlock); 221extern ret_t rtl8367c_setAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility); 222extern ret_t rtl8367c_getAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility); 223extern ret_t rtl8367c_getAsicPortStatus(rtk_uint32 port, rtl8367c_port_status_t *pPortStatus); 224extern ret_t rtl8367c_setAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility); 225extern ret_t rtl8367c_getAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility); 226extern ret_t rtl8367c_setAsicPortExtMode(rtk_uint32 id, rtk_uint32 mode); 227extern ret_t rtl8367c_getAsicPortExtMode(rtk_uint32 id, rtk_uint32 *pMode); 228extern ret_t rtl8367c_setAsicPortDos(rtk_uint32 type, rtk_uint32 drop); 229extern ret_t rtl8367c_getAsicPortDos(rtk_uint32 type, rtk_uint32* pDrop); 230extern ret_t rtl8367c_setAsicPortEnableAll(rtk_uint32 enable); 231extern ret_t rtl8367c_getAsicPortEnableAll(rtk_uint32 *pEnable); 232extern ret_t rtl8367c_setAsicPortSmallIpg(rtk_uint32 port, rtk_uint32 enable); 233extern ret_t rtl8367c_getAsicPortSmallIpg(rtk_uint32 port, rtk_uint32* pEnable); 234extern ret_t rtl8367c_setAsicPortLoopback(rtk_uint32 port, rtk_uint32 enable); 235extern ret_t rtl8367c_getAsicPortLoopback(rtk_uint32 port, rtk_uint32 *pEnable); 236extern ret_t rtl8367c_setAsicPortRTCT(rtk_uint32 portmask); 237extern ret_t rtl8367c_getAsicPortRTCTResult(rtk_uint32 port, rtl8367c_port_rtct_result_t *pResult); 238 239#endif /*_RTL8367C_ASICDRV_PORTSECURITY_H_*/ 240 241