/* Function Name: * rtl8367c_getAsicPortMirror * Description: * Get port mirror function * Input: * pSource - Source port * pMonitor - Monitor (destination) port * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367c_getAsicPortMirror(rtk_uint32 *pSource, rtk_uint32 *pMonitor) { ret_t retVal; retVal = rtl8367c_getAsicRegBits(RTL8367C_MIRROR_CTRL_REG, RTL8367C_MIRROR_SOURCE_PORT_MASK, pSource); if(retVal != RT_ERR_OK) return retVal; return rtl8367c_getAsicRegBits(RTL8367C_MIRROR_CTRL_REG, RTL8367C_MIRROR_MONITOR_PORT_MASK, pMonitor); }
/* Function Name: * rtl8367c_getAsicSystemLutLearnOverAct * Description: * Get system auto learn over limit number action * Input: * pAction - Learn over action 0:normal, 1:drop 2:trap * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367c_getAsicSystemLutLearnOverAct(rtk_uint32 *pAction) { if(NULL == pAction) return RT_ERR_NULL_POINTER; return rtl8367c_getAsicRegBits(RTL8367C_REG_LUT_LRN_SYS_LMT_CTRL, RTL8367C_LUT_SYSTEM_LEARN_OVER_ACT_MASK, pAction); }
/* Function Name: * rtl8367c_getAsicRma * Description: * Get reserved multicast address for CPU trapping * Input: * index - reserved multicast LSB byte, 0x00~0x2F is available value * rmacfg - type of RMA for trapping frame type setting * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_RMA_ADDR - Invalid RMA address index * Note: * None */ ret_t rtl8367c_getAsicRma(rtk_uint32 index, rtl8367c_rma_t* pRmacfg) { ret_t retVal; rtk_uint32 regData; if(index > RTL8367C_RMAMAX) return RT_ERR_RMA_ADDR; if( (index >= 0x4 && index <= 0x7) || (index >= 0x9 && index <= 0x0C) || (0x0F == index)) index = 0x04; else if((index >= 0x13 && index <= 0x17) || (0x19 == index) || (index >= 0x1B && index <= 0x1f)) index = 0x13; else if(index >= 0x22 && index <= 0x2F) index = 0x22; retVal = rtl8367c_getAsicReg(RTL8367C_REG_RMA_CTRL00+index, ®Data); if(retVal != RT_ERR_OK) return retVal; *pRmacfg = *(rtl8367c_rma_t*)(®Data); retVal = rtl8367c_getAsicRegBits(RTL8367C_REG_RMA_CTRL00, RTL8367C_TRAP_PRIORITY_MASK, ®Data); if(retVal != RT_ERR_OK) return retVal; pRmacfg->trap_priority = regData; return RT_ERR_OK; }
/* Function Name: * rtl8367c_getAsicOamParser * Description: * Get OAM parser state * Input: * port - Physical port number (0~7) * pParser - Per-Port OAM parser state * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367c_getAsicOamParser(rtk_uint32 port, rtk_uint32* pParser) { if(port >= RTL8367C_PORTNO) return RT_ERR_PORT_ID; return rtl8367c_getAsicRegBits(RTL8367C_REG_OAM_PARSER_CTRL0 + port/8, RTL8367C_OAM_PARSER_MASK(port%8), pParser); }
/* Function Name: * rtl8367c_getAsicOamMultiplexer * Description: * Get OAM multiplexer state * Input: * port - Physical port number (0~7) * pMultiplexer - Per-Port OAM multiplexer state * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367c_getAsicOamMultiplexer(rtk_uint32 port, rtk_uint32* pMultiplexer) { if(port >= RTL8367C_PORTNO) return RT_ERR_PORT_ID; return rtl8367c_getAsicRegBits(RTL8367C_REG_OAM_MULTIPLEXER_CTRL0 + port/8, RTL8367C_OAM_MULTIPLEXER_MASK(port%8), pMultiplexer); }
/*ÐÞ¸Ä: RTL8367C_LUT_SYSTEM_LEARN_PMASK_MASK*/ ret_t rtl8367c_getAsicSystemLutLearnPortMask(rtk_uint32 *pPortmask) { rtk_uint32 tmpmask; ret_t retVal; if(NULL == pPortmask) return RT_ERR_NULL_POINTER; retVal = rtl8367c_getAsicRegBits(RTL8367C_REG_LUT_LRN_SYS_LMT_CTRL, RTL8367C_LUT_SYSTEM_LEARN_PMASK_MASK, &tmpmask); if(retVal != RT_ERR_OK) return retVal; *pPortmask = tmpmask & 0xff; retVal = rtl8367c_getAsicRegBits(RTL8367C_REG_LUT_LRN_SYS_LMT_CTRL, RTL8367C_LUT_SYSTEM_LEARN_PMASK1_MASK, &tmpmask); if(retVal != RT_ERR_OK) return retVal; *pPortmask |= (tmpmask & 0x7) << 8; return RT_ERR_OK; }
/* Function Name: * rtl8367c_getAsicRmaCsstp * Description: * Get CSSTP(Cisco Shared Spanning Tree Protocol) for CPU trapping * Input: * None * Output: * pRmacfg - type of RMA for trapping frame type setting * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_RMA_ADDR - Invalid RMA address index * Note: * None */ ret_t rtl8367c_getAsicRmaCsstp(rtl8367c_rma_t* pRmacfg) { ret_t retVal; rtk_uint32 regData; retVal = rtl8367c_getAsicReg(RTL8367C_REG_RMA_CTRL_CSSTP, ®Data); if(retVal != RT_ERR_OK) return retVal; *pRmacfg = *(rtl8367c_rma_t*)(®Data); retVal = rtl8367c_getAsicRegBits(RTL8367C_REG_RMA_CTRL00, RTL8367C_TRAP_PRIORITY_MASK, ®Data); if(retVal != RT_ERR_OK) return retVal; pRmacfg->trap_priority = regData; return RT_ERR_OK; }
/* Function Name: * rtl8367c_getAsicRmaLldp * Description: * Get LLDP for CPU trapping * Input: * None * Output: * pRmacfg - type of RMA for trapping frame type setting * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_RMA_ADDR - Invalid RMA address index * Note: * None */ ret_t rtl8367c_getAsicRmaLldp(rtk_uint32 *pEnabled, rtl8367c_rma_t* pRmacfg) { ret_t retVal; rtk_uint32 regData; retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_RMA_LLDP_EN, RTL8367C_RMA_LLDP_EN_OFFSET,pEnabled); if(retVal != RT_ERR_OK) return retVal; retVal = rtl8367c_getAsicReg(RTL8367C_REG_RMA_CTRL_LLDP, ®Data); if(retVal != RT_ERR_OK) return retVal; *pRmacfg = *(rtl8367c_rma_t*)(®Data); retVal = rtl8367c_getAsicRegBits(RTL8367C_REG_RMA_CTRL00, RTL8367C_TRAP_PRIORITY_MASK, ®Data); if(retVal != RT_ERR_OK) return retVal; pRmacfg->trap_priority = regData; return RT_ERR_OK; }
/* Function Name: * rtl8367c_getAsicPortMirrorMask * Description: * Get mirror source port mask * Input: * None * Output: * pSourcePortmask - Source Portmask * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_MASK- Port Mask Error * Note: * None */ ret_t rtl8367c_getAsicPortMirrorMask(rtk_uint32 *pSourcePortmask) { return rtl8367c_getAsicRegBits(RTL8367C_REG_MIRROR_SRC_PMSK, RTL8367C_MIRROR_SRC_PMSK_MASK, pSourcePortmask); }
/* Function Name: * rtl8367c_getAsicLutLearnOverAct * Description: * Get auto learn over limit number action * Input: * pAction - Learn over action 0:normal, 1:drop 2:trap * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367c_getAsicLutLearnOverAct(rtk_uint32* pAction) { return rtl8367c_getAsicRegBits(RTL8367C_REG_PORT_SECURITY_CTRL, RTL8367C_LUT_LEARN_OVER_ACT_MASK, pAction); }
/* Function Name: * rtl8367c_getAsicOamCpuPri * Description: * Get trap priority for OAM packet * Input: * pPriority - priority (0~7) * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367c_getAsicOamCpuPri(rtk_uint32 *pPriority) { return rtl8367c_getAsicRegBits(RTL8367C_REG_QOS_TRAP_PRIORITY0, RTL8367C_OAM_PRIOIRTY_MASK, pPriority); }
/* Function Name: * rtl8367c_getAsicSvlanTrapPriority * Description: * Get trap to CPU priority assignment * Input: * pPriority - Priority assignment * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367c_getAsicSvlanTrapPriority(rtk_uint32* pPriority) { return rtl8367c_getAsicRegBits(RTL8367C_REG_QOS_TRAP_PRIORITY0, RTL8367C_SVLAN_PRIOIRTY_MASK, pPriority); }
/* Function Name: * rtl8367c_getAsicSvlanPrioritySel * Description: * Get SVLAN priority field setting * Input: * pPriSel - S-priority assignment method, 0:internal priority 1:C-tag priority 2:using Svlan member configuration * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367c_getAsicSvlanPrioritySel(rtk_uint32* pPriSel) { return rtl8367c_getAsicRegBits(RTL8367C_REG_SVLAN_CFG, RTL8367C_VS_SPRISEL_MASK, pPriSel); }