日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转载】88E6390端口Link问题(PHY一直link up)BUG解决

發(fā)布時(shí)間:2024/8/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转载】88E6390端口Link问题(PHY一直link up)BUG解决 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自:https://blog.csdn.net/ruolin0923/article/details/83817957

?

Marvell 88E6390是一款11端口全千兆以太網(wǎng)二層交換芯片,是一款較新的產(chǎn)品,芯片有原廠級(jí)別的BUG。我們的設(shè)備以交換芯片1port-8配置為千兆電口,port9-10千兆光口。光口在打包(滿速率很快,低速時(shí)間較長,跟報(bào)文的總數(shù)有關(guān)系)一段時(shí)候之后拔掉網(wǎng)線,端口的狀態(tài)仍然為Link,led燈閃爍,跟沒有拔出網(wǎng)線端口的狀態(tài)一樣。溝通原廠給了解決方案,這里分享出來,希望能夠幫助大家。

原廠的建議是在系統(tǒng)初始化的時(shí)候做如下配置:

?按照原廠這個(gè)建議在初始化qdStart();初始化之做上述的配置時(shí)序代碼如下;

? ? /* load marvell chip driver */
? ? qdStart(gDevCpuPort, 0);
?
? ? /*init port patch ,zhoulinhua@2018-09-03*/
? ? init_each_port();
配置時(shí)序代碼:

/*init port patch,zhoulinhua@2018-09-03,*/
void init_each_port()
{
?? ?int port;
?? ?int buf;
?? ?
?? ?/*step1:portstate for each port to be configured to disable
?? ?*Port register 4 [1:0] = 0x0
?? ?*/
?? ?for(port=1;port <= MAX_PORT_NUM; port++)
?? ?{
?? ??? ?readPort(port,0x4,&buf);
?? ??? ?buf &= 0xfffc;
?? ??? ?//printf("%s %s %d: buf=0x%04x\r\n",__FILE__,__FUNCTION__,__LINE__,buf);//zhoulinhua@2018-09-26,test
?? ??? ?writePort(port,0x4,buf);
?? ?}
?
?? ?/*step2:
?? ?*For Port 9:
?? ?*?? ?Swith Port 5 register 0x1A = 0x01C0
?? ?*?? ?Swith Port 4 register 0x1A = 0xFD20
?? ?*/
?? ?writePort(0x5,0x1a,0x01C0);
?? ?writePort(0x4,0x1a,0xFD20);
?? ?
?? ?/*step3:
?? ?For Port 10:
?? ?*?? ?Swith Port 5 register 0x1A = 0x01C0
?? ?*?? ?Swith Port 4 register 0x1A = 0xFD40
?? ?*/
?? ?writePort(0x5,0x1a,0x01C0);
?? ?writePort(0x4,0x1a,0xFD40);
?? ?
?? ?/*step4: Preform a software reset of swtich core:
?? ?*?? ?Global 1 Register 4 .15 = 1
?? ?*/
?? ??? ?readGlobal(0x4,&buf);
?? ??? ?buf |= 0x8000;
?? ??? ?//printf("%s %s %d: buf=0x%04x\r\n",__FILE__,__FUNCTION__,__LINE__,buf);//zhoulinhua@2018-09-26,test
?? ??? ?writeGlobal(0x4,buf);
?? ??? ?
?? ?/*step5: Change the PortState for each port back to the forwarding state
?? ?*?? ?Port register 4 [1:0] = 0x3
?? ?*/
?? ?for(port=1;port <= MAX_PORT_NUM; port++)
?? ?{
?? ??? ?readPort(port,0x4,&buf);
?? ??? ?buf |= 0x3;
?? ??? ?//printf("%s %s %d: buf=0x%04x\r\n",__FILE__,__FUNCTION__,__LINE__,buf);//zhoulinhua@2018-09-26,test
?? ??? ?writePort(port,0x4,buf);
?? ?}
?? ?
?? ?return 0;
}
這樣配置之后,光口慢速率打包端口狀態(tài)正常了,但是環(huán)網(wǎng)測試倒換時(shí)間本來是ms級(jí)別變成了s級(jí)別,查看中斷沒有上來,讀取交換芯片的DevIntEn(Global 1 offset 0x4)位被置為0,中斷被關(guān)閉了。明明qdStart中有如下調(diào)用打開了中斷:

/* Enable phy interrupt for port link state changed */
? ? if((status=QDIntEnable(dev)) != GT_OK)
? ? {
? ? ? ? MSG_PRINT(("QDIntEnable return Failed\n"));
? ? ? ? return status;
? ? }
猜測可能software rest的時(shí)候被清,因此在調(diào)用 init_each_port()之后重新調(diào)用QDIntEnable(dev))得以解決、

以上是我分享的一點(diǎn)希望能幫到大家。
?

總結(jié)

以上是生活随笔為你收集整理的【转载】88E6390端口Link问题(PHY一直link up)BUG解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。