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-09 09:33:15 +0800 (¶g¥|, 09 ¤T¤ë 2017) $
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : Port security related functions
18 #ifndef _RTL8367C_ASICDRV_PORTSECURITY_H_
19 #define _RTL8367C_ASICDRV_PORTSECURITY_H_
21 #include <rtl8367c_asicdrv.h>
22 #include <rtl8367c_asicdrv_unknownMulticast.h>
23 #include <rtl8367c_asicdrv_phy.h>
25 /****************************************************************/
27 /****************************************************************/
29 #define RTL8367C_MAC7 7
30 #define RTL8367C_EXTNO 3
32 #define RTL8367C_RTCT_PAGE (11)
33 #define RTL8367C_RTCT_RESULT_A_REG (27)
34 #define RTL8367C_RTCT_RESULT_B_REG (28)
35 #define RTL8367C_RTCT_RESULT_C_REG (29)
36 #define RTL8367C_RTCT_RESULT_D_REG (30)
37 #define RTL8367C_RTCT_STATUS_REG (26)
39 enum L2_SECURITY_BEHAVE
41 L2_BEHAVE_FLOODING
= 0,
49 L2_UNDA_BEHAVE_FLOODING_PMASK
= 0,
52 L2_UNDA_BEHAVE_FLOODING
,
56 enum L2_SECURITY_SA_BEHAVE
58 L2_BEHAVE_SA_FLOODING
= 0,
61 L2_BEHAVE_SA_COPY28051
,
65 /* enum for port current link speed */
74 /* enum for mac link mode */
81 /* enum for port current link duplex mode */
88 /* enum for port current MST mode */
138 typedef struct rtl8367c_port_ability_s
{
139 rtk_uint16 forcemode
;
148 }rtl8367c_port_ability_t
;
150 typedef struct rtl8367c_port_status_s
{
163 }rtl8367c_port_status_t
;
165 typedef struct rtct_result_s
167 rtk_uint32 channelAShort
;
168 rtk_uint32 channelBShort
;
169 rtk_uint32 channelCShort
;
170 rtk_uint32 channelDShort
;
172 rtk_uint32 channelAOpen
;
173 rtk_uint32 channelBOpen
;
174 rtk_uint32 channelCOpen
;
175 rtk_uint32 channelDOpen
;
177 rtk_uint32 channelAMismatch
;
178 rtk_uint32 channelBMismatch
;
179 rtk_uint32 channelCMismatch
;
180 rtk_uint32 channelDMismatch
;
182 rtk_uint32 channelALinedriver
;
183 rtk_uint32 channelBLinedriver
;
184 rtk_uint32 channelCLinedriver
;
185 rtk_uint32 channelDLinedriver
;
187 rtk_uint32 channelALen
;
188 rtk_uint32 channelBLen
;
189 rtk_uint32 channelCLen
;
190 rtk_uint32 channelDLen
;
191 } rtl8367c_port_rtct_result_t
;
194 /****************************************************************/
195 /* Driver Proto Type Definition */
196 /****************************************************************/
197 extern ret_t
rtl8367c_setAsicPortUnknownDaBehavior(rtk_uint32 port
, rtk_uint32 behavior
);
198 extern ret_t
rtl8367c_getAsicPortUnknownDaBehavior(rtk_uint32 port
, rtk_uint32
*pBehavior
);
199 extern ret_t
rtl8367c_setAsicPortUnknownSaBehavior(rtk_uint32 behavior
);
200 extern ret_t
rtl8367c_getAsicPortUnknownSaBehavior(rtk_uint32
*pBehavior
);
201 extern ret_t
rtl8367c_setAsicPortUnmatchedSaBehavior(rtk_uint32 behavior
);
202 extern ret_t
rtl8367c_getAsicPortUnmatchedSaBehavior(rtk_uint32
*pBehavior
);
203 extern ret_t
rtl8367c_setAsicPortUnmatchedSaMoving(rtk_uint32 port
, rtk_uint32 enabled
);
204 extern ret_t
rtl8367c_getAsicPortUnmatchedSaMoving(rtk_uint32 port
, rtk_uint32
*pEnabled
);
205 extern ret_t
rtl8367c_setAsicPortUnknownDaFloodingPortmask(rtk_uint32 portmask
);
206 extern ret_t
rtl8367c_getAsicPortUnknownDaFloodingPortmask(rtk_uint32
*pPortmask
);
207 extern ret_t
rtl8367c_setAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 portmask
);
208 extern ret_t
rtl8367c_getAsicPortUnknownMulticastFloodingPortmask(rtk_uint32
*pPortmask
);
209 extern ret_t
rtl8367c_setAsicPortBcastFloodingPortmask(rtk_uint32 portmask
);
210 extern ret_t
rtl8367c_getAsicPortBcastFloodingPortmask(rtk_uint32
*pPortmask
);
211 extern ret_t
rtl8367c_setAsicPortBlockSpa(rtk_uint32 port
, rtk_uint32 block
);
212 extern ret_t
rtl8367c_getAsicPortBlockSpa(rtk_uint32 port
, rtk_uint32
*pBlock
);
213 extern ret_t
rtl8367c_setAsicPortForceLink(rtk_uint32 port
, rtl8367c_port_ability_t
*pPortAbility
);
214 extern ret_t
rtl8367c_getAsicPortForceLink(rtk_uint32 port
, rtl8367c_port_ability_t
*pPortAbility
);
215 extern ret_t
rtl8367c_getAsicPortStatus(rtk_uint32 port
, rtl8367c_port_status_t
*pPortStatus
);
216 extern ret_t
rtl8367c_setAsicPortForceLinkExt(rtk_uint32 id
, rtl8367c_port_ability_t
*pPortAbility
);
217 extern ret_t
rtl8367c_getAsicPortForceLinkExt(rtk_uint32 id
, rtl8367c_port_ability_t
*pPortAbility
);
218 extern ret_t
rtl8367c_setAsicPortExtMode(rtk_uint32 id
, rtk_uint32 mode
);
219 extern ret_t
rtl8367c_getAsicPortExtMode(rtk_uint32 id
, rtk_uint32
*pMode
);
220 extern ret_t
rtl8367c_setAsicPortDos(rtk_uint32 type
, rtk_uint32 drop
);
221 extern ret_t
rtl8367c_getAsicPortDos(rtk_uint32 type
, rtk_uint32
* pDrop
);
222 extern ret_t
rtl8367c_setAsicPortEnableAll(rtk_uint32 enable
);
223 extern ret_t
rtl8367c_getAsicPortEnableAll(rtk_uint32
*pEnable
);
224 extern ret_t
rtl8367c_setAsicPortSmallIpg(rtk_uint32 port
, rtk_uint32 enable
);
225 extern ret_t
rtl8367c_getAsicPortSmallIpg(rtk_uint32 port
, rtk_uint32
* pEnable
);
226 extern ret_t
rtl8367c_setAsicPortLoopback(rtk_uint32 port
, rtk_uint32 enable
);
227 extern ret_t
rtl8367c_getAsicPortLoopback(rtk_uint32 port
, rtk_uint32
*pEnable
);
228 extern ret_t
rtl8367c_setAsicPortRTCTEnable(rtk_uint32 portmask
);
229 extern ret_t
rtl8367c_setAsicPortRTCTDisable(rtk_uint32 portmask
);
230 extern ret_t
rtl8367c_getAsicPortRTCTResult(rtk_uint32 port
, rtl8367c_port_rtct_result_t
*pResult
);
231 extern ret_t
rtl8367c_sdsReset(rtk_uint32 id
);
232 extern ret_t
rtl8367c_getSdsLinkStatus(rtk_uint32 ext_id
, rtk_uint32
*pSignalDetect
, rtk_uint32
*pSync
, rtk_uint32
*pLink
);
233 extern ret_t
rtl8367c_setSgmiiNway(rtk_uint32 ext_id
, rtk_uint32 state
);
234 extern ret_t
rtl8367c_getSgmiiNway(rtk_uint32 ext_id
, rtk_uint32
*pState
);
236 #endif /*_RTL8367C_ASICDRV_PORTSECURITY_H_*/