2016-12-23 21 views
0

У меня есть 2 беспроводных карт pci (такая же модель, но может работать в двух разных режимах) на шине. У них один и тот же драйвер. То, что я хочу сделать, это взломать драйвер следующим образом: проверьте индекс pci, первое зондированное устройство (индекс 0) будет настроено как режим A, следующий (индекс 1) будет настроен как режим B.Устройства на шине pci всегда проверяются в том же порядке?

, поэтому я хочу знать, проверяются ли они в том же порядке каждый раз, когда система инициализируется.

Если заказ пробника случайный, можно ли это сделать другим способом?


Я попытался это: подключить ту же карту в разностных слотов, и проверить, что я получил в/SYS/устройства/pci0000: 00. результат все тот же. так что ядро ​​ничего не знает о физическом слоте? Я подумал, может быть, ядро ​​знает, на каком физическом слоте была установлена ​​карта. жаль ..

ответ

1

Ответ: Нет, их вообще нет.

К тому, что вы пытаетесь решить: не нужно это делать, поскольку оно исправлено в современных ядрах . Системы Linux. Имя сетевого интерфейса связано с физическим слотом устройства. У вас всегда будут одинаковые имена, пока вы физически не переместите карты.

Коррекция. Первоначально я думал, что это обеспечивается ядром. Нет, он предоставляется помощником пользовательского пространства, то есть udev.

  1. имена, включающие Firmware/BIOS при условии номера индексов для бортовых устройств (пример: eno1)
  2. имена, включающие прошивки/BIOS предусмотрено PCI Express слот автоопределения номера индексов (пример: ens1)
  3. Имена, включающие физическое/географическое расположение соединителя оборудования (пример: enp2s0)
  4. Имена, включающие MAC-адрес интерфейса (пример: enx78 e7d1ea46da)
  5. Classic, непредсказуема ядра родной ethX именования (пример: eth0)

Происхождение: https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

Пример:

% ip link list dev enp0s20u2c2 
42: enp0s20u2c2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 
    link/ether 4a:06:8b:65:72:36 brd ff:ff:ff:ff:ff:ff 
% ls -l /sys/class/net/enp0s20u2c2 
lrwxrwxrwx 1 root root 0 Dec 23 14:59 /sys/class/net/enp0s20u2c2 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:2.0/net/enp0s20u2c2 
+0

да. devA-> wl0-> Режим A. devB-> wl1 -> Режим B. Это то, что я пытаюсь сделать. но я не понимаю, «это исправлено в современных ядрах». если их устройство idx (probed) является случайным, как ядро ​​может выполнять статическое сопоставление? Уверен, что 1-й опытный разработчик назван wl0, но 1srt dev может быть либо devA, либо devB, верно? – kumo

+0

Поскольку физически устройства подключены к определенным слотам. Я собираюсь обновить ответ, чтобы показать пример. – 0andriy