⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sf_api.c

📁 华为 HI3510 BOOTLOADER HIBOOT 源码包
💻 C
📖 第 1 页 / 共 5 页
字号:
	VlanSetMode.bits.disable_vlan = u32TransCtrl;	VlanSetMode.bits.vlan_mode = u32FieldLimit;	*SF_IQM_DIO(4) = VlanSetMode.w32;			#ifdef SfTest		outinfor = * SF_IQM_DIO(4);		TChangeHEXToBin(outinfor,OutBinary);		SF_Print("SF_IQM_DIO(4)-SF VLAN transmit setting is %s\n",OutBinary);	#endif}/*======================================================================= *  函数名称:UINT32 SF_SetVlanOutputFrameTagMod(In UINT32 u32TagType, In UINT32 u32TagPort1, In UINT32 u32TagPort0 )  *  初稿完成:2005/1/6    *  作    者:   *  函数功能:帧输出帧的tag格式的选择 *			 对上下行口是否要往发送帧中添加VLAN tag控制进行设定 *  输入参数:输出帧的tag格式选择标志 *           上下行口输出是否添加tag控制标志 *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_SetVlanOutputFrameTagMod(In UINT32 u32TagType, In UINT32 u32TagPort1, In UINT32 u32TagPort0 ) {	Frame_SetOutTag_U VlanFraTagMode;	VlanFraTagMode.w32 = *SF_IQM_DIO(3);	VlanFraTagMode.bits.tag_type = u32TagType;	VlanFraTagMode.bits.tag_port1 = u32TagPort1;	VlanFraTagMode.bits.tag_port0 = u32TagPort0;	*SF_IQM_DIO(3) = VlanFraTagMode.w32;	#ifdef SfTest		outinfor = * SF_IQM_DIO(3);		TChangeHEXToBin(outinfor,OutBinary);		SF_Print("SF_IQM_DIO(3)-SF output frame tag setting is %s\n",OutBinary);	#endif	return Success;}/*======================================================================= *  函数名称:UINT32 SF_SetVlanFrameReceiveMod( In UINT8 u8PortNo, In UINT32 u32FrameFormat)   *  初稿完成:2005/1/6    *  作    者:   *  函数功能:配置端口可接收帧VLAN格式控制 *  输入参数:端口号 *           可接收的帧格式标志位: *				端口1可接收帧VLAN格式控制,缺省为3'b000 *		                3'b001:只接收不带TAG的帧和优先级帧;   *		                3'b010:只接收不带TAG的帧和TAG有效帧;  *		                3'b011:只接收带TAG的帧;               *		                3'b100:只能接收TAG有效帧;             *		                3'b101:可以接收VID为FID的帧;          *		                3'b110:可以接收所有的帧;              *		                其他:可以接收所有的帧。                *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_SetVlanFrameReceiveMod( In UINT8 u8PortNo, In UINT32 u32FrameFormat)  {	VLAN_ReceiFraCtrl_U SetFraRecMode;	if (u8PortNo == 0)	{		SetFraRecMode.w32 = *SF_IQM_DIO(5);		SetFraRecMode.bits.vlanmode_port0 = u32FrameFormat;		*SF_IQM_DIO(5) = SetFraRecMode.w32;		#ifdef SfTest			outinfor = * SF_IQM_DIO(5);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_IQM_DIO(5)-SF p0 can receive VLAN frame formation is %s\n",OutBinary);		#endif		return Success;	}	else if (u8PortNo == 1)	{		SetFraRecMode.w32 = *SF_IQM_DIO(5);		SetFraRecMode.bits.vlanmode_port1 = u32FrameFormat;		*SF_IQM_DIO(5) = SetFraRecMode.w32;		#ifdef SfTest			outinfor = * SF_IQM_DIO(5);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_IQM_DIO(5)-SF p1 can receive VLAN frame formation is %s\n",OutBinary);		#endif		return Success;	}	else	{		#ifdef SfTest			SF_Print("SF can receive VLAN frame formation set error\n");		#endif		return Failure;			}}/*======================================================================= *  函数名称:UINT32 SF_SetSendUnknownVlanWithTag( In UINT32 u32Port0, In UINT32 u32Port1)     *  初稿完成:2005/1/6    *  作    者:   *  函数功能:用于设置未知VLAN对应帧在输出的时候是否带tag *  输入参数:端口的配置值 *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_SetSendUnknownVlanWithTag( In UINT32 u32Port0, In UINT32 u32Port1)  {	UNKnVLAN_Ctrl_U UnkVlanTagCtrl;	UnkVlanTagCtrl.w32 = *SF_IQM_DIO(6);	UnkVlanTagCtrl.bits.unkvlan_tag = ((u32Port1 << 1) | (u32Port0));	*SF_IQM_DIO(6) = UnkVlanTagCtrl.w32;	#ifdef SfTest		outinfor = * SF_IQM_DIO(6);		TChangeHEXToBin(outinfor,OutBinary);		SF_Print("SF_IQM_DIO(6)-SF add tag to the output frame or not: %s\n",OutBinary);	#endif	return Success;}/*======================================================================= *  函数名称:UINT32 SF_SetUnknownVlanReceiveEnable(In UINT32 u32Port0, In UINT32 u32Port1) *  初稿完成:2005/1/6    *  作    者:   *  函数功能:用于设置端口是否允许接收未知VLAN *  输入参数:端口的配置值 *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_SetUnknownVlanReceiveEnable(In UINT32 u32Port0, In UINT32 u32Port1)  {	UNKnVLAN_Ctrl_U UnkVlanRecCtrl;	UnkVlanRecCtrl.w32 = *SF_IQM_DIO(6);	UnkVlanRecCtrl.bits.pass_mode = ((u32Port1 << 1) | (u32Port0));	*SF_IQM_DIO(6) = UnkVlanRecCtrl.w32;	#ifdef SfTest		outinfor = * SF_IQM_DIO(6);		TChangeHEXToBin(outinfor,OutBinary);		SF_Print("SF_IQM_DIO(6)-SF port can receive unknown vlan frame or not: %s\n",OutBinary);	#endif	return Success;}/*======================================================================= *  函数名称:UINT32 SF_TransmitUnknownVlanToPortWithTag(In UINT32 u32PortD, In UINT32 u32PortU, In UINT32 u32CPU)   *  初稿完成:2005/1/6    *  作    者:   *  函数功能:未知VLAN对应的Tag格式控制,输出到相应的端口带不带VLAN Tag。 *  输入参数:端口的配置值 *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_TransmitUnknownVlanToPortWithTag(In UINT32 u32PortD, In UINT32 u32PortU, In UINT32 u32CPU)  {	UNKnVLAN_Ctrl_U UnkVlanTranCtrl;	UnkVlanTranCtrl.w32 = *SF_IQM_DIO(6);	UnkVlanTranCtrl.bits.unkvlan_ctrl = ((u32CPU << 2) | (u32PortU << 1) | (u32PortD));	*SF_IQM_DIO(6) = UnkVlanTranCtrl.w32;	#ifdef SfTest		outinfor = * SF_IQM_DIO(6);		TChangeHEXToBin(outinfor,OutBinary);		SF_Print("SF_IQM_DIO(6)-SF transmit the unknown vlan frame to the port or not: %s\n",OutBinary);	#endif	return Success;}/*======================================================================= *  函数名称:UINT32 SF_ReceiveUnknownVlanMember (In UINT32 u32Port0, In UINT32 u32Port1)  *  初稿完成:2005/1/6    *  作    者:   *  函数功能:用于设置端口是否允许接收未知VLAN成员 *  输入参数:端口的配置值 *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_ReceiveUnknownVlanMember (In UINT32 u32Port0, In UINT32 u32Port1)   {	UNKnVLANMem_Ctrl_U UnkVlanMemRecCtrl;	UnkVlanMemRecCtrl.w32 = *SF_IQM_DIO(7);	UnkVlanMemRecCtrl.bits.rxfilter = ((u32Port1 << 1) | (u32Port0));	*SF_IQM_DIO(7) = UnkVlanMemRecCtrl.w32;	#ifdef SfTest		outinfor = * SF_IQM_DIO(7);		TChangeHEXToBin(outinfor,OutBinary);		SF_Print("SF_IQM_DIO(7)-SF port can receive unknown vlan member frame or not: %s\n",OutBinary);	#endif	return Success;}/*======================================================================= *  函数名称:UINT32 SF_ForceTransmitUnknownVlanMember (In UINT32 u32PortD, In UINT32 u32PortU, In UINT32 u32CPU)   *  初稿完成:2005/1/6    *  作    者:   *  函数功能:用于设置端口是否将未知VLAN成员帧强制转发到该端口 *  输入参数:端口的配置值 *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_ForceTransmitUnknownVlanMember (In UINT32 u32PortD, In UINT32 u32PortU, In UINT32 u32CPU)  {	UNKnVLANMem_Ctrl_U UnkVlanMemTraCtrl;	UnkVlanMemTraCtrl.w32 = *SF_IQM_DIO(7);	UnkVlanMemTraCtrl.bits.unkmem_ctrl = ((u32CPU << 2) | (u32PortU << 1) | (u32PortD));	*SF_IQM_DIO(7) = UnkVlanMemTraCtrl.w32;	#ifdef SfTest		outinfor = * SF_IQM_DIO(7);		TChangeHEXToBin(outinfor,OutBinary);		SF_Print("SF_IQM_DIO(7)-SF transmit the unknown vlan member frame to the port or not: %s\n",OutBinary);	#endif	return Success;}/*======================================================================= *  函数名称:UINT32 SF_ReadUnknownVlanMemberSourcePortVID( Out UINT32 *pu32RUVMSPtID, Out UINT32 *pu32RUVMVlanID)   *  初稿完成:2005/1/6    *  作    者:   *  函数功能:用于读取未知VLAN成员对应源端口号/未知VLAN成员对应VLAN ID *  输入参数: *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_ReadUnknownVlanMemberSourcePortVID( Out UINT32 *pu32RUVMSPtID, Out UINT32 *pu32RUVMVlanID)  {	UNKnVLAN_Infor_U RUnkVlanMemSPtVID;	RUnkVlanMemSPtVID.w32 = *SF_IQM_DIO(8);	*pu32RUVMSPtID = RUnkVlanMemSPtVID.bits.unkmemport;	*pu32RUVMVlanID = RUnkVlanMemSPtVID.bits.unkmemid;	#ifdef SfTest		SF_Print("SF_IQM_DIO(8)-SF the port number of the unknown vlan member is %ld\nthe unknown vlan id is %ld\n",*pu32RUVMSPtID,*pu32RUVMVlanID);	#endif	return Success;}/*======================================================================= *  函数名称:UINT32 SF_ReadUnknownVlanVID(Out UINT32 *pu32RUVVlanID)   *  初稿完成:2005/1/6    *  作    者:   *  函数功能:用于读取未知VLAN对应VLAN ID *  输入参数: *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_ReadUnknownVlanVID(Out UINT32 *pu32RUVVlanID)  {	UNKnVLAN_Infor_U RUnkVlanID;	RUnkVlanID.w32 = *SF_IQM_DIO(8);	*pu32RUVVlanID = RUnkVlanID.bits.unkvlanid;	#ifdef SfTest		SF_Print("SF_IQM_DIO(8)-SF the unknown vlan id is %ld\n",*pu32RUVVlanID);	#endif	return Success;} /*======================================================================= *  函数名称:UINT32 SF_SetPortVlanID(In UINT8 u8PortNo, In UINT32 u32VlanID)   *  初稿完成:2005/1/6    *  作    者:   *  函数功能:设置对应端口的VLAN ID *  输入参数: *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static UINT32 SF_SetPortVlanID(In UINT8 u8PortNo, In UINT32 u32VlanID)  {	Set_Port_VLANID_U SetPortVlanID;	if (u8PortNo == 0)	{		SetPortVlanID.w32 = *SF_IERF_DIO(0);		SetPortVlanID.bits.port_vid_0 = u32VlanID;		*SF_IERF_DIO(0) = SetPortVlanID.w32;		#ifdef SfTest			outinfor = * SF_IERF_DIO(0);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_IERF_DIO(0)-SF set port0 vlan id is: %s\n",OutBinary);		#endif		return Success;	}	else if (u8PortNo == 1)	{		SetPortVlanID.w32 = *SF_IERF_DIO(0);		SetPortVlanID.bits.port_vid_1 = u32VlanID;		*SF_IERF_DIO(0) = SetPortVlanID.w32;		#ifdef SfTest			outinfor = * SF_IERF_DIO(0);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_IERF_DIO(0)-SF set port1 vlan id is: %s\n",OutBinary);		#endif		return Success;	}	else	{		#ifdef SfTest			SF_Print("SF set port vlan id error\n");		#endif		return Failure;	}}/*======================================================================= *  函数名称: void SF_SetDivReportPacketAging (In UINT32 u32ReflashTimeCnt, In UINT32 u32FormLiveTime)     *  初稿完成:2005/1/7    *  作    者:   *  函数功能:用于配置分片报文表老化时间 *  输入参数:表项更新时间计数值; *			 表项生存时间 *  输出参数: *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static void SF_SetDivReportPacketAging (In UINT32 u32ReflashTimeCnt, In UINT32 u32FormLiveTime)  {	Set_DivMesAgeTime_U SetDivMesAging;	SetDivMesAging.w32 = *SF_NAT_DIO(7);	SetDivMesAging.bits.div_age_time = ((u32ReflashTimeCnt << 8) | u32FormLiveTime);	*SF_NAT_DIO(7) = SetDivMesAging.w32;	#ifdef SfTest		outinfor = * SF_NAT_DIO(7);		TChangeHEXToBin(outinfor,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -