mirror of
https://github.com/plappermaul/realtek-doc.git
synced 2025-12-10 07:44:41 +01:00
823 lines
24 KiB
C
Executable file
823 lines
24 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.
|
|
*
|
|
* $Revision$
|
|
* $Date$
|
|
*
|
|
* Purpose : RTK switch high-level API for RTL8373
|
|
* Feature : Here is a list of all functions and variables in SVLAN module.
|
|
*
|
|
*/
|
|
|
|
#include <rtk_switch.h>
|
|
#include <rtk_error.h>
|
|
#include <svlan.h>
|
|
#include <vlan.h>
|
|
#include <linux/string.h>
|
|
|
|
#include <dal/dal_mgmt.h>
|
|
|
|
|
|
/* Function Name:
|
|
* rtk_svlan_init
|
|
* Description:
|
|
* Initialize SVLAN Configuration
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* Ether type of S-tag in 802.1ad is 0x88a8 and there are existed ether type 0x9100 and 0x9200 for Q-in-Q SLAN design.
|
|
* User can set mathced ether type as service provider supported protocol.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_init(void)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_init)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_init();
|
|
RTK_API_UNLOCK();
|
|
return retVal;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_svlan_servicePort_add
|
|
* Description:
|
|
* Add one service port in the specified 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_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* This API is setting which port is connected to provider switch. All frames receiving from this port must
|
|
* contain accept SVID in S-tag field.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_servicePort_add(rtk_port_t port)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_servicePort_add)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_servicePort_add(port);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_servicePort_get
|
|
* Description:
|
|
* Get service ports in the specified device.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pSvlanPortmask - pointer buffer of svlan ports.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* This API is setting which port is connected to provider switch. All frames receiving from this port must
|
|
* contain accept SVID in S-tag field.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_servicePort_get(rtk_portmask_t *pSvlanPortmask)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_servicePort_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_servicePort_get(pSvlanPortmask);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_servicePort_del
|
|
* Description:
|
|
* Delete one service port in the specified 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.
|
|
* Note:
|
|
* This API is removing SVLAN service port in the specified device.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_servicePort_del(rtk_port_t port)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_servicePort_del)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_servicePort_del(port);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_svlan_tpidEntry_set
|
|
* Description:
|
|
* Configure accepted S-VLAN ether type.
|
|
* Input:
|
|
* svlanTpid - Ether type of S-tag frame parsing in uplink ports.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameter.
|
|
* Note:
|
|
* Ether type of S-tag in 802.1ad is 0x88a8 and there are existed ether type 0x9100 and 0x9200 for Q-in-Q SLAN design.
|
|
* User can set mathced ether type as service provider supported protocol.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_tpidEntry_set(rtk_svlan_tpid_t svlanTpid)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_tpidEntry_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_tpidEntry_set(svlanTpid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_tpidEntry_get
|
|
* Description:
|
|
* Get accepted S-VLAN ether type setting.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pSvlanTpid - Ether type of S-tag frame parsing in uplink ports.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* This API is setting which port is connected to provider switch. All frames receiving from this port must
|
|
* contain accept SVID in S-tag field.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_tpidEntry_get(rtk_svlan_tpid_t *pSvlanTpid)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_tpidEntry_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_tpidEntry_get(pSvlanTpid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_priorityRef_set
|
|
* Description:
|
|
* Set S-VLAN upstream priority reference setting.
|
|
* Input:
|
|
* ref - reference selection parameter.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameter.
|
|
* Note:
|
|
* The API can set the upstream SVLAN tag priority reference source. The related priority
|
|
* sources are as following:
|
|
* - REF_INTERNAL_PRI,
|
|
* - REF_CTAG_PRI,
|
|
* - REF_SVLAN_PRI,
|
|
* - REF_PB_PRI.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_priorityRef_set(rtk_svlan_pri_ref_t ref)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_priorityRef_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_priorityRef_set(ref);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_priorityRef_get
|
|
* Description:
|
|
* Get S-VLAN upstream priority reference setting.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pRef - reference selection parameter.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* The API can get the upstream SVLAN tag priority reference source. The related priority
|
|
* sources are as following:
|
|
* - REF_INTERNAL_PRI,
|
|
* - REF_CTAG_PRI,
|
|
* - REF_SVLAN_PRI,
|
|
* - REF_PB_PRI
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_priorityRef_get(rtk_svlan_pri_ref_t *pRef)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_priorityRef_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_priorityRef_get(pRef);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
#if 0
|
|
/* Function Name:
|
|
* rtk_svlan_memberPortEntry_set
|
|
* Description:
|
|
* Configure system SVLAN member content
|
|
* Input:
|
|
* svid - SVLAN id
|
|
* psvlan_cfg - SVLAN member configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameter.
|
|
* RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter.
|
|
* RT_ERR_PORT_MASK - Invalid portmask.
|
|
* RT_ERR_SVLAN_TABLE_FULL - SVLAN configuration is full.
|
|
* Note:
|
|
* The API can set system 64 accepted s-tag frame format. Only 64 SVID S-tag frame will be accpeted
|
|
* to receiving from uplink ports. Other SVID S-tag frame or S-untagged frame will be droped by default setup.
|
|
* - rtk_svlan_memberCfg_t->svid is SVID of SVLAN member configuration.
|
|
* - rtk_svlan_memberCfg_t->memberport is member port mask of SVLAN member configuration.
|
|
* - rtk_svlan_memberCfg_t->fid is filtering database of SVLAN member configuration.
|
|
* - rtk_svlan_memberCfg_t->priority is priority of SVLAN member configuration.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_memberPortEntry_set(rtk_vlan_t svid, rtk_svlan_memberCfg_t *pSvlan_cfg)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
if (NULL == RT_MAPPER->svlan_memberPortEntry_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_memberPortEntry_set(svid, pSvlan_cfg);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_memberPortEntry_get
|
|
* Description:
|
|
* Get SVLAN member Configure.
|
|
* Input:
|
|
* svid - SVLAN id
|
|
* Output:
|
|
* pSvlan_cfg - SVLAN member configuration
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found.
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can get system 64 accepted s-tag frame format. Only 64 SVID S-tag frame will be accpeted
|
|
* to receiving from uplink ports. Other SVID S-tag frame or S-untagged frame will be droped.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_memberPortEntry_get(rtk_vlan_t svid, rtk_svlan_memberCfg_t *pSvlan_cfg)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
if (NULL == RT_MAPPER->svlan_memberPortEntry_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_memberPortEntry_get(svid, pSvlan_cfg);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_memberPortEntry_adv_set
|
|
* Description:
|
|
* Configure system SVLAN member by index
|
|
* Input:
|
|
* idx - Index (0 ~ 63)
|
|
* psvlan_cfg - SVLAN member configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameter.
|
|
* RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter.
|
|
* RT_ERR_PORT_MASK - Invalid portmask.
|
|
* RT_ERR_SVLAN_TABLE_FULL - SVLAN configuration is full.
|
|
* Note:
|
|
* The API can set system 64 accepted s-tag frame format by index.
|
|
* - rtk_svlan_memberCfg_t->svid is SVID of SVLAN member configuration.
|
|
* - rtk_svlan_memberCfg_t->memberport is member port mask of SVLAN member configuration.
|
|
* - rtk_svlan_memberCfg_t->fid is filtering database of SVLAN member configuration.
|
|
* - rtk_svlan_memberCfg_t->priority is priority of SVLAN member configuration.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_memberPortEntry_adv_set(rtk_uint32 idx, rtk_svlan_memberCfg_t *pSvlan_cfg)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
if (NULL == RT_MAPPER->svlan_memberPortEntry_adv_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_memberPortEntry_adv_set(idx, pSvlan_cfg);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_memberPortEntry_adv_get
|
|
* Description:
|
|
* Get SVLAN member Configure by index.
|
|
* Input:
|
|
* idx - Index (0 ~ 63)
|
|
* Output:
|
|
* pSvlan_cfg - SVLAN member configuration
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found.
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can get system 64 accepted s-tag frame format. Only 64 SVID S-tag frame will be accpeted
|
|
* to receiving from uplink ports. Other SVID S-tag frame or S-untagged frame will be droped.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_memberPortEntry_adv_get(rtk_uint32 idx, rtk_svlan_memberCfg_t *pSvlan_cfg)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
if (NULL == RT_MAPPER->svlan_memberPortEntry_adv_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_memberPortEntry_adv_get(idx, pSvlan_cfg);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
#endif
|
|
/* Function Name:
|
|
* rtk_svlan_defaultSvlan_set
|
|
* Description:
|
|
* Configure default egress SVLAN.
|
|
* Input:
|
|
* port - Source port
|
|
* svid - SVLAN id
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameter.
|
|
* RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter.
|
|
* RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found.
|
|
* Note:
|
|
* The API can set port n S-tag format index while receiving frame from port n
|
|
* is transmit through uplink port with s-tag field
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_defaultSvlan_set(rtk_port_t port, rtk_vlan_t svid)
|
|
{
|
|
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_defaultSvlan_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_defaultSvlan_set(port, svid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_defaultSvlan_get
|
|
* Description:
|
|
* Get the configure default egress SVLAN.
|
|
* Input:
|
|
* port - Source port
|
|
* Output:
|
|
* pSvid - SVLAN VID
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can get port n S-tag format index while receiving frame from port n
|
|
* is transmit through uplink port with s-tag field
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_defaultSvlan_get(rtk_port_t port, rtk_vlan_t *pSvid)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_defaultSvlan_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_defaultSvlan_get(port, pSvid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_c2s_add
|
|
* Description:
|
|
* Configure SVLAN C2S table
|
|
* Input:
|
|
* vid - VLAN ID
|
|
* srcPort - Ingress Port
|
|
* svid - SVLAN VID
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter.
|
|
* RT_ERR_VLAN_VID - Invalid VID parameter.
|
|
* RT_ERR_OUT_OF_RANGE - input out of range.
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can set system C2S configuration. ASIC will check upstream's VID and assign related
|
|
* SVID to mathed packet. There are 128 SVLAN C2S configurations.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_c2s_add(rtk_vlan_t vid, rtk_port_t srcPort, rtk_vlan_t svid)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_c2s_add)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_c2s_add(vid, srcPort, svid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_c2s_del
|
|
* Description:
|
|
* Delete one C2S entry
|
|
* Input:
|
|
* vid - VLAN ID
|
|
* srcPort - Ingress Port
|
|
* svid - SVLAN VID
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_VLAN_VID - Invalid VID parameter.
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* RT_ERR_OUT_OF_RANGE - input out of range.
|
|
* Note:
|
|
* The API can delete system C2S configuration. There are 128 SVLAN C2S configurations.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_c2s_del(rtk_vlan_t vid, rtk_port_t srcPort)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_c2s_del)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_c2s_del(vid, srcPort);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_c2s_get
|
|
* Description:
|
|
* Get configure SVLAN C2S table
|
|
* Input:
|
|
* vid - VLAN ID
|
|
* srcPort - Ingress Port
|
|
* Output:
|
|
* pSvid - SVLAN ID
|
|
* 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.
|
|
* RT_ERR_OUT_OF_RANGE - input out of range.
|
|
* Note:
|
|
* The API can get system C2S configuration. There are 128 SVLAN C2S configurations.
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_c2s_get(rtk_vlan_t vid, rtk_port_t srcPort, rtk_vlan_t *pSvid)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_c2s_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_c2s_get(vid, srcPort, pSvid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_untag_action_set
|
|
* Description:
|
|
* Configure Action of downstream UnStag packet
|
|
* Input:
|
|
* action - Action for UnStag
|
|
* svid - The SVID assigned to UnStag packet
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter.
|
|
* RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found.
|
|
* RT_ERR_OUT_OF_RANGE - input out of range.
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can configure action of downstream Un-Stag packet. A SVID assigned
|
|
* to the un-stag is also supported by this API. The parameter of svid is
|
|
* only referenced when the action is set to UNTAG_ASSIGN
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_untag_action_set(rtk_svlan_untag_action_t action, rtk_vlan_t svid)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_untag_action_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_untag_action_set(action, svid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_untag_action_get
|
|
* Description:
|
|
* Get Action of downstream UnStag packet
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pAction - Action for UnStag
|
|
* pSvid - The SVID assigned to UnStag packet
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter.
|
|
* RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found.
|
|
* RT_ERR_OUT_OF_RANGE - input out of range.
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can Get action of downstream Un-Stag packet. A SVID assigned
|
|
* to the un-stag is also retrieved by this API. The parameter pSvid is
|
|
* only refernced when the action is UNTAG_ASSIGN
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_untag_action_get(rtk_svlan_untag_action_t *pAction, rtk_vlan_t *pSvid)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_untag_action_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_untag_action_get(pAction, pSvid);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_unassign_action_set
|
|
* Description:
|
|
* Configure Action of upstream without svid assign action
|
|
* Input:
|
|
* action - Action for Un-assign
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_OUT_OF_RANGE - input out of range.
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can configure action of upstream Un-assign svid packet. If action is not
|
|
* trap to CPU, the port-based SVID sure be assign as system need
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_unassign_action_set(rtk_svlan_unassign_action_t action)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_unassign_action_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_unassign_action_set(action);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
/* Function Name:
|
|
* rtk_svlan_unassign_action_get
|
|
* Description:
|
|
* Get action of upstream without svid assignment
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pAction - Action for Un-assign
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* Note:
|
|
* None
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_unassign_action_get(rtk_svlan_unassign_action_t *pAction)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_unassign_action_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_unassign_action_get(pAction);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_svlan_trapPri_set
|
|
* Description:
|
|
* Set svlan trap priority
|
|
* Input:
|
|
* priority - priority for trap packets
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_QOS_INT_PRIORITY
|
|
* Note:
|
|
* None
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_trapPri_set(rtk_pri_t priority)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_trapPri_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_trapPri_set(priority);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
} /* end of rtk_svlan_trapPri_set */
|
|
|
|
/* Function Name:
|
|
* rtk_svlan_trapPri_get
|
|
* Description:
|
|
* Get svlan trap priority
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pPriority - priority for trap packets
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NULL_POINTER - input parameter may be null pointer
|
|
* Note:
|
|
* None
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_trapPri_get(rtk_pri_t *pPriority)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_trapPri_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_trapPri_get(pPriority);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
} /* end of rtk_svlan_trapPri_get */
|
|
|
|
|
|
/* Function Name:
|
|
* rtk_svlan_trapCpumsk_set
|
|
* Description:
|
|
* Set svlan trap priority
|
|
* Input:
|
|
* cpuMsk - cpu mask for trap packets
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_QOS_INT_PRIORITY
|
|
* Note:
|
|
* None
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_trapCpumsk_set(rtk_uint32 cpuMsk)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_trapCpuMsk_set)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_trapCpuMsk_set(cpuMsk);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_svlan_trapCpumsk_get
|
|
* Description:
|
|
* Get svlan trap cpu mask
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pCpuMsk - cpu mask for trap packets
|
|
* Return:
|
|
* RT_ERR_OK
|
|
* RT_ERR_FAILED
|
|
* RT_ERR_NULL_POINTER - input parameter may be null pointer
|
|
* Note:
|
|
* None
|
|
*/
|
|
rtk_api_ret_t rtk_svlan_trapCpumsk_get(rtk_uint32 *pCpuMsk)
|
|
{
|
|
rtk_api_ret_t retVal = 0;
|
|
|
|
if (NULL == RT_MAPPER->svlan_trapCpuMsk_get)
|
|
return RT_ERR_DRIVER_NOT_FOUND;
|
|
|
|
RTK_API_LOCK();
|
|
retVal = RT_MAPPER->svlan_trapCpuMsk_get(pCpuMsk);
|
|
RTK_API_UNLOCK();
|
|
|
|
return retVal;
|
|
}
|
|
|
|
|