sdk-hwV1.3/lichee/linux-4.9/drivers/net/phy/rtl8363_nb/vlan.h

895 lines
28 KiB
C
Executable File

/*
* Copyright (C) 2013 Realtek Semiconductor Corp.
* All Rights Reserved.
*
* This program is the proprietary software of Realtek Semiconductor
* Corporation and/or its licensors, and only be used, duplicated,
* modified or distributed under the authorized license from Realtek.
*
* ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER
* THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
*
* Purpose : RTL8367/RTL8367C switch high-level API
*
* Feature : The file includes Trap module high-layer VLAN defination
*
*/
#ifndef __RTK_API_VLAN_H__
#define __RTK_API_VLAN_H__
/*
* Data Type Declaration
*/
#define RTK_MAX_NUM_OF_PROTO_TYPE 0xFFFF
#define RTK_MAX_NUM_OF_MSTI 0xF
#define RTK_FID_MAX 0xF
typedef struct rtk_vlan_cfg_s
{
rtk_portmask_t mbr;
rtk_portmask_t untag;
rtk_uint16 ivl_en;
rtk_uint16 fid_msti;
rtk_uint16 envlanpol;
rtk_uint16 meteridx;
rtk_uint16 vbpen;
rtk_uint16 vbpri;
}rtk_vlan_cfg_t;
typedef struct rtk_vlan_mbrcfg_s
{
rtk_uint16 evid;
rtk_portmask_t mbr;
rtk_uint16 fid_msti;
rtk_uint16 envlanpol;
rtk_uint16 meteridx;
rtk_uint16 vbpen;
rtk_uint16 vbpri;
}rtk_vlan_mbrcfg_t;
typedef rtk_uint32 rtk_stp_msti_id_t; /* MSTI ID */
typedef enum rtk_stp_state_e
{
STP_STATE_DISABLED = 0,
STP_STATE_BLOCKING,
STP_STATE_LEARNING,
STP_STATE_FORWARDING,
STP_STATE_END
} rtk_stp_state_t;
typedef rtk_uint32 rtk_vlan_proto_type_t; /* protocol and port based VLAN protocol type */
typedef enum rtk_vlan_acceptFrameType_e
{
ACCEPT_FRAME_TYPE_ALL = 0, /* untagged, priority-tagged and tagged */
ACCEPT_FRAME_TYPE_TAG_ONLY, /* tagged */
ACCEPT_FRAME_TYPE_UNTAG_ONLY, /* untagged and priority-tagged */
ACCEPT_FRAME_TYPE_END
} rtk_vlan_acceptFrameType_t;
/* frame type of protocol vlan - reference 802.1v standard */
typedef enum rtk_vlan_protoVlan_frameType_e
{
FRAME_TYPE_ETHERNET = 0,
FRAME_TYPE_LLCOTHER,
FRAME_TYPE_RFC1042,
FRAME_TYPE_END
} rtk_vlan_protoVlan_frameType_t;
/* Protocol-and-port-based Vlan structure */
typedef struct rtk_vlan_protoAndPortInfo_s
{
rtk_uint32 proto_type;
rtk_vlan_protoVlan_frameType_t frame_type;
rtk_vlan_t cvid;
rtk_pri_t cpri;
}rtk_vlan_protoAndPortInfo_t;
/* tagged mode of VLAN - reference realtek private specification */
typedef enum rtk_vlan_tagMode_e
{
VLAN_TAG_MODE_ORIGINAL = 0,
VLAN_TAG_MODE_KEEP_FORMAT,
VLAN_TAG_MODE_PRI,
VLAN_TAG_MODE_REAL_KEEP_FORMAT,
VLAN_TAG_MODE_END
} rtk_vlan_tagMode_t;
typedef enum rtk_vlan_resVidAction_e
{
RESVID_ACTION_UNTAG = 0,
RESVID_ACTION_TAG,
RESVID_ACTION_END
}
rtk_vlan_resVidAction_t;
/* Function Name:
* rtk_vlan_init
* Description:
* Initialize VLAN.
* Input:
* None
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* Note:
* VLAN is disabled by default. User has to call this API to enable VLAN before
* using it. And It will set a default VLAN(vid 1) including all ports and set
* all ports PVID to the default VLAN.
*/
extern rtk_api_ret_t rtk_vlan_init(void);
/* Function Name:
* rtk_vlan_set
* Description:
* Set a VLAN entry.
* Input:
* vid - VLAN ID to configure.
* pVlanCfg - VLAN Configuration
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_L2_FID - Invalid FID.
* RT_ERR_VLAN_PORT_MBR_EXIST - Invalid member port mask.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_set(rtk_vlan_t vid, rtk_vlan_cfg_t *pVlanCfg);
/* Function Name:
* rtk_vlan_get
* Description:
* Get a VLAN entry.
* Input:
* vid - VLAN ID to configure.
* Output:
* pVlanCfg - VLAN Configuration
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_get(rtk_vlan_t vid, rtk_vlan_cfg_t *pVlanCfg);
/* Function Name:
* rtk_vlan_egrFilterEnable_set
* Description:
* Set VLAN egress filter.
* Input:
* egrFilter - Egress filtering
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_ENABLE - Invalid input parameters.
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_egrFilterEnable_set(rtk_enable_t egrFilter);
/* Function Name:
* rtk_vlan_egrFilterEnable_get
* Description:
* Get VLAN egress filter.
* Input:
* pEgrFilter - Egress filtering
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_NULL_POINTER - NULL Pointer.
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_egrFilterEnable_get(rtk_enable_t *pEgrFilter);
/* Function Name:
* rtk_vlan_mbrCfg_set
* Description:
* Set a VLAN Member Configuration entry by index.
* Input:
* idx - Index of VLAN Member Configuration.
* pMbrcfg - VLAN member Configuration.
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* Note:
* Set a VLAN Member Configuration entry by index.
*/
extern rtk_api_ret_t rtk_vlan_mbrCfg_set(rtk_uint32 idx, rtk_vlan_mbrcfg_t *pMbrcfg);
/* Function Name:
* rtk_vlan_mbrCfg_get
* Description:
* Get a VLAN Member Configuration entry by index.
* Input:
* idx - Index of VLAN Member Configuration.
* Output:
* pMbrcfg - VLAN member Configuration.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* Note:
* Get a VLAN Member Configuration entry by index.
*/
extern rtk_api_ret_t rtk_vlan_mbrCfg_get(rtk_uint32 idx, rtk_vlan_mbrcfg_t *pMbrcfg);
/* Function Name:
* rtk_vlan_portPvid_set
* Description:
* Set port to specified VLAN ID(PVID).
* Input:
* port - Port id.
* pvid - Specified VLAN ID.
* priority - 802.1p priority for the PVID.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_VLAN_PRIORITY - Invalid priority.
* RT_ERR_VLAN_ENTRY_NOT_FOUND - VLAN entry not found.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* Note:
* The API is used for Port-based VLAN. The untagged frame received from the
* port will be classified to the specified VLAN and assigned to the specified priority.
*/
extern rtk_api_ret_t rtk_vlan_portPvid_set(rtk_port_t port, rtk_vlan_t pvid, rtk_pri_t priority);
/* Function Name:
* rtk_vlan_portPvid_get
* Description:
* Get VLAN ID(PVID) on specified port.
* Input:
* port - Port id.
* Output:
* pPvid - Specified VLAN ID.
* pPriority - 802.1p priority for the PVID.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* The API can get the PVID and 802.1p priority for the PVID of Port-based VLAN.
*/
extern rtk_api_ret_t rtk_vlan_portPvid_get(rtk_port_t port, rtk_vlan_t *pPvid, rtk_pri_t *pPriority);
/* Function Name:
* rtk_vlan_portIgrFilterEnable_set
* Description:
* Set VLAN ingress for each port.
* Input:
* port - Port id.
* igr_filter - VLAN ingress function enable status.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number
* RT_ERR_ENABLE - Invalid enable input
* Note:
* The status of vlan ingress filter is as following:
* - DISABLED
* - ENABLED
* While VLAN function is enabled, ASIC will decide VLAN ID for each received frame and get belonged member
* ports from VLAN table. If received port is not belonged to VLAN member ports, ASIC will drop received frame if VLAN ingress function is enabled.
*/
extern rtk_api_ret_t rtk_vlan_portIgrFilterEnable_set(rtk_port_t port, rtk_enable_t igr_filter);
/* Function Name:
* rtk_vlan_portIgrFilterEnable_get
* Description:
* Get VLAN Ingress Filter
* Input:
* port - Port id.
* Output:
* pIgr_filter - VLAN ingress function enable status.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* The API can Get the VLAN ingress filter status.
* The status of vlan ingress filter is as following:
* - DISABLED
* - ENABLED
*/
extern rtk_api_ret_t rtk_vlan_portIgrFilterEnable_get(rtk_port_t port, rtk_enable_t *pIgr_filter);
/* Function Name:
* rtk_vlan_portAcceptFrameType_set
* Description:
* Set VLAN accept_frame_type
* Input:
* port - Port id.
* accept_frame_type - accept frame type
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_VLAN_ACCEPT_FRAME_TYPE - Invalid frame type.
* Note:
* The API is used for checking 802.1Q tagged frames.
* The accept frame type as following:
* - ACCEPT_FRAME_TYPE_ALL
* - ACCEPT_FRAME_TYPE_TAG_ONLY
* - ACCEPT_FRAME_TYPE_UNTAG_ONLY
*/
extern rtk_api_ret_t rtk_vlan_portAcceptFrameType_set(rtk_port_t port, rtk_vlan_acceptFrameType_t accept_frame_type);
/* Function Name:
* rtk_vlan_portAcceptFrameType_get
* Description:
* Get VLAN accept_frame_type
* Input:
* port - Port id.
* Output:
* pAccept_frame_type - accept frame type
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* The API can Get the VLAN ingress filter.
* The accept frame type as following:
* - ACCEPT_FRAME_TYPE_ALL
* - ACCEPT_FRAME_TYPE_TAG_ONLY
* - ACCEPT_FRAME_TYPE_UNTAG_ONLY
*/
extern rtk_api_ret_t rtk_vlan_portAcceptFrameType_get(rtk_port_t port, rtk_vlan_acceptFrameType_t *pAccept_frame_type);
/* Function Name:
* rtk_vlan_tagMode_set
* Description:
* Set CVLAN egress tag mode
* Input:
* port - Port id.
* tag_mode - The egress tag mode.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_INPUT - Invalid input parameter.
* RT_ERR_ENABLE - Invalid enable input.
* Note:
* The API can set Egress tag mode. There are 4 mode for egress tag:
* - VLAN_TAG_MODE_ORIGINAL,
* - VLAN_TAG_MODE_KEEP_FORMAT,
* - VLAN_TAG_MODE_PRI.
* - VLAN_TAG_MODE_REAL_KEEP_FORMAT,
*/
extern rtk_api_ret_t rtk_vlan_tagMode_set(rtk_port_t port, rtk_vlan_tagMode_t tag_mode);
/* Function Name:
* rtk_vlan_tagMode_get
* Description:
* Get CVLAN egress tag mode
* Input:
* port - Port id.
* Output:
* pTag_mode - The egress tag mode.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* The API can get Egress tag mode. There are 4 mode for egress tag:
* - VLAN_TAG_MODE_ORIGINAL,
* - VLAN_TAG_MODE_KEEP_FORMAT,
* - VLAN_TAG_MODE_PRI.
* - VLAN_TAG_MODE_REAL_KEEP_FORMAT,
*/
extern rtk_api_ret_t rtk_vlan_tagMode_get(rtk_port_t port, rtk_vlan_tagMode_t *pTag_mode);
/* Function Name:
* rtk_vlan_transparent_set
* Description:
* Set VLAN transparent mode
* Input:
* egr_port - Egress Port id.
* pIgr_pmask - Ingress Port Mask.
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* None.
*/
extern rtk_api_ret_t rtk_vlan_transparent_set(rtk_port_t egr_port, rtk_portmask_t *pIgr_pmask);
/* Function Name:
* rtk_vlan_transparent_get
* Description:
* Get VLAN transparent mode
* Input:
* egr_port - Egress Port id.
* Output:
* pIgr_pmask - Ingress Port Mask
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* None.
*/
extern rtk_api_ret_t rtk_vlan_transparent_get(rtk_port_t egr_port, rtk_portmask_t *pIgr_pmask);
/* Function Name:
* rtk_vlan_keep_set
* Description:
* Set VLAN egress keep mode
* Input:
* egr_port - Egress Port id.
* pIgr_pmask - Ingress Port Mask.
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* None.
*/
extern rtk_api_ret_t rtk_vlan_keep_set(rtk_port_t egr_port, rtk_portmask_t *pIgr_pmask);
/* Function Name:
* rtk_vlan_keep_get
* Description:
* Get VLAN egress keep mode
* Input:
* egr_port - Egress Port id.
* Output:
* pIgr_pmask - Ingress Port Mask
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port number.
* Note:
* None.
*/
extern rtk_api_ret_t rtk_vlan_keep_get(rtk_port_t egr_port, rtk_portmask_t *pIgr_pmask);
/* Function Name:
* rtk_vlan_stg_set
* Description:
* Set spanning tree group instance of the vlan to the specified device
* Input:
* vid - Specified VLAN ID.
* stg - spanning tree group instance.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_MSTI - Invalid msti parameter
* RT_ERR_INPUT - Invalid input parameter.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* Note:
* The API can set spanning tree group instance of the vlan to the specified device.
*/
extern rtk_api_ret_t rtk_vlan_stg_set(rtk_vlan_t vid, rtk_stp_msti_id_t stg);
/* Function Name:
* rtk_vlan_stg_get
* Description:
* Get spanning tree group instance of the vlan to the specified device
* Input:
* vid - Specified VLAN ID.
* Output:
* pStg - spanning tree group instance.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* Note:
* The API can get spanning tree group instance of the vlan to the specified device.
*/
extern rtk_api_ret_t rtk_vlan_stg_get(rtk_vlan_t vid, rtk_stp_msti_id_t *pStg);
/* Function Name:
* rtk_vlan_protoAndPortBasedVlan_add
* Description:
* Add the protocol-and-port-based vlan to the specified port of device.
* Input:
* port - Port id.
* pInfo - Protocol and port based VLAN configuration information.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_VLAN_VID - Invalid VID parameter.
* RT_ERR_VLAN_PRIORITY - Invalid priority.
* RT_ERR_TBL_FULL - Table is full.
* RT_ERR_OUT_OF_RANGE - input out of range.
* Note:
* The incoming packet which match the protocol-and-port-based vlan will use the configure vid for ingress pipeline
* The frame type is shown in the following:
* - FRAME_TYPE_ETHERNET
* - FRAME_TYPE_RFC1042
* - FRAME_TYPE_LLCOTHER
*/
extern rtk_api_ret_t rtk_vlan_protoAndPortBasedVlan_add(rtk_port_t port, rtk_vlan_protoAndPortInfo_t *pInfo);
/* Function Name:
* rtk_vlan_protoAndPortBasedVlan_get
* Description:
* Get the protocol-and-port-based vlan to the specified port of device.
* Input:
* port - Port id.
* proto_type - protocol-and-port-based vlan protocol type.
* frame_type - protocol-and-port-based vlan frame type.
* Output:
* pInfo - Protocol and port based VLAN configuration information.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_OUT_OF_RANGE - input out of range.
* RT_ERR_TBL_FULL - Table is full.
* Note:
* The incoming packet which match the protocol-and-port-based vlan will use the configure vid for ingress pipeline
* The frame type is shown in the following:
* - FRAME_TYPE_ETHERNET
* - FRAME_TYPE_RFC1042
* - FRAME_TYPE_LLCOTHER
*/
extern rtk_api_ret_t rtk_vlan_protoAndPortBasedVlan_get(rtk_port_t port, rtk_vlan_proto_type_t proto_type, rtk_vlan_protoVlan_frameType_t frame_type, rtk_vlan_protoAndPortInfo_t *pInfo);
/* Function Name:
* rtk_vlan_protoAndPortBasedVlan_del
* Description:
* Delete the protocol-and-port-based vlan from the specified port of device.
* Input:
* port - Port id.
* proto_type - protocol-and-port-based vlan protocol type.
* frame_type - protocol-and-port-based vlan frame type.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_OUT_OF_RANGE - input out of range.
* RT_ERR_TBL_FULL - Table is full.
* Note:
* The incoming packet which match the protocol-and-port-based vlan will use the configure vid for ingress pipeline
* The frame type is shown in the following:
* - FRAME_TYPE_ETHERNET
* - FRAME_TYPE_RFC1042
* - FRAME_TYPE_LLCOTHER
*/
extern rtk_api_ret_t rtk_vlan_protoAndPortBasedVlan_del(rtk_port_t port, rtk_vlan_proto_type_t proto_type, rtk_vlan_protoVlan_frameType_t frame_type);
/* Function Name:
* rtk_vlan_protoAndPortBasedVlan_delAll
* Description:
* Delete all protocol-and-port-based vlans from the specified port of device.
* Input:
* port - Port id.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_OUT_OF_RANGE - input out of range.
* Note:
* The incoming packet which match the protocol-and-port-based vlan will use the configure vid for ingress pipeline
* Delete all flow table protocol-and-port-based vlan entries.
*/
extern rtk_api_ret_t rtk_vlan_protoAndPortBasedVlan_delAll(rtk_port_t port);
/* Function Name:
* rtk_vlan_portFid_set
* Description:
* Set port-based filtering database
* Input:
* port - Port id.
* enable - ebable port-based FID
* fid - Specified filtering database.
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_L2_FID - Invalid fid.
* RT_ERR_INPUT - Invalid input parameter.
* RT_ERR_PORT_ID - Invalid port ID.
* Note:
* The API can set port-based filtering database. If the function is enabled, all input
* packets will be assigned to the port-based fid regardless vlan tag.
*/
extern rtk_api_ret_t rtk_vlan_portFid_set(rtk_port_t port, rtk_enable_t enable, rtk_fid_t fid);
/* Function Name:
* rtk_vlan_portFid_get
* Description:
* Get port-based filtering database
* Input:
* port - Port id.
* Output:
* pEnable - ebable port-based FID
* pFid - Specified filtering database.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Invalid input parameters.
* RT_ERR_PORT_ID - Invalid port ID.
* Note:
* The API can get port-based filtering database status. If the function is enabled, all input
* packets will be assigned to the port-based fid regardless vlan tag.
*/
extern rtk_api_ret_t rtk_vlan_portFid_get(rtk_port_t port, rtk_enable_t *pEnable, rtk_fid_t *pFid);
/* Function Name:
* rtk_vlan_UntagDscpPriorityEnable_set
* Description:
* Set Untag DSCP priority assign
* Input:
* enable - state of Untag DSCP priority assign
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_ENABLE - Invalid input parameters.
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_UntagDscpPriorityEnable_set(rtk_enable_t enable);
/* Function Name:
* rtk_vlan_UntagDscpPriorityEnable_get
* Description:
* Get Untag DSCP priority assign
* Input:
* None
* Output:
* pEnable - state of Untag DSCP priority assign
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_NULL_POINTER - Null pointer
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_UntagDscpPriorityEnable_get(rtk_enable_t *pEnable);
/*Spanning Tree*/
/* Function Name:
* rtk_stp_mstpState_set
* Description:
* Configure spanning tree state per each port.
* Input:
* port - Port id
* msti - Multiple spanning tree instance.
* stp_state - Spanning tree state for msti
* Output:
* None
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_MSTI - Invalid msti parameter.
* RT_ERR_MSTP_STATE - Invalid STP state.
* Note:
* System supports per-port multiple spanning tree state for each msti.
* There are four states supported by ASIC.
* - STP_STATE_DISABLED
* - STP_STATE_BLOCKING
* - STP_STATE_LEARNING
* - STP_STATE_FORWARDING
*/
extern rtk_api_ret_t rtk_stp_mstpState_set(rtk_stp_msti_id_t msti, rtk_port_t port, rtk_stp_state_t stp_state);
/* Function Name:
* rtk_stp_mstpState_get
* Description:
* Get spanning tree state per each port.
* Input:
* port - Port id.
* msti - Multiple spanning tree instance.
* Output:
* pStp_state - Spanning tree state for msti
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_PORT_ID - Invalid port number.
* RT_ERR_MSTI - Invalid msti parameter.
* Note:
* System supports per-port multiple spanning tree state for each msti.
* There are four states supported by ASIC.
* - STP_STATE_DISABLED
* - STP_STATE_BLOCKING
* - STP_STATE_LEARNING
* - STP_STATE_FORWARDING
*/
extern rtk_api_ret_t rtk_stp_mstpState_get(rtk_stp_msti_id_t msti, rtk_port_t port, rtk_stp_state_t *pStp_state);
/* Function Name:
* rtk_vlan_checkAndCreateMbr
* Description:
* Check and create Member configuration and return index
* Input:
* vid - VLAN id.
* Output:
* pIndex - Member configuration index
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_VLAN_VID - Invalid VLAN ID.
* RT_ERR_VLAN_ENTRY_NOT_FOUND - VLAN not found
* RT_ERR_TBL_FULL - Member Configuration table full
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_checkAndCreateMbr(rtk_vlan_t vid, rtk_uint32 *pIndex);
/* Function Name:
* rtk_vlan_reservedVidAction_set
* Description:
* Set Action of VLAN ID = 0 & 4095 tagged packet
* Input:
* action_vid0 - Action for VID 0.
* action_vid4095 - Action for VID 4095.
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Error Input
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_reservedVidAction_set(rtk_vlan_resVidAction_t action_vid0, rtk_vlan_resVidAction_t action_vid4095);
/* Function Name:
* rtk_vlan_reservedVidAction_get
* Description:
* Get Action of VLAN ID = 0 & 4095 tagged packet
* Input:
* pAction_vid0 - Action for VID 0.
* pAction_vid4095 - Action for VID 4095.
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_NULL_POINTER - NULL Pointer
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_reservedVidAction_get(rtk_vlan_resVidAction_t *pAction_vid0, rtk_vlan_resVidAction_t *pAction_vid4095);
/* Function Name:
* rtk_vlan_realKeepRemarkEnable_set
* Description:
* Set Real keep 1p remarking feature
* Input:
* enabled - State of 1p remarking at real keep packet
* Output:
* None.
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Error Input
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_realKeepRemarkEnable_set(rtk_enable_t enabled);
/* Function Name:
* rtk_vlan_realKeepRemarkEnable_get
* Description:
* Get Real keep 1p remarking feature
* Input:
* None.
* Output:
* pEnabled - State of 1p remarking at real keep packet
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Error Input
* Note:
*
*/
extern rtk_api_ret_t rtk_vlan_realKeepRemarkEnable_get(rtk_enable_t *pEnabled);
/* Function Name:
* rtk_vlan_reset
* Description:
* Reset VLAN
* Input:
* None.
* Output:
* pEnabled - State of 1p remarking at real keep packet
* Return:
* RT_ERR_OK - OK
* RT_ERR_FAILED - Failed
* RT_ERR_SMI - SMI access error
* RT_ERR_INPUT - Error Input
* Note:
*
*/
rtk_api_ret_t rtk_vlan_reset(void);
#endif /* __RTK_API_VLAN_H__ */