Driver Usage and Configuration

Warning

Note that the FreeBSD interface name has changed from mlx5en to mce. Note that ifconfig and sysctl commands were updated accordingly.

Procedure_Heading_Icon.PNG

To assign an IP address to the interface, run:

Copy
Copied!
            

#> ifconfig mce<N> <ip>

Note: <N> is the OS assigned interface number

Procedure_Heading_Icon.PNG

To check driver and device information:

Copy
Copied!
            

#> pciconf -lv | grep mlx #> flint -d pci0:<x>:0:0 q

Example:

Copy
Copied!
            

#> pciconf -lv | grep mlx -C 3 mlx5_core0@pci0:33:0:0: class="0x020000" card=0x001415b3 chip=0x101315b3 rev=0x00 hdr=0x00 vendor = 'Mellanox Technologies' device = 'MT27620 Family' class = network subclass = ethernet mlx5_core1@pci0:33:0:1: class="0x020000" card=0x001415b3 chip=0x101315b3 rev=0x00 hdr=0x00 vendor = 'Mellanox Technologies' device = 'MT27620 Family' class = network #> flint -d pci0:33:0:0: q Image type: FS3 FW Version: 12.12.0610 FW Release Date: 3.9.2015 Description: UID GuidsNumber Base GUID: e41d2d03006094ec 20 Base MAC: 0000e41d2d6094ec 20 Image VSD: Device VSD: PSID: MT_2190110032 #> flint -d pci0:6:0:0 dc | grep Description ;;Description = ConnectX-4 VPI adapter card; EDR IB (100Gb/s) and 100GbE; dual-port QSFP28; PCIe3.0 x16; ROHS R6

Copy
Copied!
            

#>sysctl -a

Example:

Copy
Copied!
            

sysctl -a | grep Mellanox dev.mlx5_core.1.%desc: Mellanox Ethernet driver (3.0.0-RC2) dev.mlx5_core.0.%desc: Mellanox Ethernet driver (3.0.0-RC2)

version:

  • dmesg:

    Copy
    Copied!
                

    #> dmesg

    Example:

    Copy
    Copied!
                

    Mlx5_core0: INFO: firmware version: 12.12.2008

  • sysctl:

    Copy
    Copied!
                

    #> sysctl -a

    Example:

    Copy
    Copied!
                

    dev.mlx5_core.0.hw.fw_version: 12.12.2008

To query stateless offload status:

Copy
Copied!
            

#> ifconfig mce<x>

Note: <x> is the PS assigned interface number.

Procedure_Heading_Icon.PNG
To set stateless offload status:

Copy
Copied!
            

#> ifconfig mce<x> [rxcsum|-rxcsum] [txcsum|-txcsum] [tso|-tso] [lro|-lro]

Note: <x> is the OS assigned interface number.

Procedure_Heading_Icon.PNG
To query and set interrupt coalescing modes:

Copy
Copied!
            

#> sysctl -a | grep coalesce_mode

Example:

Copy
Copied!
            

#> sysctl -a | grep coalesce_mode dev.mce.0.conf.rx_coalesce_mode: 1 dev.mce.1.conf.rx_coalesce_mode: 1

  • coalesce mode '0' indicates interrupt timer is resetting with each interrupt event.

  • coalesce mode '1' indicates interrupt timer is resetting with each received packet.

Procedure_Heading_Icon.PNG
To query and modify values for timer initialization between interrupts:

Copy
Copied!
            

#> sysctl -a | grep tx_coalesce_usecs #> sysctl -a | grep rx_coalesce_usecs

Procedure_Heading_Icon.PNG
To query and modify values for number of received packets between interrupts:

Copy
Copied!
            

#> sysctl -a | grep tx_coalesce_pkts #> sysctl -a | grep rx_coalesce_pkts

Example:

Copy
Copied!
            

#> sysctl -a | grep rx_coalesce_usecs dev.mce.1.conf.rx_coalesce_usecs: 3 dev.mce.0.conf.rx_coalesce_usecs: 3 #> sysctl -a | grep rx_coalesce_pkts dev.mce.1.conf.rx_coalesce_pkts: 32 dev.mce.0.conf.rx_coalesce_pkts: 32

To query ring size values:

Copy
Copied!
            

#> sysctl -a | grep mce| grep _size

Example:

Copy
Copied!
            

#> sysctl -a | grep mlx | grep _size dev.mce.1.conf.rx_queue_size: 1024 dev.mce.1.conf.tx_queue_size: 1024 dev.mce.1.conf.rx_queue_size_max: 8192 dev.mce.1.conf.tx_queue_size_max: 8192

To modify rings size:

Copy
Copied!
            

#> sysctl dev.mce.<N>.conf.rx_queue_size=[N] #> sysctl dev.mce.<N>.conf.tx_queue_size=[N]

Note: <x> is the OS assigned interface number. To obtain device statistics:

Copy
Copied!
            

#> sysctl -a | grep mce | grep stat

Copy
Copied!
            

#> sysctl dev.mce.<N>.conf.debug_stats=1 #> sysctl -a | grep mce | grep stats

To show out of receive buffers counter:

Copy
Copied!
            

sysctl dev.mce.<N>.vstats.rx_out_of_buffer dev.mce.<N>.vstats.rx_out_of_buffer: 0

To verify support for Rx/Tx pause frames:

  • ifconfig

    Copy
    Copied!
                

    #> ifconfig media: Ethernet autoselect (100GBase-CR4 <full-duplex,rxpause,txpause>)

  • sysctl

    Copy
    Copied!
                

    #> sysctl dev.mce.<N>.rx_pauseframe_control dev.mce.<N>.rx_pauseframe_control: 1 #> sysctl dev.mce.<N>.tx_pauseframe_control dev.mce.<N>.tx_pauseframe_control: 1

To enable/disable Rx/Tx pause frames:

  • ifconfig

    • To enable Rx/Tx pause frames, run:

      Copy
      Copied!
                  

      ifconfig mce<N> mediaopt txpause,rxpause

    • To disable Rx/Tx pause frames, run:

      Copy
      Copied!
                  

      ifconfig mce<N> -mediaopt txpause,rxpause

  • sysctl

    Copy
    Copied!
                

    sysctl dev.mce.<N>.rx_pauseframe_control=1 sysctl dev.mce.<N>.tx_pauseframe_control=1

    0 = disable, 1 = enable

To show all supported media:

Copy
Copied!
            

#> ifconfig -m mce<x> supported media: media autoselect media 50GBase-CR2 mediaopt full-duplex media 25GBase-SR mediaopt full-duplex media 25GBase-CR mediaopt full-duplex media 100GBase-LR4 mediaopt full-duplex media 100GBase-SR4 mediaopt full-duplex media 100GBase-CR4 mediaopt full-duplex media 40Gbase-LR4 mediaopt full-duplex

Note: <x> is the OS assigned interface number.

Warning

The list of supported media is different in ConnectX-4 and ConnectX-4 Lx.

To set new media:

Copy
Copied!
            

#> ifconfig -m mce<x> media <y> mediaopt full-duplex

Note: <x> is the OS assigned interface number. <y> is the relevant media.

Warning

When updating the media, make sure to choose the right cable type.

Once the driver is loaded, both ports will be activated, meaning that an ifnet will be created for each port.

© Copyright 2023, NVIDIA. Last updated on May 24, 2023.