u-boot-2018/include/rtl8363_nb/rtl8367c_asicdrv_port.h
2024-05-31 13:50:08 +08:00

222 lines
6.8 KiB
C

// SPDX-License-Identifier: GPL-2.0+
#ifndef _RTL8367C_ASICDRV_PORTSECURITY_H_
#define _RTL8367C_ASICDRV_PORTSECURITY_H_
#include <rtl8367c_asicdrv.h>
#include <rtl8367c_asicdrv_unknownMulticast.h>
#include <rtl8367c_asicdrv_phy.h>
/****************************************************************/
/* Type Definition */
/****************************************************************/
#define RTL8367C_MAC7 7
#define RTL8367C_EXTNO 3
#define RTL8367C_RTCT_PAGE (11)
#define RTL8367C_RTCT_RESULT_A_REG (27)
#define RTL8367C_RTCT_RESULT_B_REG (28)
#define RTL8367C_RTCT_RESULT_C_REG (29)
#define RTL8367C_RTCT_RESULT_D_REG (30)
#define RTL8367C_RTCT_STATUS_REG (26)
enum L2_SECURITY_BEHAVE
{
L2_BEHAVE_FLOODING = 0,
L2_BEHAVE_DROP,
L2_BEHAVE_TRAP,
L2_BEHAVE_END
};
enum L2_UNDA_BEHAVE
{
L2_UNDA_BEHAVE_FLOODING_PMASK = 0,
L2_UNDA_BEHAVE_DROP,
L2_UNDA_BEHAVE_TRAP,
L2_UNDA_BEHAVE_FLOODING,
L2_UNDA_BEHAVE_END
};
enum L2_SECURITY_SA_BEHAVE
{
L2_BEHAVE_SA_FLOODING = 0,
L2_BEHAVE_SA_DROP,
L2_BEHAVE_SA_TRAP,
L2_BEHAVE_SA_COPY28051,
L2_BEHAVE_SA_END
};
/* enum for port current link speed */
enum SPEEDMODE
{
SPD_10M = 0,
SPD_100M,
SPD_1000M,
SPD_2500M
};
/* enum for mac link mode */
enum LINKMODE
{
MAC_NORMAL = 0,
MAC_FORCE,
};
/* enum for port current link duplex mode */
enum DUPLEXMODE
{
HALF_DUPLEX = 0,
FULL_DUPLEX
};
/* enum for port current MST mode */
enum MSTMODE
{
SLAVE_MODE= 0,
MASTER_MODE
};
enum EXTMODE
{
EXT_DISABLE = 0,
EXT_RGMII,
EXT_MII_MAC,
EXT_MII_PHY,
EXT_TMII_MAC,
EXT_TMII_PHY,
EXT_GMII,
EXT_RMII_MAC,
EXT_RMII_PHY,
EXT_SGMII,
EXT_HSGMII,
EXT_1000X_100FX,
EXT_1000X,
EXT_100FX,
EXT_RGMII_2,
EXT_MII_MAC_2,
EXT_MII_PHY_2,
EXT_TMII_MAC_2,
EXT_TMII_PHY_2,
EXT_RMII_MAC_2,
EXT_RMII_PHY_2,
EXT_END
};
enum DOSTYPE
{
DOS_DAEQSA = 0,
DOS_LANDATTACKS,
DOS_BLATATTACKS,
DOS_SYNFINSCAN,
DOS_XMASCAN,
DOS_NULLSCAN,
DOS_SYN1024,
DOS_TCPSHORTHDR,
DOS_TCPFRAGERROR,
DOS_ICMPFRAGMENT,
DOS_END,
};
typedef struct rtl8367c_port_ability_s{
rtk_uint16 forcemode;
rtk_uint16 mstfault;
rtk_uint16 mstmode;
rtk_uint16 nway;
rtk_uint16 txpause;
rtk_uint16 rxpause;
rtk_uint16 link;
rtk_uint16 duplex;
rtk_uint16 speed;
}rtl8367c_port_ability_t;
typedef struct rtl8367c_port_status_s{
rtk_uint16 lpi1000;
rtk_uint16 lpi100;
rtk_uint16 mstfault;
rtk_uint16 mstmode;
rtk_uint16 nway;
rtk_uint16 txpause;
rtk_uint16 rxpause;
rtk_uint16 link;
rtk_uint16 duplex;
rtk_uint16 speed;
}rtl8367c_port_status_t;
typedef struct rtct_result_s
{
rtk_uint32 channelAShort;
rtk_uint32 channelBShort;
rtk_uint32 channelCShort;
rtk_uint32 channelDShort;
rtk_uint32 channelAOpen;
rtk_uint32 channelBOpen;
rtk_uint32 channelCOpen;
rtk_uint32 channelDOpen;
rtk_uint32 channelAMismatch;
rtk_uint32 channelBMismatch;
rtk_uint32 channelCMismatch;
rtk_uint32 channelDMismatch;
rtk_uint32 channelALinedriver;
rtk_uint32 channelBLinedriver;
rtk_uint32 channelCLinedriver;
rtk_uint32 channelDLinedriver;
rtk_uint32 channelALen;
rtk_uint32 channelBLen;
rtk_uint32 channelCLen;
rtk_uint32 channelDLen;
} rtl8367c_port_rtct_result_t;
/****************************************************************/
/* Driver Proto Type Definition */
/****************************************************************/
extern ret_t rtl8367c_setAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 behavior);
extern ret_t rtl8367c_getAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 *pBehavior);
extern ret_t rtl8367c_setAsicPortUnknownSaBehavior(rtk_uint32 behavior);
extern ret_t rtl8367c_getAsicPortUnknownSaBehavior(rtk_uint32 *pBehavior);
extern ret_t rtl8367c_setAsicPortUnmatchedSaBehavior(rtk_uint32 behavior);
extern ret_t rtl8367c_getAsicPortUnmatchedSaBehavior(rtk_uint32 *pBehavior);
extern ret_t rtl8367c_setAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 enabled);
extern ret_t rtl8367c_getAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 *pEnabled);
extern ret_t rtl8367c_setAsicPortUnknownDaFloodingPortmask(rtk_uint32 portmask);
extern ret_t rtl8367c_getAsicPortUnknownDaFloodingPortmask(rtk_uint32 *pPortmask);
extern ret_t rtl8367c_setAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 portmask);
extern ret_t rtl8367c_getAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 *pPortmask);
extern ret_t rtl8367c_setAsicPortBcastFloodingPortmask(rtk_uint32 portmask);
extern ret_t rtl8367c_getAsicPortBcastFloodingPortmask(rtk_uint32 *pPortmask);
extern ret_t rtl8367c_setAsicPortBlockSpa(rtk_uint32 port, rtk_uint32 block);
extern ret_t rtl8367c_getAsicPortBlockSpa(rtk_uint32 port, rtk_uint32 *pBlock);
extern ret_t rtl8367c_setAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility);
extern ret_t rtl8367c_getAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility);
extern ret_t rtl8367c_getAsicPortStatus(rtk_uint32 port, rtl8367c_port_status_t *pPortStatus);
extern ret_t rtl8367c_setAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility);
extern ret_t rtl8367c_getAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility);
extern ret_t rtl8367c_setAsicPortExtMode(rtk_uint32 id, rtk_uint32 mode);
extern ret_t rtl8367c_getAsicPortExtMode(rtk_uint32 id, rtk_uint32 *pMode);
extern ret_t rtl8367c_setAsicPortDos(rtk_uint32 type, rtk_uint32 drop);
extern ret_t rtl8367c_getAsicPortDos(rtk_uint32 type, rtk_uint32* pDrop);
extern ret_t rtl8367c_setAsicPortEnableAll(rtk_uint32 enable);
extern ret_t rtl8367c_getAsicPortEnableAll(rtk_uint32 *pEnable);
extern ret_t rtl8367c_setAsicPortSmallIpg(rtk_uint32 port, rtk_uint32 enable);
extern ret_t rtl8367c_getAsicPortSmallIpg(rtk_uint32 port, rtk_uint32* pEnable);
extern ret_t rtl8367c_setAsicPortLoopback(rtk_uint32 port, rtk_uint32 enable);
extern ret_t rtl8367c_getAsicPortLoopback(rtk_uint32 port, rtk_uint32 *pEnable);
extern ret_t rtl8367c_setAsicPortRTCTEnable(rtk_uint32 portmask);
extern ret_t rtl8367c_setAsicPortRTCTDisable(rtk_uint32 portmask);
extern ret_t rtl8367c_getAsicPortRTCTResult(rtk_uint32 port, rtl8367c_port_rtct_result_t *pResult);
extern ret_t rtl8367c_sdsReset(rtk_uint32 id);
extern ret_t rtl8367c_getSdsLinkStatus(rtk_uint32 ext_id, rtk_uint32 *pSignalDetect, rtk_uint32 *pSync, rtk_uint32 *pLink);
extern ret_t rtl8367c_setSgmiiNway(rtk_uint32 ext_id, rtk_uint32 state);
extern ret_t rtl8367c_getSgmiiNway(rtk_uint32 ext_id, rtk_uint32 *pState);
#endif /*_RTL8367C_ASICDRV_PORTSECURITY_H_*/