问题描述
由于8521缺料必须使用8531的网卡
但8531在1000M能连通,在100M和10M下不能连通
重现步骤
连接到主机ping IP以及看BMC网页,从主机的网卡驱动设置里改速率100M和10M均不能PING通BMC网口
并且在设置为1000M时,ethtool 读出来的速率是10M
尝试过的解决方案
参考 搭配yt8531s phy ipmi管理网口速率为10M - 交流互助区 - openUBMC 论坛该贴,现象是一样的,想知道在不能换料的情况下,有没有解决方法
由于8521缺料必须使用8531的网卡
但8531在1000M能连通,在100M和10M下不能连通
连接到主机ping IP以及看BMC网页,从主机的网卡驱动设置里改速率100M和10M均不能PING通BMC网口
并且在设置为1000M时,ethtool 读出来的速率是10M
参考 搭配yt8531s phy ipmi管理网口速率为10M - 交流互助区 - openUBMC 论坛该贴,现象是一样的,想知道在不能换料的情况下,有没有解决方法
答案内容由AI生成,仅供参考:
| 建议项 | 内容 |
|---|---|
| 根本原因 | 鲲鹏平台 BMC 固件未适配 YT8531 PHY,导致链路协商失败,速率锁定在10M |
| 最优解 | 更换为 YT8521,已验证有效 |
| 替代方案 | 升级 BMC 固件或手动修改设备树 phy_addr 并修复驱动支持 |
| 应急手段 | 强制设置 1000M full duplex,关闭自协商(需两端配合) |
| 风险提示 | 手动修改设备树或驱动有风险,建议在可调试环境下操作 |
根据您提供的问题描述,设备使用 YT8531 PHY 时,在 10M/100M 模式下无法通信,而在 1000M 模式下可以连通。但即使设置为1000M,ethtool eth2 显示的实际速度仍为 10Mbit/s,且链路未建立(Link detected: no)。此现象已在 openUBMC 社区中被多次报告。
| 项目 | 状态 |
|---|---|
| PHY型号 | YT8531S |
| 期望行为 | 支持 10M/100M/1000M 自动协商,正常通信 |
| 实际行为 | - 在10M/100M模式下完全不通 - 设置1000M后, ethtool 显示速率仅为10M,链路未建立 |
| 关键线索 | ethtool 显示 Speed: 10Mb/s, PHYAD: 0 |
从知识库中的文档(参考ID 1)可明确得出:
“更换YT8521 PHY后,问题解决,可能是鲲鹏固件里没有包含YT8531的phy id。”
这表明:
从命令输出:
# od -x /sys/firmware/devicetree/base/soc/gmac@cd000000/phy_addr
0000000 03ff ffff
该值本应指示 PHY 的 MDIO 地址(PHYAD),但 03ff ffff 是一个无效或未初始化的标志值,说明:
0xffff)此项与论坛中其他用户反馈的一致:“读取phy芯片信息,返回的结果全ffff” —— 这是典型的通信失败表现。
现象:
Auto-negotiation: onSupported link modes 包含10/100/1000M说明:
相关实体和事件表明,gmac_hw_set_port_mode_all 执行过程中可能发生 SGMII 协商失败。
多份资料显示:
ethtool eth2 正常显示:Speed: 1000Mb/s
Duplex: Full
Link detected: yes
PHYAD: 3
原因推测:YT8521 的 PHY ID 已加入 BMC 固件的驱动白名单,而 YT8531 未包含在内。
在不能更换硬件的情况下,可尝试以下方法绕过限制。
操作建议:
dmesg | grep -i "phy"
dmesg | grep -i "gmac"
查看是否出现:
PHY ID missingUnknown PHY IDFailed to attach PHY若社区或厂商已发布补丁支持 YT8531,则升级是首选方案。
phy_addr 参数当前 phy_addr 为无效值 03ff ffff,需手动修改设备树(Device Tree),指定正确的 MDIO 地址。
步骤如下:
/soc/gmac@cd000000/phy_addr 的值phy_addr = <0>;
或尝试常见值如 <3>。ethtool -r eth2 # 重启协商
ethtool eth2 # 查看是否恢复正常
bmcdfx mdio read reg 0 0x0 0x2 # 测试能否读取 PHY 寄存器
注意:错误操作可能导致 BMC 无法启动,请在有串口调试能力下进行。
若仅需在特定场景下支持 1000M 工作,可关闭自动协商,强制设定为 1000M 全双工。
命令示例:
# 关闭自协商,强制速率
ethtool -s eth2 speed 1000 duplex full autoneg off
# 检查结果
ethtool eth2
前提条件:
此方法可用于应急通信,但需确保两端配置一致。
若具备开发能力,可在驱动层面手动添加 YT8531 的 PHY ID:
drivers/net/phy/)例如:
{ .phy_id = 0x0007c0a0, .phy_id_mask = 0xfffffff0, .name = "YT8531S" }
此操作属于定制化开发,需验证兼容性。
| 方法 | 原因 |
|---|---|
| 仅更改 IP 或 MAC 地址 | 不影响物理层连接状态 |
使用 ip link set up |
接口已 UP,问题在物理层 |
| 修改 VLAN 或路由 | 不解决链路协商失败问题 |
获取串口日志:
# 查看启动阶段 PHY 初始化信息
dmesg | grep -i phy
dmesg | grep -i gmac
是否提示:
使用 bmcdfx 工具直接读取 MDIO:
bmcdfx mdio read reg 0 0x0 0x2
若返回 0xffff,说明 MDIO 总线无响应,需检查硬件连接或地址配置。
确认对端端口状态:
| 建议项 | 内容 |
|---|---|
| 根本原因 | 鲲鹏平台 BMC 固件未适配 YT8531 PHY,导致链路协商失败,速率锁定在10M |
| 最优解 | 更换为 YT8521,已验证有效 |
| 替代方案 | 升级 BMC 固件或手动修改设备树 phy_addr 并修复驱动支持 |
| 应急手段 | 强制设置 1000M full duplex,关闭自协商(需两端配合) |
| 风险提示 | 手动修改设备树或驱动有风险,建议在可调试环境下操作 |
如需进一步协助,请提供:
dmesg | grep -i phy 输出bmcdfx mdio read 多个地址尝试结果我们将可进一步判断是否可通过软件补丁解决。
更新一下,希望有大佬能回复一下
这个不是bmc软件配置的问题,可以找硬件或驱动看下