# Infiniband Mode IB/EN ändern

## Beschreibung:

Infiniband Karten haben zwei Modi IB und EN.  
Diese können mit den Originaltreibern, also nicht out of the box Treibern geändert werden.  
Wir installieren hier eine KVM VM mit Debian, schleifen die Karte durch und ändern dann den mode.

## Vorraussetzung:

Eeine Umgebung die Hardware in eine VM durchschleifen kann und eine Debian VM.  
Sollte das nicht möglich sein, dann Bare Metal auf einer einzelnen kleinen Festplatte Debian installieren.

Für Mellanox Karten 4 Debian Bullseye  
Für Mellanox Karten 3 Debian Buster

## Installation der Treiber

Per SSH Einloggen mit root.  
  
Treiber gibts hier: [https://network.nvidia.com/products/infiniband-drivers/linux/mlnx\_ofed/](https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/)

### Installation Mellanox 3 Karten Debian Buster

[![Auswahl_126.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-05/scaled-1680-/FcJLLKYJVhcql1G7-auswahl-126.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-05/FcJLLKYJVhcql1G7-auswahl-126.png)

Dann die EULA Akzeptieren , downloaden.  
Dann im Firefox Downloadfentser die URL kopieren und dann per wget einfügen.  
Ich habe den link schon mal gepostet. Ist dann alerrdings die Version zur Erstellung des Artikels.

Dann per wget die Treiber downloaden und entpacken im Home Verzeichnis

```
wget https://content.mellanox.com/ofed/MLNX_OFED-4.9-6.0.6.0/MLNX_OFED_LINUX-4.9-6.0.6.0-debian10.0-x86_64.tgz
tar -xf MLNX_OFED_LINUX-4.9-6.0.6.0-debian10.0-x86_64.tgz
```

Da die Treiber für Bullsee 10.0 sind, müssen wir in der Textdatei die Debian Datei anpassen

```
nano /etc/debian_version
```

Dort dann auf Debian 10.0 abändern

```
cd MLNX_OFED_LINUX-4.9-6.0.6.0-debian10.0-x86_64/
./mlnxofedinstall
```

Ausgabe, mi Y bestätigen und Dann wird eine Batterie an Paketen installiert

```
Do you want to continue?[y/N]:y

Checking SW Requirements...
One or more required packages for installing MLNX_OFED_LINUX are missing.
/lib/modules/5.10.0-23-amd64/build/scripts is required for the Installation.
Attempting to install the following missing packages:
libgfortran5 graphviz autoconf pkg-config linux-headers-5.10.0-23-amd64 flex automake ethtool make swig libnuma1 autotools-dev libnl-route-3-200 libltdl-dev libnl-3-200 quilt python3-distutils tcl m4 chrpath libc6-dev libnl-3-dev libnl-route-3-dev debhelper dkms dpatch gfortran bison gcc tk
Removing old packages...
Installing new packages
Installing ofed-scripts-5.8...
Installing mlnx-tools-5.2.0...
Installing mlnx-ofed-kernel-utils-5.8...
Installing mlnx-ofed-kernel-dkms-5.8...
Installing iser-dkms-5.8...
Installing isert-dkms-5.8...
Installing srp-dkms-5.8...
Installing rdma-core-58mlnx43...
Installing libibverbs1-58mlnx43...
Installing ibverbs-utils-58mlnx43...
Installing ibverbs-providers-58mlnx43...
Installing libibverbs-dev-58mlnx43...
Installing libibverbs1-dbg-58mlnx43...
Installing libibumad3-58mlnx43...
Installing libibumad-dev-58mlnx43...
Installing ibacm-58mlnx43...
Installing librdmacm1-58mlnx43...
Installing rdmacm-utils-58mlnx43...
Installing librdmacm-dev-58mlnx43...
Installing mstflint-4.16.1...
Installing ibdump-6.0.0...
Installing libibmad5-58mlnx43...
Installing libibmad-dev-58mlnx43...
Installing libopensm-5.13.0.MLNX20221016.10d3954...
Installing opensm-5.13.0.MLNX20221016.10d3954...
Installing opensm-doc-5.13.0.MLNX20221016.10d3954...
Installing libopensm-devel-5.13.0.MLNX20221016.10d3954...
Installing libibnetdisc5-58mlnx43...
...
```

Ausgabe Installation beendet.  
Falls wir eine Firmware flashen müssen, sollten wir uns die PSID notieren

```
Initializing...
Attempting to perform Firmware update...
Querying Mellanox devices firmware ...

Device #1:
----------

  Device Type:      ConnectX3
  Part Number:      MCX354A-FCB_A2-A5
  Description:      ConnectX-3 VPI adapter card; dual-port QSFP; FDR IB (56Gb/s) and 40GigE; PCIe3.0 x8 8GT/s; RoHS R6
  PSID:             MT_1090120019
  PCI Device Name:  00:10.0
  Port1 MAC:        f45214990bb1
  Port2 MAC:        f45214990bb2
  Versions:         Current        Available     
     FW             2.11.1308      2.42.5000     
     PXE            N/A            3.4.0752      

  Status:           Update required

---------
Found 1 device(s) requiring firmware update...

Device #1: Updating FW ...     
Done

Restart needed for updates to take effect.
Log File: /tmp/cL0XrUvJzc
Real log file: /tmp/MLNX_OFED_LINUX.515.logs/fw_update.log
Device (00:10.0):
	00:10.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]
	Link Width: x8
	PCI Link Speed: 8GT/s

Installation passed successfully
To load the new driver, run:
/etc/init.d/openibd restart

```

### Installation Mellanox 4 Karten Debian Bullseye

Dann die EULA Akzeptieren , downloaden.  
Dann im Firefox Downloadfentser die URL kopieren und dann per wget einfügen.  
Ich habe den link schon mal gepostet. Ist dann alerrdings die Version zur Erstellung des Artikels.

Dann per wget die Treiber downloaden und entpacken im Home Verzeichnis

```
wget https://content.mellanox.com/ofed/MLNX_OFED-5.8-2.0.3.0/MLNX_OFED_LINUX-5.8-2.0.3.0-debian11.3-x86_64.tgz
tar -xf MLNX_OFED_LINUX-5.8-2.0.3.0-debian11.3-x86_64.tgz
```

Da die Treiber für Bullsee 11.3 sind, müssen wir in der Textdatei die Debian Datei anpassen

```
nano /etc/debian_version
```

Dort dann auf Debian 11.3 abändern

Nun in das Verzeichnis gehen und Treiber installieren

```
cd MLNX_OFED_LINUX-5.8-2.0.3.0-debian11.3-x86_64/
./mlnxofedinstall --skip-unsupported-devices-check
```

Ausgabe, mi Y bestätigen und Dann wird eine Batterie an Paketen installiert

```
Do you want to continue?[y/N]:y

Checking SW Requirements...
One or more required packages for installing MLNX_OFED_LINUX are missing.
/lib/modules/5.10.0-23-amd64/build/scripts is required for the Installation.
Attempting to install the following missing packages:
libgfortran5 graphviz autoconf pkg-config linux-headers-5.10.0-23-amd64 flex automake ethtool make swig libnuma1 autotools-dev libnl-route-3-200 libltdl-dev libnl-3-200 quilt python3-distutils tcl m4 chrpath libc6-dev libnl-3-dev libnl-route-3-dev debhelper dkms dpatch gfortran bison gcc tk
Removing old packages...
Installing new packages
Installing ofed-scripts-5.8...
Installing mlnx-tools-5.2.0...
Installing mlnx-ofed-kernel-utils-5.8...
Installing mlnx-ofed-kernel-dkms-5.8...
Installing iser-dkms-5.8...
Installing isert-dkms-5.8...
Installing srp-dkms-5.8...
Installing rdma-core-58mlnx43...
Installing libibverbs1-58mlnx43...
Installing ibverbs-utils-58mlnx43...
Installing ibverbs-providers-58mlnx43...
Installing libibverbs-dev-58mlnx43...
Installing libibverbs1-dbg-58mlnx43...
Installing libibumad3-58mlnx43...
Installing libibumad-dev-58mlnx43...
Installing ibacm-58mlnx43...
Installing librdmacm1-58mlnx43...
Installing rdmacm-utils-58mlnx43...
Installing librdmacm-dev-58mlnx43...
Installing mstflint-4.16.1...
Installing ibdump-6.0.0...
Installing libibmad5-58mlnx43...
Installing libibmad-dev-58mlnx43...
Installing libopensm-5.13.0.MLNX20221016.10d3954...
Installing opensm-5.13.0.MLNX20221016.10d3954...
Installing opensm-doc-5.13.0.MLNX20221016.10d3954...
Installing libopensm-devel-5.13.0.MLNX20221016.10d3954...
Installing libibnetdisc5-58mlnx43...
...
```

## Ändern des Modes IB/EN  


Karte anzeigen lassen

```
mst start
mst status
```

Ausgabe:

```
ST modules:
------------
    MST PCI module loaded
    MST PCI configuration module loaded

MST devices:
------------
/dev/mst/mt4099_pciconf0         - PCI configuration cycles access.
                                   domain:bus:dev.fn=0000:00:10.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
                                   Chip revision is: 01
/dev/mst/mt4099_pci_cr0          - PCI direct access.
                                   domain:bus:dev.fn=0000:00:10.0 bar=0xfea00000 size=0x100000
                                   Chip revision is: 01

```

Unsere karte ist die /dev/mst/mt4099\_pciconf0

Nun den aktuellen Modi ausgeben

```
mlxburn -d /dev/mst/mt4099_pciconf0 -query
```

Ausgabe:

Modi Ändern:

Ersetzen Sie `mt4099_pciconf0` mit dem Namen Ihres Geräts. Der Wert `2` setzt den Modus auf InfiniBand. Der Wert `1` würde den Modus auf Ethernet setzen.

```
mlxconfig -d /dev/mst/mt4099_pciconf0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2
```

Sollte folgender Fehler kommen, dann muss ide Karte mit einer neuen Firmware versehen werden.

```
-E- Device doesn't support LINK_TYPE_P1 configuration 

```

Firmware Update

Dazu auf [https://network.nvidia.com/support/firmware/firmware-downloads/](https://network.nvidia.com/support/firmware/firmware-downloads/)

Dort seine Karte raussuchen und dort dann drauf klicken, ob Infiband oder Entehrnetfirmware.  
In unserem Beispiel nehem Ich Infiniband, da ich ein Infinibandswitch habe.

[![Auswahl_127.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-05/scaled-1680-/dhPq4vCJ6KPfgcOG-auswahl-127.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-05/dhPq4vCJ6KPfgcOG-auswahl-127.png)

Dann auf eure Karte mit-FCBT klicken. Ich habe eine MCX354A-Karte  
Denn die Karten haben verschiedene Geschwindigkiten, wir wollen volle Pulle.  
  
MCX354A-**Q**CBT = **10 Gbit** Ethernet // **40 Gbit** Infiniband  
MCX354A-**F**CBT = **40 Gbit** Ethernet // **56 Gbit** Infiniband  
  
  
Dann die Datei herunterladen

[![Auswahl_128.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-05/scaled-1680-/2PU9UNShA4rDZBdm-auswahl-128.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-05/2PU9UNShA4rDZBdm-auswahl-128.png)

Und dann wieder die URL in die zwischenablage kopieren für WGET   
Vorher aber noch unzip installieren

```
apt install unzip
wget https://content.mellanox.com/firmware/fw-ConnectX3-rel-2_42_5000-MCX354A-FCB_A2-A5-FlexBoot-3.4.752.bin.zip
```

Die Karte herausbekommen,

```
mst start
mst status
```

Ausgabe

```
MST modules:
------------
    MST PCI module loaded
    MST PCI configuration module loaded

MST devices:
------------
/dev/mst/mt4099_pciconf0         - PCI configuration cycles access.
                                   domain:bus:dev.fn=0000:00:10.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
                                   Chip revision is: 01
/dev/mst/mt4099_pci_cr0          - PCI direct access.
                                   domain:bus:dev.fn=0000:00:10.0 bar=0xfea00000 size=0x100000
                                   Chip revision is: 01

```

Nun haben wir das Gerät /dev/mst/mt4099\_pciconf0 und /dev/mst/mt4099\_pci\_cr0

nun die Firmware ermitteln

```
flint -d /dev/mst/mt4099_pciconf0 query
```

Ausgabe:

```
Image type:            FS2
FW Version:            2.42.5000
FW Version(Running):   2.11.1308
FW Release Date:       5.9.2017
Product Version:       02.42.50.00
Rom Info:              type=PXE version=3.4.752
Device ID:             4099
Description:           Node             Port1            Port2            Sys image
GUIDs:                 f45214030098ff20 f45214030098ff21 f45214030098ff22 f45214030098ff23 
MACs:                                       f4521498ff21     f4521498ff22
VSD:                   
PSID:                  MT_1090120019
root@mellanoxflash:~/MLNX_OFED_LINUX-4.
```

Nun die eigentliche Firmware flashen dazu das device /dev/mst/mt4099\_pci\_cr0 angeben.  
-allow\_psid\_change ändert die PSID falls Eure Karte nicht die gleiche wie die Firmware hat.

```
flint  -d /dev/mst/mt4099_pci_cr0 -i fw-ConnectX3-rel-2_42_5000-MCX354A-FCB_A2-A5-FlexBoot-3.4.752.bin -allow_psid_change burn
```