Пример #1
0
/* 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;
}
Пример #4
0
/* 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;
}
Пример #5
0
/* 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;
}
Пример #6
0
/* 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);
}
Пример #10
0
/* 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), &etherType);
    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);
}
Пример #13
0
/* 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);
}
Пример #14
0
/* 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);
}
Пример #15
0
/* 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);
}
Пример #18
0
/* 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;
}
Пример #20
0
/* 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);
}
Пример #21
0
/* 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, &regData);

	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);
}
Пример #22
0
/* 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);
}
Пример #24
0
/* 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), &regData);
    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;
}
Пример #26
0
/* 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, &regData);
    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);
}
Пример #27
0
/* 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, &regData);
	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);
}
Пример #29
0
/* 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;
}
Пример #30
0
/* 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;
}