diff --git a/sysfs/class_infiniband.go b/sysfs/class_infiniband.go index 7892c69a..e8e0ee46 100644 --- a/sysfs/class_infiniband.go +++ b/sysfs/class_infiniband.go @@ -107,6 +107,7 @@ type InfiniBandHwCounters struct { // /sys/class/infiniband//ports/ // for a single port of one InfiniBand device. type InfiniBandPort struct { + LinkLayer string Name string Port uint State string // String representation from /sys/class/infiniband//ports//state @@ -248,6 +249,13 @@ func (fs FS) parseInfiniBandPort(name string, port string) (*InfiniBandPort, err ibp := InfiniBandPort{Name: name, Port: uint(portNumber)} portPath := fs.sys.Path(infinibandClassPath, name, "ports", port) + + linkLayer, err := os.ReadFile(filepath.Join(portPath, "link_layer")) + if err != nil { + return nil, err + } + ibp.LinkLayer = strings.TrimSpace(string(linkLayer)) + content, err := os.ReadFile(filepath.Join(portPath, "state")) if err != nil { return nil, err diff --git a/sysfs/class_infiniband_test.go b/sysfs/class_infiniband_test.go index 461e2805..2a9ed091 100644 --- a/sysfs/class_infiniband_test.go +++ b/sysfs/class_infiniband_test.go @@ -174,6 +174,7 @@ func TestInfiniBandClass(t *testing.T) { HCAType: "", Ports: map[uint]InfiniBandPort{ 1: { + LinkLayer: "InfiniBand", Name: "hfi1_0", Port: 1, State: "ACTIVE", @@ -210,6 +211,7 @@ func TestInfiniBandClass(t *testing.T) { HCAType: "MT4099", Ports: map[uint]InfiniBandPort{ 1: { + LinkLayer: "InfiniBand", Name: "mlx4_0", Port: 1, State: "ACTIVE", @@ -238,6 +240,7 @@ func TestInfiniBandClass(t *testing.T) { }, }, 2: { + LinkLayer: "InfiniBand", Name: "mlx4_0", Port: 2, State: "ACTIVE", @@ -274,6 +277,7 @@ func TestInfiniBandClass(t *testing.T) { HCAType: "MT4118", Ports: map[uint]InfiniBandPort{ 1: { + LinkLayer: "InfiniBand", Name: "mlx5_0", Port: 1, State: "ACTIVE", diff --git a/testdata/fixtures.ttar b/testdata/fixtures.ttar index 8f6cd477..bbc3e8ef 100644 --- a/testdata/fixtures.ttar +++ b/testdata/fixtures.ttar @@ -5748,6 +5748,11 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/link_layer +Lines: 1 +InfiniBand +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: fixtures/sys/class/infiniband/hfi1_0/ports/1/phys_state Lines: 1 5: LinkUp @@ -5875,6 +5880,11 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/link_layer +Lines: 1 +InfiniBand +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/phys_state Lines: 1 5: LinkUp @@ -5979,6 +5989,12 @@ Mode: 644 Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/symbol_error Lines: 1 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/link_layer +Lines: 2 +InfiniBand + Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/phys_state @@ -6256,6 +6272,11 @@ Lines: 1 742114 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx5_0/ports/1/link_layer +Lines: 1 +InfiniBand +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: fixtures/sys/class/infiniband/mlx5_0/ports/1/phys_state Lines: 1 4: ACTIVE