aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/mirror.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/mirror.c')
-rw-r--r--target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/mirror.c548
1 files changed, 0 insertions, 548 deletions
diff --git a/target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/mirror.c b/target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/mirror.c
deleted file mode 100644
index 1921d1a5af..0000000000
--- a/target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/mirror.c
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- * Copyright (C) 2013 Realtek Semiconductor Corp.
- * All Rights Reserved.
- *
- * Unless you and Realtek execute a separate written software license
- * agreement governing use of this software, this software is licensed
- * to you under the terms of the GNU General Public License version 2,
- * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
- *
- * $Revision: 76306 $
- * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
- *
- * Purpose : RTK switch high-level API for RTL8367/RTL8367C
- * Feature : Here is a list of all functions and variables in Mirror module.
- *
- */
-
-#include <rtk_switch.h>
-#include <rtk_error.h>
-#include <mirror.h>
-#include <string.h>
-#include <rtl8367c_asicdrv.h>
-#include <rtl8367c_asicdrv_mirror.h>
-
-/* Function Name:
- * rtk_mirror_portBased_set
- * Description:
- * Set port mirror function.
- * Input:
- * mirroring_port - Monitor port.
- * pMirrored_rx_portmask - Rx mirror port mask.
- * pMirrored_tx_portmask - Tx mirror port mask.
- * 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_PORT_MASK - Invalid portmask.
- * Note:
- * The API is to set mirror function of source port and mirror port.
- * The mirror port can only be set to one port and the TX and RX mirror ports
- * should be identical.
- */
-rtk_api_ret_t rtk_mirror_portBased_set(rtk_port_t mirroring_port, rtk_portmask_t *pMirrored_rx_portmask, rtk_portmask_t *pMirrored_tx_portmask)
-{
- rtk_api_ret_t retVal;
- rtk_enable_t mirRx, mirTx;
- rtk_uint32 i, pmask;
- rtk_port_t source_port;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- /* Check port valid */
- RTK_CHK_PORT_VALID(mirroring_port);
-
- if(NULL == pMirrored_rx_portmask)
- return RT_ERR_NULL_POINTER;
-
- if(NULL == pMirrored_tx_portmask)
- return RT_ERR_NULL_POINTER;
-
- RTK_CHK_PORTMASK_VALID(pMirrored_rx_portmask);
-
- RTK_CHK_PORTMASK_VALID(pMirrored_tx_portmask);
-
- /*Mirror Sorce Port Mask Check*/
- if (pMirrored_tx_portmask->bits[0]!=pMirrored_rx_portmask->bits[0]&&pMirrored_tx_portmask->bits[0]!=0&&pMirrored_rx_portmask->bits[0]!=0)
- return RT_ERR_PORT_MASK;
-
- /*mirror port != source port*/
- if(RTK_PORTMASK_IS_PORT_SET((*pMirrored_tx_portmask), mirroring_port) || RTK_PORTMASK_IS_PORT_SET((*pMirrored_rx_portmask), mirroring_port))
- return RT_ERR_PORT_MASK;
-
- source_port = rtk_switch_maxLogicalPort_get();
-
- RTK_SCAN_ALL_LOG_PORT(i)
- {
- if (pMirrored_tx_portmask->bits[0]&(1<<i))
- {
- source_port = i;
- break;
- }
-
- if (pMirrored_rx_portmask->bits[0]&(1<<i))
- {
- source_port = i;
- break;
- }
- }
-
- if ((retVal = rtl8367c_setAsicPortMirror(rtk_switch_port_L2P_get(source_port), rtk_switch_port_L2P_get(mirroring_port))) != RT_ERR_OK)
- return retVal;
- if(pMirrored_rx_portmask->bits[0] != 0)
- {
- if ((retVal = rtk_switch_portmask_L2P_get(pMirrored_rx_portmask, &pmask)) != RT_ERR_OK)
- return retVal;
- if ((retVal = rtl8367c_setAsicPortMirrorMask(pmask)) != RT_ERR_OK)
- return retVal;
- }
- else
- {
- if ((retVal = rtk_switch_portmask_L2P_get(pMirrored_tx_portmask, &pmask)) != RT_ERR_OK)
- return retVal;
- if ((retVal = rtl8367c_setAsicPortMirrorMask(pmask)) != RT_ERR_OK)
- return retVal;
- }
-
-
- if (pMirrored_rx_portmask->bits[0])
- mirRx = ENABLED;
- else
- mirRx = DISABLED;
-
- if ((retVal = rtl8367c_setAsicPortMirrorRxFunction(mirRx)) != RT_ERR_OK)
- return retVal;
-
- if (pMirrored_tx_portmask->bits[0])
- mirTx = ENABLED;
- else
- mirTx = DISABLED;
-
- if ((retVal = rtl8367c_setAsicPortMirrorTxFunction(mirTx)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-
-}
-
-/* Function Name:
- * rtk_mirror_portBased_get
- * Description:
- * Get port mirror function.
- * Input:
- * None
- * Output:
- * pMirroring_port - Monitor port.
- * pMirrored_rx_portmask - Rx mirror port mask.
- * pMirrored_tx_portmask - Tx mirror port mask.
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_INPUT - Invalid input parameters.
- * Note:
- * The API is to get mirror function of source port and mirror port.
- */
-rtk_api_ret_t rtk_mirror_portBased_get(rtk_port_t *pMirroring_port, rtk_portmask_t *pMirrored_rx_portmask, rtk_portmask_t *pMirrored_tx_portmask)
-{
- rtk_api_ret_t retVal;
- rtk_port_t source_port;
- rtk_enable_t mirRx, mirTx;
- rtk_uint32 sport, mport, pmask;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if(NULL == pMirrored_rx_portmask)
- return RT_ERR_NULL_POINTER;
-
- if(NULL == pMirrored_tx_portmask)
- return RT_ERR_NULL_POINTER;
-
- if(NULL == pMirroring_port)
- return RT_ERR_NULL_POINTER;
-
- if ((retVal = rtl8367c_getAsicPortMirror(&sport, &mport)) != RT_ERR_OK)
- return retVal;
- source_port = rtk_switch_port_P2L_get(sport);
- *pMirroring_port = rtk_switch_port_P2L_get(mport);
-
- if ((retVal = rtl8367c_getAsicPortMirrorRxFunction((rtk_uint32*)&mirRx)) != RT_ERR_OK)
- return retVal;
-
- if ((retVal = rtl8367c_getAsicPortMirrorTxFunction((rtk_uint32*)&mirTx)) != RT_ERR_OK)
- return retVal;
-
- if ((retVal = rtl8367c_getAsicPortMirrorMask(&pmask)) != RT_ERR_OK)
- return retVal;
-
- if (DISABLED == mirRx)
- pMirrored_rx_portmask->bits[0]=0;
- else
- {
- if ((retVal = rtk_switch_portmask_P2L_get(pmask, pMirrored_rx_portmask)) != RT_ERR_OK)
- return retVal;
- pMirrored_rx_portmask->bits[0] |= 1<<source_port;
- }
-
- if (DISABLED == mirTx)
- pMirrored_tx_portmask->bits[0]=0;
- else
- {
- if ((retVal = rtk_switch_portmask_P2L_get(pmask, pMirrored_tx_portmask)) != RT_ERR_OK)
- return retVal;
- pMirrored_tx_portmask->bits[0] |= 1<<source_port;
- }
-
- return RT_ERR_OK;
-
-}
-
-/* Function Name:
- * rtk_mirror_portIso_set
- * Description:
- * Set mirror port isolation.
- * Input:
- * enable |Mirror isolation status.
- * Output:
- * None
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_ENABLE - Invalid enable input
- * Note:
- * The API is to set mirror isolation function that prevent normal forwarding packets to miror port.
- */
-rtk_api_ret_t rtk_mirror_portIso_set(rtk_enable_t enable)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if (enable >= RTK_ENABLE_END)
- return RT_ERR_ENABLE;
-
- if ((retVal = rtl8367c_setAsicPortMirrorIsolation(enable)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_portIso_get
- * Description:
- * Get mirror port isolation.
- * Input:
- * None
- * Output:
- * pEnable |Mirror isolation status.
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_INPUT - Invalid input parameters.
- * Note:
- * The API is to get mirror isolation status.
- */
-rtk_api_ret_t rtk_mirror_portIso_get(rtk_enable_t *pEnable)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if(NULL == pEnable)
- return RT_ERR_NULL_POINTER;
-
- if ((retVal = rtl8367c_getAsicPortMirrorIsolation(pEnable)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_vlanLeaky_set
- * Description:
- * Set mirror VLAN leaky.
- * Input:
- * txenable -TX leaky enable.
- * rxenable - RX leaky enable.
- * Output:
- * None
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_ENABLE - Invalid enable input
- * Note:
- * The API is to set mirror VLAN leaky function forwarding packets to miror port.
- */
-rtk_api_ret_t rtk_mirror_vlanLeaky_set(rtk_enable_t txenable, rtk_enable_t rxenable)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if ((txenable >= RTK_ENABLE_END) ||(rxenable >= RTK_ENABLE_END))
- return RT_ERR_ENABLE;
-
- if ((retVal = rtl8367c_setAsicPortMirrorVlanTxLeaky(txenable)) != RT_ERR_OK)
- return retVal;
-
- if ((retVal = rtl8367c_setAsicPortMirrorVlanRxLeaky(rxenable)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_vlanLeaky_get
- * Description:
- * Get mirror VLAN leaky.
- * Input:
- * None
- * Output:
- * pTxenable - TX leaky enable.
- * pRxenable - RX leaky enable.
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_INPUT - Invalid input parameters.
- * Note:
- * The API is to get mirror VLAN leaky status.
- */
-rtk_api_ret_t rtk_mirror_vlanLeaky_get(rtk_enable_t *pTxenable, rtk_enable_t *pRxenable)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if( (NULL == pTxenable) || (NULL == pRxenable) )
- return RT_ERR_NULL_POINTER;
-
- if ((retVal = rtl8367c_getAsicPortMirrorVlanTxLeaky(pTxenable)) != RT_ERR_OK)
- return retVal;
-
- if ((retVal = rtl8367c_getAsicPortMirrorVlanRxLeaky(pRxenable)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_isolationLeaky_set
- * Description:
- * Set mirror Isolation leaky.
- * Input:
- * txenable -TX leaky enable.
- * rxenable - RX leaky enable.
- * Output:
- * None
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_ENABLE - Invalid enable input
- * Note:
- * The API is to set mirror VLAN leaky function forwarding packets to miror port.
- */
-rtk_api_ret_t rtk_mirror_isolationLeaky_set(rtk_enable_t txenable, rtk_enable_t rxenable)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if ((txenable >= RTK_ENABLE_END) ||(rxenable >= RTK_ENABLE_END))
- return RT_ERR_ENABLE;
-
- if ((retVal = rtl8367c_setAsicPortMirrorIsolationTxLeaky(txenable)) != RT_ERR_OK)
- return retVal;
-
- if ((retVal = rtl8367c_setAsicPortMirrorIsolationRxLeaky(rxenable)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_isolationLeaky_get
- * Description:
- * Get mirror isolation leaky.
- * Input:
- * None
- * Output:
- * pTxenable - TX leaky enable.
- * pRxenable - RX leaky enable.
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_INPUT - Invalid input parameters.
- * Note:
- * The API is to get mirror isolation leaky status.
- */
-rtk_api_ret_t rtk_mirror_isolationLeaky_get(rtk_enable_t *pTxenable, rtk_enable_t *pRxenable)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if( (NULL == pTxenable) || (NULL == pRxenable) )
- return RT_ERR_NULL_POINTER;
-
- if ((retVal = rtl8367c_getAsicPortMirrorIsolationTxLeaky(pTxenable)) != RT_ERR_OK)
- return retVal;
-
- if ((retVal = rtl8367c_getAsicPortMirrorIsolationRxLeaky(pRxenable)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_keep_set
- * Description:
- * Set mirror packet format keep.
- * Input:
- * mode - -mirror keep mode.
- * Output:
- * None
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_ENABLE - Invalid enable input
- * Note:
- * The API is to set -mirror keep mode.
- * The mirror keep mode is as following:
- * - MIRROR_FOLLOW_VLAN
- * - MIRROR_KEEP_ORIGINAL
- * - MIRROR_KEEP_END
- */
-rtk_api_ret_t rtk_mirror_keep_set(rtk_mirror_keep_t mode)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if (mode >= MIRROR_KEEP_END)
- return RT_ERR_ENABLE;
-
- if ((retVal = rtl8367c_setAsicPortMirrorRealKeep(mode)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_keep_get
- * Description:
- * Get mirror packet format keep.
- * Input:
- * None
- * Output:
- * pMode -mirror keep mode.
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_INPUT - Invalid input parameters.
- * Note:
- * The API is to get mirror keep mode.
- * The mirror keep mode is as following:
- * - MIRROR_FOLLOW_VLAN
- * - MIRROR_KEEP_ORIGINAL
- * - MIRROR_KEEP_END
- */
-rtk_api_ret_t rtk_mirror_keep_get(rtk_mirror_keep_t *pMode)
-{
- rtk_api_ret_t retVal;
-
- /* Check initialization state */
- RTK_CHK_INIT_STATE();
-
- if(NULL == pMode)
- return RT_ERR_NULL_POINTER;
-
- if ((retVal = rtl8367c_getAsicPortMirrorRealKeep(pMode)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_override_set
- * Description:
- * Set port mirror override function.
- * Input:
- * rxMirror - 1: output mirrored packet, 0: output normal forward packet
- * txMirror - 1: output mirrored packet, 0: output normal forward packet
- * aclMirror - 1: output mirrored packet, 0: output normal forward packet
- * Output:
- * None
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * Note:
- * The API is to set mirror override function.
- * This function control the output format when a port output
- * normal forward & mirrored packet at the same time.
- */
-rtk_api_ret_t rtk_mirror_override_set(rtk_enable_t rxMirror, rtk_enable_t txMirror, rtk_enable_t aclMirror)
-{
- rtk_api_ret_t retVal;
-
- if( (rxMirror >= RTK_ENABLE_END) || (txMirror >= RTK_ENABLE_END) || (aclMirror >= RTK_ENABLE_END))
- return RT_ERR_ENABLE;
-
- if ((retVal = rtl8367c_setAsicPortMirrorOverride((rtk_uint32)rxMirror, (rtk_uint32)txMirror, (rtk_uint32)aclMirror)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}
-
-/* Function Name:
- * rtk_mirror_override_get
- * Description:
- * Get port mirror override function.
- * Input:
- * None
- * Output:
- * pRxMirror - 1: output mirrored packet, 0: output normal forward packet
- * pTxMirror - 1: output mirrored packet, 0: output normal forward packet
- * pAclMirror - 1: output mirrored packet, 0: output normal forward packet
- * Return:
- * RT_ERR_OK - OK
- * RT_ERR_FAILED - Failed
- * RT_ERR_SMI - SMI access error
- * RT_ERR_NULL_POINTER - Null Pointer
- * Note:
- * The API is to Get mirror override function.
- * This function control the output format when a port output
- * normal forward & mirrored packet at the same time.
- */
-rtk_api_ret_t rtk_mirror_override_get(rtk_enable_t *pRxMirror, rtk_enable_t *pTxMirror, rtk_enable_t *pAclMirror)
-{
- rtk_api_ret_t retVal;
-
- if( (pRxMirror == NULL) || (pTxMirror == NULL) || (pAclMirror == NULL))
- return RT_ERR_ENABLE;
-
- if ((retVal = rtl8367c_getAsicPortMirrorOverride((rtk_uint32 *)pRxMirror, (rtk_uint32 *)pTxMirror, (rtk_uint32 *)pAclMirror)) != RT_ERR_OK)
- return retVal;
-
- return RT_ERR_OK;
-}