/* * Copyright (C) 2012 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 : Definition of SVLAN API * * Feature : The file includes the following modules and sub-modules * (1) 802.1ad, SVLAN [VLAN Stacking] * */ #ifndef __DAL_APOLLOMP_SVLAN_H__ #define __DAL_APOLLOMP_SVLAN_H__ /* * Include Files */ #include #include #include /* * Symbol Definition */ /* * Data Declaration */ typedef enum dal_apollomp_svlan_priSel_e { DAL_APOLLOMP_SVLAN_PRISEL_INTERNAL_PRI = 0, DAL_APOLLOMP_SVLAN_PRISEL_1QTAG_PRI, DAL_APOLLOMP_SVLAN_PRISEL_VSPRI, DAL_APOLLOMP_SVLAN_PRISEL_PBPRI, DAL_APOLLOMP_SVLAN_PRISEL_END, } dal_apollomp_svlan_priSel_t; typedef enum dal_apollomp_svlan_untag_action_e { DAL_APOLLOMP_SVLAN_UNTAG_DROP = 0, DAL_APOLLOMP_SVLAN_UNTAG_TRAP, DAL_APOLLOMP_SVLAN_UNTAG_ASSIGN, DAL_APOLLOMP_SVLAN_UNTAG_END } dal_apollomp_svlan_untag_action_t; typedef enum dal_apollomp_svlan_unmatch_action_e { DAL_APOLLOMP_SVLAN_UNMATCH_DROP = 0, DAL_APOLLOMP_SVLAN_UNMATCH_TRAP, DAL_APOLLOMP_SVLAN_UNMATCH_ASSIGN, DAL_APOLLOMP_SVLAN_UNMATCH_END } dal_apollomp_svlan_unmatch_action_t; typedef enum dal_apollomp_svlan_mc2sfmt_e { DAL_APOLLOMP_SVLAN_MC2S_FMT_MAC = 0, DAL_APOLLOMP_SVLAN_MC2S_FMT_IP, DAL_APOLLOMP_SVLAN_MC2S_FMT_END, } dal_apollomp_svlan_mc2sfmt_t; typedef enum dal_apollomp_svlan_lookupType_e { DAL_APOLLOMP_SVLAN_LOOKUP_S64MBRCGF = 0, DAL_APOLLOMP_SVLAN_LOOKUP_C4KVLAN, DAL_APOLLOMP_SVLAN_LOOKUP_END, } dal_apollomp_svlan_lookupType_t; /* * Macro Declaration */ #define DAL_APOLLOMP_SVLAN_VID_NOT_ACCEPT(vid) \ ((RTK_VLAN_ID_MAX < vid)? 1: 0) /* * Function Declaration */ /* Module Name : SVLAN */ extern int32 dal_apollomp_svlan_checkAndCreate(rtk_vlan_t svid, uint32 *svidx); extern int32 dal_apollomp_svlan_checkAndDestroy(rtk_vlan_t svid); extern int32 dal_apollomp_svlan_checkAndDestroyAll(void); /* Function Name: * dal_apollomp_svlan_init * Description: * Initialize svlan module. * Input: * None * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * Note: * Must initialize svlan module before calling any svlan APIs. */ extern int32 dal_apollomp_svlan_init(void); /* Function Name: * dal_apollomp_svlan_create * Description: * Create the svlan. * Input: * svid - svlan id to be created * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_SVLAN_EXIST - SVLAN entry is exist * Note: * None */ extern int32 dal_apollomp_svlan_create(rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_destroy * Description: * Destroy the svlan. * Input: * svid - svlan id to be destroyed * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found * Note: * None */ extern int32 dal_apollomp_svlan_destroy(rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_portSvid_get * Description: * Get port default svlan id. * Input: * port - port id * Output: * pSvid - pointer buffer of port default svlan id * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_PORT_ID - invalid port id * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * None */ extern int32 dal_apollomp_svlan_portSvid_get(rtk_port_t port, rtk_vlan_t *pSvid); /* Function Name: * dal_apollomp_svlan_portSvid_set * Description: * Set port default svlan id. * Input: * port - port id * svid - port default svlan id * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_PORT_ID - invalid port id * Note: * None */ extern int32 dal_apollomp_svlan_portSvid_set(rtk_port_t port, rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_servicePort_get * Description: * Get service ports from the specified device. * Input: * port - port id * Output: * pEnable - status of service port * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * None */ extern int32 dal_apollomp_svlan_servicePort_get(rtk_port_t port, rtk_enable_t *pEnable); /* Function Name: * dal_apollomp_svlan_servicePort_set * Description: * Set service ports to the specified device. * Input: * port - port id * enable - status of service port * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * Note: * None */ extern int32 dal_apollomp_svlan_servicePort_set(rtk_port_t port, rtk_enable_t enable); /* Function Name: * dal_apollomp_svlan_memberPort_set * Description: * Replace the svlan members. * Input: * svid - svlan id * pSvlanPortmask - svlan member ports * pSvlanUntagPortmask - svlan untag member ports * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_SVLAN_ENTRY_INDEX - invalid svid entry no * RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found * Note: * (1) Don't care the original svlan members and replace with new configure * directly. * (2) svlan portmask only for svlan ingress filter checking */ extern int32 dal_apollomp_svlan_memberPort_set(rtk_vlan_t svid, rtk_portmask_t *pSvlanPortmask, rtk_portmask_t *pSvlanUntagPortmask); /* Function Name: * dal_apollomp_svlan_memberPort_get * Description: * Get the svlan members. * Input: * svid - svlan id * pSvlanPortmask - svlan member ports * pSvlanUntagPortmask - svlan untag member ports * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_SVLAN_ENTRY_INDEX - invalid svid entry no * RT_ERR_SVLAN_ENTRY_NOT_FOUND - specified svlan entry not found * Note: * (1) Don't care the original svlan members and replace with new configure * directly. * (2) svlan portmask only for svlan ingress filter checking */ extern int32 dal_apollomp_svlan_memberPort_get(rtk_vlan_t svid, rtk_portmask_t *pSvlanPortmask, rtk_portmask_t *pSvlanUntagPortmask); /* Function Name: * dal_apollomp_svlan_tpidEntry_get * Description: * Get the svlan TPID. * Input: * svlanIndex - index of tpid entry * Output: * pSvlanTagId - pointer buffer of svlan TPID * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_UNIT_ID - invalid unit id * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * Only support pSvlanTagId 0 in Apollo. */ extern int32 dal_apollomp_svlan_tpidEntry_get(uint32 svlanIndex, uint32 *pSvlanTagId); /* Function Name: * dal_apollomp_svlan_tpidEntry_set * Description: * Set the svlan TPID. * Input: * svlanIndex - index of tpid entry * svlan_tag_id - svlan TPID * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * Note: * Only support pSvlan_tag_id 0 in Apollo. */ extern int32 dal_apollomp_svlan_tpidEntry_set(uint32 svlanIndex, uint32 svlan_tag_id); /* Function Name: * dal_apollomp_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_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. */ extern int32 dal_apollomp_svlan_priorityRef_set(rtk_svlan_pri_ref_t ref); /* Function Name: * dal_apollomp_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. */ extern int32 dal_apollomp_svlan_priorityRef_get(rtk_svlan_pri_ref_t *pRef); /* Function Name: * dal_apollomp_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_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. */ extern int32 dal_apollomp_svlan_memberPortEntry_set(rtk_svlan_memberCfg_t *pSvlan_cfg); /* Function Name: * dal_apollomp_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_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. */ extern int32 dal_apollomp_svlan_memberPortEntry_get(rtk_svlan_memberCfg_t *pSvlan_cfg); /* Function Name: * dal_apollomp_svlan_ipmc2s_add * Description: * add ip multicast address to SVLAN * Input: * ipmc - ip multicast address * ipmcMsk - ip multicast address mask * svid - SVLAN VID * 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 set IP mutlicast to SVID configuration. If upstream packet is IPv4 multicast * packet and DIP is matched MC2S configuration, ASIC will assign egress SVID to the packet. * There are 8 SVLAN multicast configurations for IP and L2 multicast. */ extern int32 dal_apollomp_svlan_ipmc2s_add(ipaddr_t ipmc, ipaddr_t ipmcMsk, rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_ipmc2s_del * Description: * delete ip multicast address to SVLAN * Input: * ipmc - ip multicast address * ipmcMsk - ip multicast address mask * 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_OUT_OF_RANGE - input out of range. * Note: * The API can delete IP mutlicast to SVID configuration. There are 8 SVLAN multicast configurations for IP and L2 multicast. */ extern int32 dal_apollomp_svlan_ipmc2s_del(ipaddr_t ipmc, ipaddr_t ipmcMsk); /* Function Name: * dal_apollomp_svlan_ipmc2s_get * Description: * Get ip multicast address to SVLAN * Input: * ipmc - ip multicast address * ipmcMsk - ip multicast address mask * Output: * pSvid - SVLAN VID * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_INPUT - Invalid input parameters. * RT_ERR_OUT_OF_RANGE - input out of range. * Note: * The API can get IP mutlicast to SVID configuration. There are 8 SVLAN multicast configurations for IP and L2 multicast. */ extern int32 dal_apollomp_svlan_ipmc2s_get(ipaddr_t ipmc, ipaddr_t ipmcMsk, rtk_vlan_t *pSvid); /* Function Name: * dal_apollomp_svlan_l2mc2s_add * Description: * Add L2 multicast address to SVLAN * Input: * mac - L2 multicast address * macMsk - L2 multicast address * svid - SVLAN VID * Output: * None * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * 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 set L2 Mutlicast to SVID configuration. If upstream packet is L2 multicast * packet and DMAC is matched, ASIC will assign egress SVID to the packet. There are 32 * SVLAN multicast configurations for IP and L2 multicast. */ extern int32 dal_apollomp_svlan_l2mc2s_add(rtk_mac_t mac, rtk_mac_t macMsk, rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_l2mc2s_del * Description: * delete L2 multicast address to SVLAN * Input: * mac - L2 multicast address * macMsk - L2 multicast address * Output: * None * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter. * RT_ERR_OUT_OF_RANGE - input out of range. * Note: * The API can delete Mutlicast to SVID configuration. There are 8 SVLAN multicast configurations for IP and L2 multicast. */ extern int32 dal_apollomp_svlan_l2mc2s_del(rtk_mac_t mac, rtk_mac_t macMsk); /* Function Name: * dal_apollomp_svlan_l2mc2s_get * Description: * Get L2 multicast address to SVLAN * Input: * mac - L2 multicast address * macMsk - L2 multicast address * Output: * pSvid - SVLAN VID * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_INPUT - Invalid input parameters. * RT_ERR_OUT_OF_RANGE - input out of range. * Note: * The API can get L2 mutlicast to SVID configuration. There are 32 SVLAN multicast configurations for IP and L2 multicast. */ extern int32 dal_apollomp_svlan_l2mc2s_get(rtk_mac_t mac, rtk_mac_t macMsk, rtk_vlan_t *pSvid); /* Function Name: * dal_apollomp_svlan_sp2c_add * Description: * Add system SP2C configuration * Input: * cvid - VLAN ID * dst_port - Destination port of SVLAN to CVLAN configuration * svid - SVLAN VID * Output: * None * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_PORT_ID - Invalid port number. * 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 add SVID & Destination Port to CVLAN configuration. The downstream frames with assigned * SVID will be add C-tag with assigned CVID if the output port is the assigned destination port. * There are 128 SP2C configurations. */ extern int32 dal_apollomp_svlan_sp2c_add(rtk_vlan_t svid, rtk_port_t dstPort, rtk_vlan_t cvid); /* Function Name: * dal_apollomp_svlan_sp2c_get * Description: * Get configure system SP2C content * Input: * svid - SVLAN VID * dst_port - Destination port of SVLAN to CVLAN configuration * Output: * pCvid - VLAN ID * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_INPUT - Invalid input parameters. * RT_ERR_OUT_OF_RANGE - input out of range. * RT_ERR_PORT_ID - Invalid port number. * RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter. * Note: * The API can get SVID & Destination Port to CVLAN configuration. There are 128 SP2C configurations. */ extern int32 dal_apollomp_svlan_sp2c_get(rtk_vlan_t svid, rtk_port_t dstPort, rtk_vlan_t *pCvid); /* Function Name: * dal_apollomp_svlan_sp2c_del * Description: * Delete system SP2C configuration * Input: * svid - SVLAN VID * dst_port - Destination port of SVLAN to CVLAN configuration * Output: * None * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_PORT_ID - Invalid port number. * RT_ERR_SVLAN_VID - Invalid SVLAN VID parameter. * RT_ERR_OUT_OF_RANGE - input out of range. * Note: * The API can delete SVID & Destination Port to CVLAN configuration. There are 128 SP2C configurations. */ extern int32 dal_apollomp_svlan_sp2c_del(rtk_vlan_t svid, rtk_port_t dstPort); /* Function Name: * dal_apollomp_svlan_dmacVidSelState_set * Description: * Set DMAC CVID selection status * Input: * port - Port * enable - state of DMAC CVID Selection * Output: * None. * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_INPUT - Invalid input parameters. * Note: * This API can set DMAC CVID Selection state */ extern int32 dal_apollomp_svlan_dmacVidSelState_set(rtk_port_t port, rtk_enable_t enable); /* Function Name: * dal_apollomp_svlan_dmacVidSelState_get * Description: * Get DMAC CVID selection status * Input: * port - Port * Output: * pEnable - state of DMAC CVID Selection * 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: * This API can get DMAC CVID Selection state */ extern int32 dal_apollomp_svlan_dmacVidSelState_get(rtk_port_t port, rtk_enable_t *pEnable); /* Function Name: * dal_apollomp_svlan_unmatchAction_set * Description: * Configure Action of downstream Unmatch packet * Input: * action - Action for Unmatch * svid - The SVID assigned to Unmatch packet * 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 downstream Un-match packet. A SVID assigned * to the un-match is also supported by this API. The parameter add svid is * only refernced when the action is set to UNMATCH_ASSIGN */ extern int32 dal_apollomp_svlan_unmatchAction_set(rtk_svlan_action_t action, rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_unmatchAction_get * Description: * Get Action of downstream Unmatch packet * Input: * None * Output: * pAction - Action for Unmatch * pSvid - The SVID assigned to Unmatch packet * 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 Get action of downstream Un-match packet. A SVID assigned * to the un-match is also retrieved by this API. The parameter pSvid is * only refernced when the action is UNMATCH_ASSIGN */ extern int32 dal_apollomp_svlan_unmatchAction_get(rtk_svlan_action_t *pAction, rtk_vlan_t *pSvid); /* Function Name: * dal_apollomp_svlan_untagAction_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 */ extern int32 dal_apollomp_svlan_untagAction_set(rtk_svlan_action_t action, rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_untagAction_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 */ extern int32 dal_apollomp_svlan_untagAction_get(rtk_svlan_action_t *pAction, rtk_vlan_t *pSvid); /* Function Name: * dal_apollomp_svlan_c2s_add * Description: * add CVID and ingress Port to SVLAN * Input: * cvid - CVLAN VID * port - port id * svid - SVLAN VID * 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. * Note: * The API can set upstream packet CVID and ingress port to SVID configuration. * There are 128 SVLAN configurations for CVID and ingress port. * If CVID and SVID of configured entry are matched with configuration parameter, then * different ingress port will share the same configuration entry. */ extern int32 dal_apollomp_svlan_c2s_add(rtk_vlan_t cvid, rtk_port_t port, rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_c2s_del * Description: * delete CVID and ingress Port to SVLAN * Input: * cvid - CVLAN VID * port - port id * svid - SVLAN VID * 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. * Note: * The API can delet upstream packet CVID and ingress port to SVID configuration. */ extern int32 dal_apollomp_svlan_c2s_del(rtk_vlan_t cvid, rtk_port_t port, rtk_vlan_t svid); /* Function Name: * dal_apollomp_svlan_c2s_get * Description: * Get CVID and ingress Port to SVLAN * Input: * cvid - CVLAN VID * port - port id * Output: * pSvid - SVLAN VID * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_INPUT - Invalid input parameters. * 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. * Note: * The API can delet upstream packet CVID and ingress port to SVID configuration. */ extern int32 dal_apollomp_svlan_c2s_get(rtk_vlan_t cvid, rtk_port_t port, rtk_vlan_t *pSvid); /* Function Name: * dal_apollomp_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 */ extern int32 dal_apollomp_svlan_trapPri_get(rtk_pri_t *pPriority); /* Function Name: * dal_apollomp_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 */ extern int32 dal_apollomp_svlan_trapPri_set(rtk_pri_t priority); /* Function Name: * dal_apollomp_svlan_deiKeepState_get * Description: * Get svlan dei keep state * Input: * None * Output: * pEnable - state of keep dei * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * None */ extern int32 dal_apollomp_svlan_deiKeepState_get(rtk_enable_t *pEnable); /* Function Name: * dal_apollomp_svlan_deiKeepState_set * Description: * Set svlan dei keep state * Input: * enable - state of DMAC CVID Selection * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_INPUT - Invalid input parameters. * Note: * None */ extern int32 dal_apollomp_svlan_deiKeepState_set(rtk_enable_t enable); /* Function Name: * dal_apollomp_svlan_lookupType_get * Description: * Get lookup type of SVLAN * Input: * None * Output: * pType - lookup type * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NULL_POINTER * RT_ERR_CHIP_NOT_SUPPORTED * Note: * None */ extern int32 dal_apollomp_svlan_lookupType_get(rtk_svlan_lookupType_t *pType); /* Function Name: * dal_apollomp_svlan_lookupType_set * Description: * Set lookup type of SVLAN * Input: * type - lookup type * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_CHIP_NOT_SUPPORTED * Note: * None */ extern int32 dal_apollomp_svlan_lookupType_set(rtk_svlan_lookupType_t type); /* Function Name: * dal_apollomp_svlan_sp2cUnmatchCtagging_get * Description: * Get unmatch sp2c egress ctagging state * Input: * None * Output: * pState - unmatch cvlan tagging state * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NULL_POINTER * Note: * None */ extern int32 dal_apollomp_svlan_sp2cUnmatchCtagging_get(rtk_enable_t *pState); /* Function Name: * dal_apollomp_svlan_sp2cUnmatchCtagging_set * Description: * Set unmatch sp2c egress ctagging state * Input: * state - unmatch cvlan tagging state * Output: * none * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NULL_POINTER * Note: * None */ extern int32 dal_apollomp_svlan_sp2cUnmatchCtagging_set(rtk_enable_t state); /* Function Name: * dal_apollomp_svlan_priority_get * Description: * Get SVLAN priority for each SVID. * Input: * svid - svlan id * Output: * pPriority - priority assigned for the SVID. * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_SMI - SMI access error * RT_ERR_NULL_POINTER * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * Note: * None */ extern int32 dal_apollomp_svlan_priority_get(rtk_vlan_t svid, rtk_pri_t *pPriority); /* Function Name: * dal_apollomp_svlan_priority_set * Description: * Set SVLAN priority for each SVID. * Input: * svid - svlan id * priority - priority assigned for the SVID. * Output: * None * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_VLAN_PRIORITY - Invalid priority. * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * Note: * This API is used to set priority per SVLAN. */ extern int32 dal_apollomp_svlan_priority_set(rtk_vlan_t vid, rtk_pri_t priority); /* Function Name: * dal_apollomp_svlan_fid_get * Description: * Get the filter id of the vlan. * Input: * svid - svlan id * Output: * pFid - pointer buffer of filter id * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * None */ extern int32 dal_apollomp_svlan_fid_get(rtk_vlan_t svid, rtk_fid_t *pFid); /* Function Name: * dal_apollomp_svlan_fid_set * Description: * Set the filter id of the svlan. * Input: * svid - svlan id * fid - filter id * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_OUT_OF_RANGE - input parameter out of range * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * Note: * The FID is effective only in VLAN SVL mode. */ extern int32 dal_apollomp_svlan_fid_set(rtk_vlan_t svid, rtk_fid_t fid); /* Function Name: * dal_apollomp_svlan_fidEnable_get * Description: * Get svlan based fid assignment status. * Input: * svid - svlan id * Output: * pEnable - pointer to svlan based fid assignment status * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * None */ extern int32 dal_apollomp_svlan_fidEnable_get(rtk_vlan_t svid, rtk_enable_t *pEnable); /* Function Name: * dal_apollomp_svlan_fidEnable_set * Description: * Set svlan based fid assignment status. * Input: * svid - svlan id * enable - svlan based fid assignment status * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_OUT_OF_RANGE - input parameter out of range * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * Note: * None */ extern int32 dal_apollomp_svlan_fidEnable_set(rtk_vlan_t svid, rtk_enable_t enable); /* Function Name: * dal_apollomp_svlan_enhancedFid_get * Description: * Get the enhanced filter id of the vlan. * Input: * svid - svlan id * Output: * pEfid - pointer buffer of enhanced filter id * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * None */ extern int32 dal_apollomp_svlan_enhancedFid_get(rtk_vlan_t svid, rtk_efid_t *pEfid); /* Function Name: * dal_apollomp_svlan_enhancedFid_set * Description: * Set the enhanced filter id of the svlan. * Input: * svid - svlan id * efid - enhanced filter id * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_OUT_OF_RANGE - input parameter out of range * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * Note: * The EFID is effective only in VLAN SVL mode. */ extern int32 dal_apollomp_svlan_enhancedFid_set(rtk_vlan_t svid, rtk_efid_t efid); /* Function Name: * dal_apollomp_svlan_enhancedFidEnable_get * Description: * Get svlan based fid assignment status. * Input: * svid - svlan id * Output: * pEnable - pointer to svlan based efid assignment status * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * None */ extern int32 dal_apollomp_svlan_enhancedFidEnable_get(rtk_vlan_t svid, rtk_enable_t *pEnable); /* Function Name: * dal_apollomp_svlan_enhancedFidEnable_set * Description: * Set svlan based efid assignment status. * Input: * svid - svlan id * enable - svlan based efid assignment status * Output: * None * Return: * RT_ERR_OK * RT_ERR_FAILED * RT_ERR_NOT_INIT - The module is not initial * RT_ERR_OUT_OF_RANGE - input parameter out of range * RT_ERR_VLAN_VID * RT_ERR_SVLAN_NOT_EXIST * Note: * None */ extern int32 dal_apollomp_svlan_enhancedFidEnable_set(rtk_vlan_t svid, rtk_enable_t enable); /* Function Name: * dal_apollomp_svlan_dmacVidSelForcedState_set * Description: * Set forced DMAC CVID selection * Input: * enable - state of DMAC CVID Selection * Output: * None. * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_INPUT - Invalid input parameters. * Note: * This API can set DMAC CVID Selection forced state */ extern int32 dal_apollomp_svlan_dmacVidSelForcedState_set(rtk_enable_t enable); /* Function Name: * dal_apollomp_dmacVidSelForcedState_get * Description: * Get DMAC CVID selection status * Input: * None * Output: * pEnable - state of DMAC CVID Selection * Return: * RT_ERR_OK - OK * RT_ERR_FAILED - Failed * RT_ERR_NULL_POINTER - input parameter may be null pointer * Note: * This API can get DMAC CVID Selection Forced state */ extern int32 dal_apollomp_svlan_dmacVidSelForcedState_get(rtk_enable_t *pEnable); #endif /* __DAL_APOLLOMP_SVLAN_H__ */