📄 mvltest.c
字号:
/************************************************************************
* 版权所有 (C)2001, 深圳市中兴通讯股份有限公司。
*
* 文件名称: mvlTest.c
* 文件标识: 对用于板间通讯的交换芯片6095进行测试
* 内容摘要:
* 其它说明:
* 当前版本:
* 作 者: 焦赵云
* 完成日期: 2007年6月7日
*
* 修改记录1:
* 修改日期:
* 版 本 号:
* 修 改 人:
* 修改内容:
* 修改记录2:…
************************************************************************/
/**************************************************************************
* 头文件 *
**************************************************************************/
#include "vxWorks.h"
#include "stdio.h"
#include "stdlib.h"
#include "taskLib.h"
#include "pingLib.h"
/**************************************************************************
* 外部函数声明 *
**************************************************************************/
extern STATUS mvlRegRead(UINT8 unit, UINT8 devID, UINT8 regAddr, UINT16 *regData);
extern STATUS mvlRegWrite(UINT8 unit, UINT8 devID, UINT8 regAddr, UINT16 regData);
extern void b_portInit();
extern int b_physIsOnline(UINT8 slot);
extern int bspSlotId (void);
/**************************************************************************
* 全局变量 *
**************************************************************************/
UINT16 mvlPortLink[2][10] = {{0},{0}};
/**************************************************************************
* 函数实现 *
**************************************************************************/
STATUS marvellTest()
{
UINT16 regData;
UINT32 i;
char ipStr[20];
/*先初始化网口*/
b_portInit();
/*SMI接口测试*/
printf("UNIT0 SMI test........................");
mvlRegRead(0, 0x1a, 0x3, ®Data);
regData = regData>>4;
if((0x95 != regData)&&(0x97 != regData))
{
printf("FAILED! \n");
return ERROR;
}
else
{
printf("OK! \n");
}
printf("UNIT1 SMI test........................");
mvlRegRead(1, 0x19, 0x3, ®Data);
regData = regData>>4;
if((0x95 != regData)&&(0x97 != regData))
{
printf("FAILED! \n");
return ERROR;
}
else
{
printf("OK! \n");
}
printf("\n");
/*端口状态检测*/
printf("UNIT0 PORT LINK test...............\n");
mvlRegRead(0, 0x15, 0x0, ®Data);
regData = regData & (1<<11);
mvlPortLink[0][5] = regData>>11;
printf("SLOT %d ...............................%s\n", 1, regData?"UP":"DOWN");
for(i=0; i<5; i++)
{
mvlRegRead(0, 0x10+i, 0x0, ®Data);
regData = regData & (1<<11);
printf("SLOT %d ...............................%s\n", i+2, regData?"UP":"DOWN");
mvlPortLink[0][i] = regData>>11;
}
mvlRegRead(0, 0x19, 0x0, ®Data);
regData = regData & (1<<11);
printf("PORT 9(UNIT0 to UNIT1) ...............%s\n", regData?"UP":"DOWN");
mvlRegRead(0, 0x1A, 0x0, ®Data);
regData = regData & (1<<11);
printf("PORT 10(cpu) .........................%s\n", regData?"UP":"DOWN");
printf("\n");
printf("UNIT1 PORT LINK test...............\n");
for(i=0; i<6; i++)
{
mvlRegRead(1, 0x10+i, 0x0, ®Data);
regData = regData & (1<<11);
if(i==0)
printf("SLOT %d ..............................%s\n", i+9, regData?"UP":"DOWN");
else
printf("SLOT %d ..............................%s\n", i+9, regData?"UP":"DOWN");
mvlPortLink[1][i] = regData>>11;
}
mvlRegRead(1, 0x19, 0x0, ®Data);
regData = regData & (1<<11);
printf("PORT 9(UNIT1 to UNIT0) ...............%s\n", regData?"UP":"DOWN");
printf("\n");
/*链路检测*/
printf("UNIT0 PORT PING test...........\n");
if(mvlPortLink[0][5])
{
sprintf(ipStr,"6.0.1.%d",9);
if((!(ping(ipStr,1,0))) || (!(ping(ipStr,1,0))))
{
printf("SLOT %d ...............................OK!\n", 1);
}
else
{
printf("SLOT %d ...............................FAILED!\n", 1);
}
}
for(i=0; i<5; i++)
{
if(!mvlPortLink[0][i])
continue;
sprintf(ipStr,"6.0.1.%d",10+i);
if((!(ping(ipStr,1,0))) || (!(ping(ipStr,1,0))))
{
printf("SLOT %d ...............................OK!\n", i+2);
}
else
{
printf("SLOT %d ...............................FAILED!\n", i+2);
}
}
printf("\n");
printf("UNIT1 PORT PING test..............\n");
for(i=0; i<6; i++)
{
if(!mvlPortLink[1][i])
continue;
sprintf(ipStr,"6.0.1.%d",17+i);
if((ping(ipStr,1,0)) || (ping(ipStr,1,0)))
{
printf("SLOT %d ...............................FAILED!\n", i+1+8);
}
else
{
printf("SLOT %d ...............................OK!\n", i+1+8);
}
}
/*主备是971*/
/*if(b_physIsOnline(7) && b_physIsOnline(8))*/
{
printf("\n");
printf("Master and Slave PORT PING test..............\n");
if(7 == bspSlotId())
{
sprintf(ipStr,"6.1.1.129");
if((!(ping(ipStr,1,0))) || (!(ping(ipStr,1,0))))
{
printf("BOARD 8 .................................OK!\n");
}
else
{
printf("BOARD 8 .................................FAILED!\n");
}
}
else
{
sprintf(ipStr,"6.1.1.1");
if((!(ping(ipStr,1,0))) || (!(ping(ipStr,1,0))))
{
printf("BOARD 7 .................................OK!\n");
}
else
{
printf("BOARD 7 .................................FAILED!\n");
}
}
}
return OK;
}
void mvlLinkShow()
{
INT32 i;
printf("UNIT\t PORT\t LINK\n");
for(i=0; i<11; i++)
{
printf("0\t %d\t %d\n", i, mvlPortLink[0][i]);
}
for(i=0; i<11; i++)
{
printf("1\t %d\t %d\n", i, mvlPortLink[1][i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -