为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

AR8031以太网千兆正常百兆不通问题分析

2023-06-18 5页 doc 179KB 20阅读

用户头像 个人认证

is_856463

暂无简介

举报
AR8031以太网千兆正常百兆不通问题分析     AR8031以太网千兆正常百兆不通问题分析                    IMX8QXP平台,使用AR8031千兆PHY芯片,出现1000M网络正常,插100M交换机时还是在1Gbps/Full速率上面,接下来开始分析。电路图1000M打印root@genvict_imx8qxp:~#ifconfigeth0up[23487.949074]Atheros8031ethernet5b040000.ethernet-1:00:attachedPHYdriver[Atheros8031ethernet](mii_b...
AR8031以太网千兆正常百兆不通问题分析
     AR8031以太网千兆正常百兆不通问题分析                    IMX8QXP平台,使用AR8031千兆PHY芯片,出现1000M网络正常,插100M交换机时还是在1Gbps/Full速率上面,接下来开始分析。电路图1000M打印root@genvict_imx8qxp:~#ifconfigeth0up[23487.949074]Atheros8031ethernet5b040000.ethernet-1:00:attachedPHYdriver[Atheros8031ethernet](mii_bus:phy_addr=5b040000.ethernet-1:00,irq=POLL)[23487.963198]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotreadyroot@genvict_imx8qxp:~#[23488.985380]fec5b040000.etherneteth0:LinkisUp-1Gbps/Full-flowcontrolrx/tx[23488.993209]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesreadyroot@genvict_imx8qxp:~#ethtooleth0Settingsforeth0:Supportedports:[TPMII]Supportedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullSupportedpauseframeuse:SymmetricSupportsauto-negotiation:YesAdvertisedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullAdvertisedpauseframeuse:SymmetricAdvertisedauto-negotiation:YesLinkpartneradvertisedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullLinkpartneradvertisedpauseframeuse:NoLinkpartneradvertisedauto-negotiation:YesSpeed:1000Mb/sDuplex:FullPort:MIIPHYAD:0Transceiver:internalAuto-negotiation:onSupportsWake-on:gWake-on:dLinkdetected:yes100M打印root@genvict_imx8qxp:~#ifconfigeth0up[23487.949074]Atheros8031ethernet5b040000.ethernet-1:00:attachedPHYdriver[Atheros8031ethernet](mii_bus:phy_addr=5b040000.ethernet-1:00,irq=POLL)[23487.963198]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotreadyroot@genvict_imx8qxp:~#[23488.985380]fec5b040000.etherneteth0:LinkisUp-1Gbps/Full-flowcontrolrx/tx[23488.993209]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesreadyroot@genvict_imx8qxp:~#ethtooleth0Settingsforeth0:Supportedports:[TPMII]Supportedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullSupportedpauseframeuse:SymmetricSupportsauto-negotiation:YesAdvertisedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullAdvertisedpauseframeuse:SymmetricAdvertisedauto-negotiation:YesLinkpartneradvertisedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/FullLinkpartneradvertisedpauseframeuse:SymmetricReceive-onlyLinkpartneradvertisedauto-negotiation:YesSpeed:100Mb/sDuplex:FullPort:MIIPHYAD:0Transceiver:internalAuto-negotiation:onSupportsWake-on:gWake-on:dLinkdetected:yes问题分析  100M时,驱动打印速率是1Gbps/Full,但是通过ethtool工具查看是Speed:100Mb/s。且LED3灯已经点亮,说明PHY芯片与交换机协商成功了100M,但是驱动加载时获取到PHY芯片的速率信息为1000M,可以说明硬件没有问题,1000M通信正常且100M协商速率是正常的,那就可能是驱动配置问题。  使用工具ethtool强制设置100M,ethtool-seth0speed100,打印如下。root@genvict_imx8qxp:~#ethtool-seth0speed100【设置10/1000也是下面的效果】Cannotadvertisespeed100root@genvict_imx8qxp:~#[23329.113366]fec5b040000.etherneteth0:LinkisUp-100Mbps/Full-flowcontrolrx/tx  这时候驱动打印100M速率,且以太通信正常了,为何重启就能试别到正常的速率呢?尝试修改dts修改rgmii-txid为rgmii【无改善】驱动中改为只支持百兆【千兆在百兆正常,百兆正常】确认复位管脚【驱动加载时不复位也可正常工作,所以不是复位的时序问题】驱动加打印查看获取PHY网口速率,函数genphy_read_status,打印如下:root@genvict_imx8qxp:~#ifconfigeth0up[86.321797]eason.....................................[86.326997]fec5b040000.etherneteth0:RGMII[86.403986]Atheros8031ethernet5b040000.ethernet-1:00:attachedPHYdriver[Atheros8031ethernet](mii_bus:phy_addr=5b040000.ethernet-1:00,irq=POLL)[86.418083]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotreadyroot@genvict_imx8qxp:~#[87.451383]easonAUTONEG_ENABLE[87.454784]easonSPEED_1000[87.458438]eason.....................................[87.463617]fec5b040000.etherneteth0:RGMII[87.468002]fec5b040000.etherneteth0:SPEED_1000[87.472866]fec5b040000.etherneteth0:LinkisUp-1Gbps/Full-flowcontrolrx/tx[87.480674]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesready[88.507376]easonAUTONEG_ENABLE[88.510780]easonSPEED_100[89.531362]easonAUTONEG_ENABLE[89.534765]easonSPEED_100奇怪的是,驱动加载之前是异常的1000M,加载之后就是正常的100M速率了,继续加打印查看:[26.798011]easonAUTONEG_ENABLE[26.801297]easonlpagb=655350xFFFF[26.804350]easonadv=65535[26.807180]easoncommon_adv_gb=65532[26.811180]easonSPEED_1000[27.822030]easonAUTONEG_ENABLE[27.825312]easonlpagb=8192[27.828508]easonadv=512[27.831156]easoncommon_adv_gb=0[27.834568]easonSPEED_100到这里,读出的数据是0xFFFF,说明读取寄存器失败了。或者要么是驱动加载之后做了什么就正常,或者驱动加载之前就是异常的,从这个思路出发,查看前面的函数genphy_update_link,发现有人为的修改痕迹:intstatus;intstatus2,status4;/*Doafakeread*/#if0phydev->mdio.addr=0;status=phy_read(phydev,MII_BMSR);if(status<0)returnstatus;phydev->mdio.addr=2;status2=phy_read(phydev,MII_BMSR);if(status2<0)returnstatus2;phydev->mdio.addr=4;status4=phy_read(phydev,MII_BMSR);if(status4<0)returnstatus4;#elsestatus=phy_read(phydev,MII_BMSR);if(status<0)returnstatus;#endif这就很清晰了,我们只有一个PHY芯片,PHY地址是0,这里依次读取了3个地址,且以地址4读出的状态为准,所以获取的是0xFFFF,代码中默认给处理1000M,修改代码#if0后,读取PHY芯片速率正常,打印如下:root@genvict_imx8qxp:~#ifconfigeth0192.169.5.92[65.860843]eason.....................................[65.866055]fec5b040000.etherneteth0:RGMII[65.942621]Atheros8031ethernet5b040000.ethernet-1:00:attachedPHYdriver[Atheros8031ethernet](mii_bus:phy_addr=5b040000.ethernet-1:00,irq=POLL)[65.956728]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotreadyroot@genvict_imx8qxp:~#[66.981883]easonAUTONEG_ENABLE[66.985169]easonlpagb=0[66.987882]easonadv=512[66.990546]easoncommon_adv_gb=0[66.994008]easonSPEED_10[68.005861]easonAUTONEG_ENABLE[68.009145]easonlpagb=0[68.011855]easonadv=512[68.014507]easoncommon_adv_gb=0[68.017908]easonSPEED_100[69.029873]easonAUTONEG_ENABLE[69.033152]easonlpagb=0[69.035835]easonadv=512[69.038489]easoncommon_adv_gb=0[69.042094]easonSPEED_100[69.045550]eason.....................................[69.050714]fec5b040000.etherneteth0:RGMII[69.055088]fec5b040000.etherneteth0:SPEED_100[69.059886]fec5b040000.etherneteth0:LinkisUp-100Mbps/Full-flowcontrolrx/tx[69.067858]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesready[70.085862]easonAUTONEG_ENABLE[70.089140]easonlpagb=8192[70.092090]easonadv=512[70.094751]easoncommon_adv_gb=0[70.098316]easonSPEED_100[71.109877]easonAUTONEG_ENABLE[71.113153]easonlpagb=8192[71.116101]easonadv=512[71.118758]easoncommon_adv_gb=0[71.122387]easonSPEED_100增加的代码是为了支持mv88e6172交换芯片,所以就影响到了AR8031的状态读取。 -全文完-
/
本文档为【AR8031以太网千兆正常百兆不通问题分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索