LoginSignup
7
3

More than 5 years have passed since last update.

インターフェース名&PCIe BDF名を調べる(Ubuntu 16.04)

Last updated at Posted at 2017-02-09

インターフェース名(ex: enp1s0)とPCIe BDF名(ex: 02:00.1)を一度に調べる簡単な方法をメモ。
( PCIe BDF = Bus:Device.Function )

これまでは新しいNICを追加する度に、 lspci | grep -i <vendor_name> で追加したインターフェースのPCIe番号を探し、$ip a で表示されるインターフェース名から目的のものらしきものを探しては ethtools -i <interface_name> で PCIe BDF を調べて確認していました。

メンドクサイな~ と思っていたら、 $udevadm info /sys/class/net/<dev> に必要な情報が全部載っており、以下1行で表示できる事を発見。

$ for DEV in $(ls /sys/class/net/); do udevadm info /sys/class/net/$DEV | grep -e INTERFACE -e "ID_PATH=pci" -e ID_MODEL_FROM_DATABASE; echo "---"; done

見やすく書くとこんな感じ

#!/bin/bash

for DEV in $(ls /sys/class/net/)
do
        udevadm info /sys/class/net/$DEV | grep -e INTERFACE -e "ID_PATH=pci" -e ID_MODEL_FROM_DATABAS
        echo "---"
done

--> 追記:実は lshw -class network という便利なコマンドがあったという罠。

ebiken@supermicro:~$ sudo lshw -class network
  *-network DISABLED
       description: Ethernet interface
       product: FastLinQ QL45000 Series 100GbE Controller
       vendor: QLogic Corp.
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: enp2s0
       version: 10
       serial: 00:0e:1e:c6:40:92
       width: 64 bits
       clock: 33MHz
       capabilities: pm vpd msi msix pciexpress bus_master cap_list rom ethernet physical fibre autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=qede driverversion=8.4.0.0 firmware=mfw 8.9.2.0 storm 8.4.2.0 latency=0 link=no multicast=yes
       resources: irq:26 memory:b8080000-b80bffff memory:b8000000-b807ffff memory:b80c0000-b80cffff memory:d6500000-d653ffff
  *-network:0
       description: Ethernet interface
       product: MT27700 Family [ConnectX-4]
       vendor: Mellanox Technologies
       physical id: 0
...

<-- 追記

2日に1回は ethtool -i してるので、これからは楽できそうです。

output memo

  • ip a / ethtool 利用:
    • インターフェース名(enpXsY)とlspci BDF(X:Y.0)が一致していない場合、 ethtool -i を延々と繰り返すことになりツライ。
ebiken@supermicro:~$ lspci | grep FastLinQ
02:00.0 Ethernet controller: QLogic Corp. FastLinQ QL45000 Series 100GbE Controller (rev 10)

ebiken@supermicro:~$ ip a | grep ^[0-9]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
3: enp6s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
4: enp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
5: ens1f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-ens1f0 state UP group default qlen 1000
6: ens1f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-ens1f1 state UP group default qlen 1000
7: ens3f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
8: ens3f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

ebiken@supermicro:~$ ethtool -i enp2s0
driver: qede
version: 8.4.0.0
firmware-version: mfw 8.9.2.0 storm 8.4.2.0
expansion-rom-version:
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
  • 1行コマンドで一覧表示
    • ConnectX-4 Lx はインターフェース名(enpXsY)とlspci BDF(X:Y.0)が一致していない
ebiken@supermicro:~$ for DEV in $(ls /sys/class/net/); do udevadm info /sys/class/net/$DEV | grep -e INTERFACE -e "ID_PATH=pci" -e ID_MODEL_FROM_DATABASE; echo "---"; done
E: INTERFACE=br0
---
E: INTERFACE=br-ens1f0
---
E: INTERFACE=br-ens1f1
---
E: ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 100GbE Controller (FastLinQ QL45611H 100GbE Adapter)
E: ID_PATH=pci-0000:02:00.0
E: INTERFACE=enp2s0
---
E: ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
E: ID_PATH=pci-0000:05:00.0
E: INTERFACE=enp5s0
---
E: ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
E: ID_PATH=pci-0000:06:00.0
E: INTERFACE=enp6s0
---
E: ID_MODEL_FROM_DATABASE=MT27700 Family [ConnectX-4]
E: ID_PATH=pci-0000:03:00.0
E: INTERFACE=ens1f0
---
E: ID_MODEL_FROM_DATABASE=MT27700 Family [ConnectX-4]
E: ID_PATH=pci-0000:03:00.1
E: INTERFACE=ens1f1
---
E: ID_MODEL_FROM_DATABASE=MT27710 Family [ConnectX-4 Lx]
E: ID_PATH=pci-0000:81:00.0
E: INTERFACE=ens3f0
---
E: ID_MODEL_FROM_DATABASE=MT27710 Family [ConnectX-4 Lx]
E: ID_PATH=pci-0000:81:00.1
E: INTERFACE=ens3f1
---
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3