网卡传感器温度值从资源树同步的场景下,网卡断电,传感器数据不会更新

在适配网卡时发现,网卡本身不支持从硬件上直接读取温度,使用NCSI协议获取温度时,vpd配置如下:

image

此场景下,网卡断电,资源树上的温度值与温度状态由于持久化,不会产生跳变,仍是下电前的值

sr文件中的同步语法表明,没有产生跳变,Reading的值不变,导致会有:网卡断电状态下,web上温度传感器值仍有值 的情况

如图

序号67的传感器从硬件直接读值,掉电后读取不到,所以显示 –

序号68的传感器从资源树读值,掉电后保持掉电前的值,场景合理性来看,显示 – 会更好点

当前同步语法的特性是不是表明这个问题无法解决

资源树上的温度值与温度状态你可以改成非下电持久化试试,如改成复位持久化

这两个属性是所有网卡类的公共属性,改持久化类型的处理是不是得考虑可能影响的场景了

排查改网卡用的什么协议,在代码中网卡下电后预期带外会获取失败,会将TemperatureStatus置为非0,这样会展示为–了

用的ncsi协议,正常下电时会触发状态属性置为非0么

如果网卡下电,报文会发不出去会报错,会将TemperatureStatus置为非0。除非网卡支持standby,os下电网卡也可以回复报文,这样才不会设置TemperatureStatus。

置状态为非0的这个逻辑在代码的哪里实现的。

我加了打印以后发现,网卡更新温度和状态的函数在下电后并没有被再调用:

温度状态位也自然没有被更新为非0,保持原有的0,温度值保持之前的温度,导致了主楼的问题

主楼表述不太恰当,想表达的意思是网卡的温度值/状态都是从资源树拿的,环境下电后网卡的资源树上属性不会变(chip上读取的就会变),所以导致下电后网卡温度值显示一个死值

已联系宇浩看过,从vpd修改温度状态表达式上解决问题,使用

“ReadingStatus”: “<=/::FruCtrl_1_0.PowerState;<=/NetworkAdapter_1.TemperatureStatus |> expr($1 == ‘OFF’ ? 1 : $2)”

测试,满足要求,问题解决