/* Function Name: * rtl8367b_getAsicPortExtMode * Description: * Get external interface mode configuration * Input: * id - external interface id (0~1) * pMode - external interface mode * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_OUT_OF_RANGE - input parameter out of range * Note: * None */ ret_t rtl8367b_getAsicPortExtMode(rtk_uint32 id, rtk_uint32 *pMode) { if(id >= RTL8367B_EXTNO) return RT_ERR_OUT_OF_RANGE; if(0 == id || 1 == id) return rtl8367b_getAsicRegBits(RTL8367B_REG_DIGITAL_INTERFACE_SELECT, RTL8367B_SELECT_GMII_0_MASK << (id * RTL8367B_SELECT_GMII_1_OFFSET), pMode); else return rtl8367b_getAsicRegBits(RTL8367B_REG_DIGITAL_INTERFACE_SELECT_1, RTL8367B_SELECT_RGMII_2_MASK, pMode); }
/* Function Name: * rtl8367b_getAsicFlowControlPortPrivateDropThreshold * Description: * Get Port-private-based drop parameters * Input: * pOnThreshold - Drop turn ON threshold * pOffThreshold - Drop turn OFF threshold * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicFlowControlPortPrivateDropThreshold(rtk_uint32 *pOnThreshold, rtk_uint32 *pOffThreshold) { ret_t retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_FLOWCTRL_FCOFF_PORT_PRIVATE_OFF, RTL8367B_FLOWCTRL_FCOFF_PORT_PRIVATE_OFF_MASK, pOffThreshold); if(retVal != RT_ERR_OK) return retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_FLOWCTRL_FCOFF_PORT_PRIVATE_ON, RTL8367B_FLOWCTRL_FCOFF_PORT_PRIVATE_ON_MASK, pOnThreshold); return retVal; }
/* Function Name: * rtl8367b_getAsicFlowControlPortJumboThreshold * Description: * Get Jumbo Port-based flow control parameters * Input: * pOnThreshold - Flow control turn ON threshold * pOffThreshold - Flow control turn OFF threshold * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicFlowControlPortJumboThreshold(rtk_uint32 *pOnThreshold, rtk_uint32 *pOffThreshold) { ret_t retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_FLOWCTRL_JUMBO_PORT_OFF, RTL8367B_FLOWCTRL_JUMBO_PORT_OFF_MASK, pOffThreshold); if(retVal != RT_ERR_OK) return retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_FLOWCTRL_JUMBO_PORT_ON, RTL8367B_FLOWCTRL_JUMBO_PORT_ON_MASK, pOnThreshold); return retVal; }
/* Function Name: * rtl8367b_getAsicIGMPdynamicRouterPort2 * Description: * Get 2nd dynamic router port and timer * Input: * port - Physical port number (0~7) * timer - router port timer * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicIGMPdynamicRouterPort2(rtk_uint32 *port, rtk_uint32 *timer) { ret_t retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_IGMP_DYNAMIC_ROUTER_PORT, RTL8367B_D_ROUTER_PORT_2_MASK, port); if(retVal != RT_ERR_OK) return retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_IGMP_DYNAMIC_ROUTER_PORT, RTL8367B_D_ROUTER_PORT_TMR_2_MASK, timer); if(retVal != RT_ERR_OK) return retVal; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicIGMPSuppression * Description: * Get the suppression function * Input: * report_supp_enabled - Report suppression, 1:Enable, 0:disable * leave_supp_enabled - Leave suppression, 1:Enable, 0:disable * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicIGMPSuppression(rtk_uint32 *report_supp_enabled, rtk_uint32 *leave_supp_enabled) { ret_t retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_IGMP_MLD_CFG0, RTL8367B_REPORT_SUPPRESSION_MASK, report_supp_enabled); if(retVal != RT_ERR_OK) return retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_IGMP_MLD_CFG0, RTL8367B_LEAVE_SUPPRESSION_MASK, leave_supp_enabled); if(retVal != RT_ERR_OK) return retVal; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicRldpLoopedPortmask * Description: * Get port number of looped pair * Input: * port - Physical port number (0~7) * pLoopedPair - port (0~7) * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicRldpLoopedPortPair(rtk_uint32 port, rtk_uint32 *pLoopedPair) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_RLDP_LOOP_PORT_REG(port), RTL8367B_RLDP_LOOP_PORT_MASK(port), pLoopedPair); }
/* Function Name: * rtl8367b_getAsicUnknownL2MulticastBehavior * Description: * Get behavior of L2 multicast * Input: * port - Physical port number (0~7) * pBehave - 0: flooding, 1: drop, 2: trap * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicUnknownL2MulticastBehavior(rtk_uint32 port, rtk_uint32 *pBehave) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_UNKNOWN_L2_MULTICAST_REG(port), RTL8367B_UNKNOWN_L2_MULTICAST_MASK(port), pBehave); }
/* Function Name: * rtl8367b_setAsicEgressFlowControlPortDropThreshold * Description: * Set port-based egress flow control turn on or ingress flow control drop on threshold * Input: * port - Physical port number (0~7) * pThreshold - Queue-based flown control/drop turn ON threshold * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicEgressFlowControlPortDropThreshold(rtk_uint32 port, rtk_uint32 *pThreshold) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_FLOWCTRL_PORT_DROP_ON_REG(port), RTL8367B_FLOWCTRL_PORT_DROP_ON_MASK, pThreshold); }
/* Function Name: * rtl8367b_getAsicEgressFlowControlQueueDropThreshold * Description: * Get Queue-based egress flow control turn on or ingress flow control drop on threshold * Input: * qid - The queue id * pThreshold - Queue-based flown control/drop turn ON threshold * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_QUEUE_ID - Invalid queue id * Note: * None */ ret_t rtl8367b_getAsicEgressFlowControlQueueDropThreshold(rtk_uint32 qid, rtk_uint32 *pThreshold) { if(qid > RTL8367B_QIDMAX) return RT_ERR_QUEUE_ID; return rtl8367b_getAsicRegBits(RTL8367B_FLOWCTRL_QUEUE_DROP_ON_REG(qid), RTL8367B_FLOWCTRL_QUEUE_DROP_ON_MASK, pThreshold); }
/* Function Name: * rtl8367b_getAsicCputagPriorityRemapping * Description: * Get queue assignment of CPU port * Input: * srcPri - internal priority (0~7) * pNewPri - internal priority after remapping (0~7) * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_QOS_INT_PRIORITY - Invalid priority * Note: * None */ ret_t rtl8367b_getAsicCputagPriorityRemapping(rtk_uint32 srcPri, rtk_uint32 *pNewPri) { if(srcPri > RTL8367B_PRIMAX) return RT_ERR_QOS_INT_PRIORITY; return rtl8367b_getAsicRegBits(RTL8367B_QOS_PRIPORITY_REMAPPING_IN_CPU_REG(srcPri), RTL8367B_QOS_PRIPORITY_REMAPPING_IN_CPU_MASK(srcPri), pNewPri); }
/* Function Name: * rtl8367b_getAsicVlanProtocolBasedGroupData * Description: * Get protocol and port based group database * Input: * index - Index to VLAN member configuration * pPbCfg - Protocol and port based group database entry * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_INPUT - Invalid input parameter * RT_ERR_VLAN_PROTO_AND_PORT - Invalid protocol base group database index * Note: * None */ ret_t rtl8367b_getAsicVlanProtocolBasedGroupData(rtk_uint32 index, rtl8367b_protocolgdatacfg *pPbCfg) { rtk_uint32 frameType; rtk_uint32 etherType; ret_t retVal; /* Error Checking */ if(index > RTL8367B_PROTOVLAN_GIDX_MAX) return RT_ERR_VLAN_PROTO_AND_PORT; /* Read Frame type */ retVal = rtl8367b_getAsicRegBits(RTL8367BG_VLAN_PPB_FRAMETYPE_REG(index), RTL8367BG_VLAN_PPB_FRAMETYPE_MASK, &frameType); if(retVal != RT_ERR_OK) return retVal; /* Read Ether type */ retVal = rtl8367b_getAsicReg(RTL8367B_VLAN_PPB_ETHERTYPR_REG(index), ðerType); if(retVal != RT_ERR_OK) return retVal; pPbCfg->frameType = frameType; pPbCfg->etherType = etherType; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicDebugInfo * Description: * Get per-port packet forward debugging information * Input: * port - Physical port number (0~7) * pDebugifo - per-port packet trap/drop/forward reason * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicDebugInfo(rtk_uint32 port, rtk_uint32 *pDebugifo) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_DEBUG_INFO_REG(port), RTL8367B_DEBUG_INFO_MASK(port), pDebugifo); }
/* Function Name: * rtl8367b_getAsicPortPage * Description: * Get per-port page max usage number * Input: * port - Physical port number (0~7) * pPageCount - page usage number * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicPortPageMax(rtk_uint32 port, rtk_uint32 *pPageCount) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_FLOWCTRL_PORT_PAGE_MAX_REG(port), RTL8367B_FLOWCTRL_PORT_PAGE_MAX_MASK, pPageCount); }
/* Function Name: * rtl8367b_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 rtl8367b_getAsicOamParser(rtk_uint32 port, rtk_uint32* pParser) { if(port >= RTL8367B_PORTNO) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_REG_OAM_PARSER_CTRL0, RTL8367B_OAM_PARSER_MASK(port), pParser); }
/* Function Name: * rtl8367b_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 rtl8367b_getAsicOamMultiplexer(rtk_uint32 port, rtk_uint32* pMultiplexer) { if(port >= RTL8367B_PORTNO) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_REG_OAM_MULTIPLEXER_CTRL0, RTL8367B_OAM_MULTIPLEXER_MASK(port), pMultiplexer); }
/* Function Name: * rtl8367b_getAsicVlanEgressTagMode * Description: * Get CVLAN egress tag mode * Input: * port - Physical port number (0~7) * pTagMode - The egress tag mode. Including Original mode, Keep tag mode and Priority tag mode * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicVlanEgressTagMode(rtk_uint32 port, rtl8367b_egtagmode *pTagMode) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_PORT_MISC_CFG_REG(port), RTL8367B_VLAN_EGRESS_MDOE_MASK, pTagMode); }
/* Function Name: * rtl8367b_getAsicVlanAccpetFrameType * Description: * Get per-port acceptable frame type * Input: * port - Physical port number (0~7) * pFrameType - The acceptable frame type * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * RT_ERR_VLAN_ACCEPT_FRAME_TYPE - Invalid frame type * Note: * None */ ret_t rtl8367b_getAsicVlanAccpetFrameType(rtk_uint32 port, rtl8367b_accframetype *pFrameType) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_VLAN_ACCEPT_FRAME_TYPE_REG(port), RTL8367B_VLAN_ACCEPT_FRAME_TYPE_MASK(port), pFrameType); }
/* Function Name: * rtl8367b_getAsic1xProcConfig * Description: * Get 802.1x unauth. behavior configuration * Input: * port - Physical port number (0~7) * pProc - 802.1x unauth. behavior configuration 0:drop 1:trap to CPU 2:Guest VLAN * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsic1xProcConfig(rtk_uint32 port, rtk_uint32* pProc) { if(port >= RTL8367B_PORTNO) return RT_ERR_PORT_ID; return rtl8367b_getAsicRegBits(RTL8367B_DOT1X_UNAUTH_ACT_BASE, RTL8367B_DOT1X_UNAUTH_ACT_MASK(port),pProc); }
/* Function Name: * rtl8367b_getAsicVlanPortAndProtocolBased * Description: * Get protocol and port based VLAN configuration * Input: * port - Physical port number (0~7) * index - Index of protocol and port based database index * pPpbCfg - Protocol and port based VLAN configuration * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_INPUT - Invalid input parameter * RT_ERR_PORT_ID - Invalid port number * RT_ERR_VLAN_PROTO_AND_PORT - Invalid protocol base group database index * Note: * None */ ret_t rtl8367b_getAsicVlanPortAndProtocolBased(rtk_uint32 port, rtk_uint32 index, rtl8367b_protocolvlancfg *pPpbCfg) { rtk_uint32 reg_addr, bit_mask, bit_value; ret_t retVal; /* Error Checking */ if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; if(index > RTL8367B_PROTOVLAN_GIDX_MAX) return RT_ERR_VLAN_PROTO_AND_PORT; if(pPpbCfg == NULL) return RT_ERR_INPUT; /* Valid bit */ reg_addr = RTL8367B_VLAN_PPB_VALID_REG(index); bit_mask = 0x0001 << port; retVal = rtl8367b_getAsicRegBits(reg_addr, bit_mask, &bit_value); if(retVal != RT_ERR_OK) return retVal; pPpbCfg->valid = bit_value; /* CVLAN index */ reg_addr = RTL8367B_VLAN_PPB_CTRL_REG(index,port); bit_mask = RTL8367B_VLAN_PPB_CTRL_MASK(port); retVal = rtl8367b_getAsicRegBits(reg_addr, bit_mask, &bit_value); if(retVal != RT_ERR_OK) return retVal; pPpbCfg->vlan_idx = bit_value; /* priority */ reg_addr = RTL8367B_VLAN_PPB_PRIORITY_ITEM_REG(port,index); bit_mask = RTL8367B_VLAN_PPB_PRIORITY_ITEM_MASK(port); retVal = rtl8367b_getAsicRegBits(reg_addr, bit_mask, &bit_value); if(retVal != RT_ERR_OK) return retVal; pPpbCfg->priority = bit_value; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicRldpLoopStatePara * Description: * Get retry count and retry period of loop state * Input: * pRetryCount - 0~0xFF (times) * pRetryPeriod - 0~0xFFFF (ms) * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_OUT_OF_RANGE - input parameter out of range * Note: * None */ ret_t rtl8367b_getAsicRldpLoopStatePara(rtk_uint32 *pRetryCount, rtk_uint32 *pRetryPeriod) { ret_t retVal; retVal = rtl8367b_getAsicRegBits(RTL8367B_RLDP_RETRY_COUNT_REG, RTL8367B_RLDP_RETRY_COUNT_LOOPSTATE_MASK, pRetryCount); if(retVal != RT_ERR_OK) return retVal; return rtl8367b_getAsicReg(RTL8367B_RLDP_RETRY_PERIOD_LOOPSTATE_REG, pRetryPeriod); }
/* Function Name: * rtl8367b_getAsicForceGroupLed * Description: * Turn on/off Led of all ports * Input: * group - LED group number * pMode - 0b00:normal mode, 0b01:force blink, 0b10:force off, 0b11:force on * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicForceGroupLed(rtk_uint32* groupmask, rtk_uint32* pMode) { ret_t retVal; rtk_uint32 i,regData; CONST rtk_uint16 bits[3] = {0x0004,0x0010,0x0040}; /* Get Related Registers */ retVal = rtl8367b_getAsicRegBits(RTL8367B_LED_FORCE_CTRL, RTL8367B_LED_FORCE_MODE_MASK, ®Data); for(i = 0; i< RTL8367B_LEDGROUPNO; i++) { if((regData & bits[i]) == bits[i]) { *groupmask = *groupmask | (1 << i); } } return rtl8367b_getAsicRegBits(RTL8367B_LED_FORCE_CTRL, RTL8367B_FORCE_MODE_MASK, pMode); }
/* Function Name: * rtl8367b_getAsicLedIndicateInfoConfig * Description: * Get Leds indicated information mode * Input: * ledno - LED group number. There are 1 to 1 led mapping to each port in each led group * pConfig - Support 16 types configuration * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_OUT_OF_RANGE - input parameter out of range * Note: * None */ ret_t rtl8367b_getAsicLedIndicateInfoConfig(rtk_uint32 ledno, rtk_uint32* pConfig) { CONST rtk_uint16 bits[RTL8367B_LEDGROUPNO]= {RTL8367B_LED0_CFG_MASK, RTL8367B_LED1_CFG_MASK, RTL8367B_LED2_CFG_MASK}; if(ledno >= RTL8367B_LEDGROUPNO) return RT_ERR_OUT_OF_RANGE; /* Get register value */ return rtl8367b_getAsicRegBits(RTL8367B_REG_LED_CONFIGURATION, bits[ledno], pConfig); }
/* Function Name: * rtl8367b_getAsicSpanningTreeStatus * Description: * Set spanning tree state per each port * Input: * port - Physical port number (0~7) * msti - Multiple spanning tree instance * pState - Spanning tree state for msti * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_MSTI - Invalid msti parameter * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicSpanningTreeStatus(rtk_uint32 port, rtk_uint32 msti, rtk_uint32* pState) { if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; if(msti > RTL8367B_MSTIMAX) return RT_ERR_MSTI; return rtl8367b_getAsicRegBits(RTL8367B_VLAN_MSTI_REG(msti,port), RTL8367B_VLAN_MSTI_MASK(port), pState); }
/* Function Name: * rtl8367b_getAsicIpMulticastPortIsoLeaky * Description: * Get IP multicast Port Isolation leaky * Input: * port - Physical port number (0~7) * enabled - 1: enabled, 0: disabled * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicIpMulticastPortIsoLeaky(rtk_uint32 port, rtk_uint32 *enabled) { ret_t retVal; rtk_uint32 regData; retVal = rtl8367b_getAsicRegBits(RTL8367B_IPMCAST_PORTISO_LEAKY_REG, (0x0001 << port), ®Data); if(retVal != RT_ERR_OK) return retVal; *enabled = regData; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicVlanPortBasedVID * Description: * Get port based VID which is indexed to 32 VLAN member configurations * Input: * port - Physical port number (0~7) * pIndex - Index to VLAN member configuration * pPri - 1Q Port based VLAN priority * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * RT_ERR_PORT_ID - Invalid port number * Note: * None */ ret_t rtl8367b_getAsicVlanPortBasedVID(rtk_uint32 port, rtk_uint32 *pIndex, rtk_uint32 *pPri) { rtk_uint32 regAddr,bit_mask; ret_t retVal; if(port > RTL8367B_PORTIDMAX) return RT_ERR_PORT_ID; regAddr = RTL8367B_VLAN_PVID_CTRL_REG(port); bit_mask = RTL8367B_PORT_VIDX_MASK(port); retVal = rtl8367b_getAsicRegBits(regAddr, bit_mask, pIndex); if(retVal != RT_ERR_OK) return retVal; regAddr = RTL8367B_VLAN_PORTBASED_PRIORITY_REG(port); bit_mask = RTL8367B_VLAN_PORTBASED_PRIORITY_MASK(port); retVal = rtl8367b_getAsicRegBits(regAddr, bit_mask, pPri); if(retVal != RT_ERR_OK) return retVal; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicLedGroupMode * Description: * Get Led Group mode * Input: * pMode - LED mode * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicLedGroupMode(rtk_uint32* pMode) { ret_t retVal; rtk_uint32 regData; retVal = rtl8367b_getAsicRegBit(RTL8367B_REG_LED_CONFIGURATION, RTL8367B_LED_CONFIG_SEL_OFFSET, ®Data); if(retVal != RT_ERR_OK) return retVal; if(regData!=1) return RT_ERR_FAILED; return rtl8367b_getAsicRegBits(RTL8367B_REG_LED_CONFIGURATION, RTL8367B_DATA_LED_MASK, pMode); }
/* Function Name: * rtl8367b_getAsicIGMPLeaveTimer * Description: * Get the Leave timer of IGMP/MLD * Input: * None * Output: * pleave_timer - Leave timer * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicIGMPLeaveTimer(rtk_uint32 *pleave_timer) { ret_t retVal; rtk_uint32 value; /* Leave timer */ retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_IGMP_MLD_CFG0, RTL8367B_LEAVE_TIMER_MASK, &value); if(retVal != RT_ERR_OK) return retVal; *pleave_timer = value; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicMaxLengthAltTxRx * Description: * Get per-port Max receiving/transmit packet length in different speed * Input: * pMaxLength - 0: 1522 bytes 1:1536 bytes 2:1552 bytes 3:16000bytes * pPmskGiga - enable port mask in 100Mpbs * pPmask100M - enable port mask in Giga * Output: * None * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicMaxLengthAltTxRx(rtk_uint32* pMaxLength, rtk_uint32* pPmskGiga, rtk_uint32* pPmask100M) { ret_t retVal; rtk_uint32 regData; retVal = rtl8367b_getAsicReg(RTL8367B_REG_MAX_LENGTH_CFG, ®Data); if(retVal != RT_ERR_OK) return retVal; *pPmskGiga = (regData & RTL8367B_MAX_LENGTH_GIGA_MASK) >> RTL8367B_MAX_LENGTH_GIGA_OFFSET; *pPmask100M = regData & RTL8367B_MAX_LENGTH_10_100M_MASK; return rtl8367b_getAsicRegBits(RTL8367B_REG_MAX_LEN_RX_TX, RTL8367B_MAX_LEN_RX_TX_MASK, pMaxLength); }
/* Function Name: * rtl8367b_getAsicIGMPFastLeaveEn * Description: * Get Fast Leave state * Input: * None * Output: * penabled - 1:enable Fast Leave; 0:disable Fast Leave * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicIGMPFastLeaveEn(rtk_uint32 *penabled) { ret_t retVal; rtk_uint32 value; /* Fast Leave */ retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_IGMP_MLD_CFG0, RTL8367B_FAST_LEAVE_EN_MASK, &value); if(retVal != RT_ERR_OK) return retVal; *penabled = value; return RT_ERR_OK; }
/* Function Name: * rtl8367b_getAsicIGMPRobVar * Description: * Get Robustness Variable of IGMP/MLD * Input: * none * Output: * prob_var - Robustness Variable * Return: * RT_ERR_OK - Success * RT_ERR_SMI - SMI access error * Note: * None */ ret_t rtl8367b_getAsicIGMPRobVar(rtk_uint32 *prob_var) { ret_t retVal; rtk_uint32 value; /* Bourstness variable */ retVal = rtl8367b_getAsicRegBits(RTL8367B_REG_IGMP_MLD_CFG0, RTL8367B_ROBURSTNESS_VAR_MASK, &value); if(retVal != RT_ERR_OK) return retVal; *prob_var = value; return RT_ERR_OK; }