← Documents Documentation/networking/device_drivers/ethernet/mellanox/mlx5/kconfig.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

Enabling the mlx5 Driver and Kconfig Options

mlx5 코어와 Ethernet, RDMA, 보안, 조향, SF, vDPA, VFIO 기능을 선택하는 Kconfig 옵션을 설명합니다.

Source pathDocumentation/networking/device_drivers/ethernet/mellanox/mlx5/kconfig.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

kconfig.rst:1-171

기본 Ethernet만 필요하면 `CONFIG_MLX5_CORE`와 `CONFIG_MLX5_CORE_EN`이 출발점입니다. 그 위에 RDMA, eSwitch, TC, 보안 오프로딩, SF/vDPA/VFIO를 실제 배포 요구에 맞춰 더합니다.

기능 계층
계층주요 옵션용도
기본CORE, CORE_EN코어와 Ethernet netdevice
네트워크 가속IPOIB, CLS_ACT, ARFS, RXNFC조향과 분류
보안IPSEC, MACSEC, TLS암호화 오프로딩
가상화ESWITCH, SF, SF_MANAGERSR-IOV, switchdev, subfunction
장치 서비스INFINIBAND, VDPA, VDPA_NET, VFIO_PCIRDMA, virtio와 migration

옵션을 의존 관계와 용도별로 묶었습니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
2 .. include:: <isonum.txt>
3
4 =======================================
5 Enabling the driver and kconfig options
6 =======================================
7
8 :Copyright: |copy| 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
9
10 | mlx5 core is modular and most of the major mlx5 core driver features can be selected (compiled in/out)
11 | at build time via kernel Kconfig flags.
12 | Basic features, ethernet net device rx/tx offloads and XDP, are available with the most basic flags
13 | CONFIG_MLX5_CORE=y/m and CONFIG_MLX5_CORE_EN=y.
14 | For the list of advanced features, please see below.
15
16 **CONFIG_MLX5_BRIDGE=(y/n)**
17
18 | Enable :ref:`Ethernet Bridging (BRIDGE) offloading support <mlx5_bridge_offload>`.
19 | This will provide the ability to add representors of mlx5 uplink and VF
20 | ports to Bridge and offloading rules for traffic between such ports.
21 | Supports VLANs (trunk and access modes).
22
23
24 **CONFIG_MLX5_CORE=(y/m/n)** (module mlx5_core.ko)
25
26 | The driver can be enabled by choosing CONFIG_MLX5_CORE=y/m in kernel config.
27 | This will provide mlx5 core driver for mlx5 ulps to interface with (mlx5e, mlx5_ib).
28
29
30 **CONFIG_MLX5_CORE_EN=(y/n)**
31
32 | Choosing this option will allow basic ethernet netdevice support with all of the standard rx/tx offloads.
33 | mlx5e is the mlx5 ulp driver which provides netdevice kernel interface, when chosen, mlx5e will be
34 | built-in into mlx5_core.ko.
35
36
37 **CONFIG_MLX5_CORE_EN_DCB=(y/n)**:
38
39 | Enables `Data Center Bridging (DCB) Support <https://enterprise-support.nvidia.com/s/article/howto-auto-config-pfc-and-ets-on-connectx-4-via-lldp-dcbx>`_.
40
41
42 **CONFIG_MLX5_CORE_IPOIB=(y/n)**
43
44 | IPoIB offloads & acceleration support.
45 | Requires CONFIG_MLX5_CORE_EN to provide an accelerated interface for the rdma
46 | IPoIB ulp netdevice.
47
48
49 **CONFIG_MLX5_CLS_ACT=(y/n)**
50
51 | Enables offload support for TC classifier action (NET_CLS_ACT).
52 | Works in both native NIC mode and Switchdev SRIOV mode.
53 | Flow-based classifiers, such as those registered through
54 | `tc-flower(8)`, are processed by the device, rather than the
55 | host. Actions that would then overwrite matching classification
56 | results would then be instant due to the offload.
57
58
59 **CONFIG_MLX5_EN_ARFS=(y/n)**
60
61 | Enables Hardware-accelerated receive flow steering (arfs) support, and ntuple filtering.
62 | https://enterprise-support.nvidia.com/s/article/howto-configure-arfs-on-connectx-4
63
64
65 **CONFIG_MLX5_EN_IPSEC=(y/n)**
66
67 | Enables :ref:`IPSec XFRM cryptography-offload acceleration <xfrm_device>`.
68
69
70 **CONFIG_MLX5_MACSEC=(y/n)**
71
72 | Build support for MACsec cryptography-offload acceleration in the NIC.
73
74
75 **CONFIG_MLX5_EN_RXNFC=(y/n)**
76
77 | Enables ethtool receive network flow classification, which allows user defined
78 | flow rules to direct traffic into arbitrary rx queue via ethtool set/get_rxnfc API.
79
80
81 **CONFIG_MLX5_EN_TLS=(y/n)**
82
83 | TLS cryptography-offload acceleration.
84
85
86 **CONFIG_MLX5_ESWITCH=(y/n)**
87
88 | Ethernet SRIOV E-Switch support in ConnectX NIC. E-Switch provides internal SRIOV packet steering
89 | and switching for the enabled VFs and PF in two available modes:
90 | 1) `Legacy SRIOV mode (L2 mac vlan steering based) <https://enterprise-support.nvidia.com/s/article/HowTo-Configure-SR-IOV-for-ConnectX-4-ConnectX-5-ConnectX-6-with-KVM-Ethernet>`_.
91 | 2) :ref:`Switchdev mode (eswitch offloads) <switchdev>`.
92
93
94 **CONFIG_MLX5_FPGA=(y/n)**
95
96 | Build support for the Innova family of network cards by Mellanox Technologies.
97 | Innova network cards are comprised of a ConnectX chip and an FPGA chip on one board.
98 | If you select this option, the mlx5_core driver will include the Innova FPGA core and allow
99 | building sandbox-specific client drivers.
100
101
102 **CONFIG_MLX5_INFINIBAND=(y/n/m)** (module mlx5_ib.ko)
103
104 | Provides low-level InfiniBand/RDMA and `RoCE <https://enterprise-support.nvidia.com/s/article/recommended-network-configuration-examples-for-roce-deployment>`_ support.
105
106
107 **CONFIG_MLX5_MPFS=(y/n)**
108
109 | Ethernet Multi-Physical Function Switch (MPFS) support in ConnectX NIC.
110 | MPFs is required for when `Multi-Host <https://www.nvidia.com/en-us/networking/multi-host/>`_ configuration is enabled to allow passing
111 | user configured unicast MAC addresses to the requesting PF.
112
113
114 **CONFIG_MLX5_SF=(y/n)**
115
116 | Build support for subfunction.
117 | Subfunctons are more light weight than PCI SRIOV VFs. Choosing this option
118 | will enable support for creating subfunction devices.
119
120
121 **CONFIG_MLX5_SF_MANAGER=(y/n)**
122
123 | Build support for subfuction port in the NIC. A Mellanox subfunction
124 | port is managed through devlink. A subfunction supports RDMA, netdevice
125 | and vdpa device. It is similar to a SRIOV VF but it doesn't require
126 | SRIOV support.
127
128
129 **CONFIG_MLX5_SW_STEERING=(y/n)**
130
131 | Build support for software-managed steering in the NIC.
132
133 **CONFIG_MLX5_HW_STEERING=(y/n)**
134
135 | Build support for hardware-managed steering in the NIC.
136
137 **CONFIG_MLX5_TC_CT=(y/n)**
138
139 | Support offloading connection tracking rules via tc ct action.
140
141
142 **CONFIG_MLX5_TC_SAMPLE=(y/n)**
143
144 | Support offloading sample rules via tc sample action.
145
146
147 **CONFIG_MLX5_VDPA=(y/n)**
148
149 | Support library for Mellanox VDPA drivers. Provides code that is
150 | common for all types of VDPA drivers. The following drivers are planned:
151 | net, block.
152
153
154 **CONFIG_MLX5_VDPA_NET=(y/n)**
155
156 | VDPA network driver for ConnectX6 and newer. Provides offloading
157 | of virtio net datapath such that descriptors put on the ring will
158 | be executed by the hardware. It also supports a variety of stateless
159 | offloads depending on the actual device used and firmware version.
160
161
162 **CONFIG_MLX5_VFIO_PCI=(y/n)**
163
164 | This provides migration support for MLX5 devices using the VFIO framework.
165
166
167 **External options** ( Choose if the corresponding mlx5 feature is required )
168
169 - CONFIG_MLXFW: When chosen, mlx5 firmware flashing support will be enabled (via devlink and ethtool).
170 - CONFIG_PTP_1588_CLOCK: When chosen, mlx5 ptp support will be enabled
171 - CONFIG_VXLAN: When chosen, mlx5 vxlan support will be enabled.
172

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

드라이버와 Kconfig 옵션 활성화

1-171

이 문서는 `GPL-2.0 OR Linux-OpenIB` 이중 라이선스를 따릅니다.

드라이버와 Kconfig 옵션 활성화

mlx5 코어는 모듈식이며 주요 기능 대부분을 커널 빌드 시 Kconfig 플래그로 포함하거나 제외할 수 있습니다. 가장 기본적인 `CONFIG_MLX5_CORE=y/m`과 `CONFIG_MLX5_CORE_EN=y`만으로 기본 Ethernet netdevice, 표준 RX/TX 오프로딩과 XDP를 사용할 수 있습니다.

mlx5 Kconfig 선택표
옵션기능설명
`CONFIG_MLX5_BRIDGE=(y/n)`switchdev 브리지 오프로딩업링크/VF representor를 Linux bridge에 연결하고 포트 간 규칙과 trunk/access VLAN을 오프로딩합니다.
`CONFIG_MLX5_CORE=(y/m/n)``mlx5_core.ko` 코어mlx5 ULP인 `mlx5e`, `mlx5_ib`가 연결할 코어 드라이버를 내장하거나 모듈로 빌드합니다.
`CONFIG_MLX5_CORE_EN=(y/n)`기본 Ethernet표준 RX/TX 오프로딩을 갖춘 netdevice를 제공합니다. `mlx5e`는 `mlx5_core.ko`에 포함됩니다.
`CONFIG_MLX5_CORE_EN_DCB=(y/n)`DCBData Center Bridging, PFC와 ETS 구성을 지원합니다.
`CONFIG_MLX5_CORE_IPOIB=(y/n)`IPoIB`CONFIG_MLX5_CORE_EN`을 바탕으로 RDMA IPoIB ULP netdevice 가속 인터페이스를 제공합니다.
`CONFIG_MLX5_CLS_ACT=(y/n)`TC classifier actionnative NIC와 switchdev SR-IOV 모드에서 `tc-flower(8)` 분류와 동작을 장치로 오프로딩합니다.
`CONFIG_MLX5_EN_ARFS=(y/n)`aRFS와 ntuple하드웨어 가속 수신 흐름 조향과 ntuple 필터를 활성화합니다.
`CONFIG_MLX5_EN_IPSEC=(y/n)`IPsec XFRMXFRM 암호화 오프로딩 가속을 활성화합니다.
`CONFIG_MLX5_MACSEC=(y/n)`MACsecNIC의 MACsec 암호화 오프로딩 가속을 빌드합니다.
`CONFIG_MLX5_EN_RXNFC=(y/n)`ethtool RXNFC`set/get_rxnfc` API로 사용자 흐름 규칙을 임의 RX 큐에 보냅니다.
`CONFIG_MLX5_EN_TLS=(y/n)`TLSTLS 암호화 오프로딩 가속을 활성화합니다.
`CONFIG_MLX5_ESWITCH=(y/n)`SR-IOV E-SwitchVF/PF 내부 조향과 스위칭을 Legacy L2 MAC/VLAN 또는 switchdev 모드로 제공합니다.
`CONFIG_MLX5_FPGA=(y/n)`Innova FPGAConnectX와 FPGA를 한 보드에 둔 Innova 제품군 코어와 sandbox 전용 클라이언트 드라이버 빌드를 지원합니다.
`CONFIG_MLX5_INFINIBAND=(y/n/m)``mlx5_ib.ko`저수준 InfiniBand/RDMA와 RoCE를 지원합니다.
`CONFIG_MLX5_MPFS=(y/n)`Multi-PF SwitchMulti-Host 구성에서 사용자가 지정한 유니캐스트 MAC 주소를 요청 PF로 전달합니다.
`CONFIG_MLX5_SF=(y/n)`SubfunctionPCI SR-IOV VF보다 가벼운 subfunction 장치 생성을 지원합니다.
`CONFIG_MLX5_SF_MANAGER=(y/n)`SF 포트 관리devlink로 RDMA, netdevice, vDPA를 지원하는 SF 포트를 관리합니다. SR-IOV는 필요하지 않습니다.
`CONFIG_MLX5_SW_STEERING=(y/n)`소프트웨어 관리 조향NIC의 소프트웨어 관리형 steering을 빌드합니다.
`CONFIG_MLX5_HW_STEERING=(y/n)`하드웨어 관리 조향NIC의 하드웨어 관리형 steering을 빌드합니다.
`CONFIG_MLX5_TC_CT=(y/n)`TC connection tracking`tc ct` 동작의 연결 추적 규칙 오프로딩을 지원합니다.
`CONFIG_MLX5_TC_SAMPLE=(y/n)`TC sample`tc sample` 동작의 표본 추출 규칙 오프로딩을 지원합니다.
`CONFIG_MLX5_VDPA=(y/n)`vDPA 공통 라이브러리net, block 등 Mellanox vDPA 드라이버가 공유하는 코드를 제공합니다.
`CONFIG_MLX5_VDPA_NET=(y/n)`ConnectX-6+ vDPA netvirtio-net 링 descriptor를 하드웨어가 실행하고 장치·펌웨어가 지원하는 stateless 오프로딩을 제공합니다.
`CONFIG_MLX5_VFIO_PCI=(y/n)`VFIO migrationVFIO 프레임워크를 사용하는 mlx5 장치 마이그레이션을 지원합니다.
`CONFIG_MLXFW`외부 옵션devlink와 ethtool을 통한 mlx5 펌웨어 플래시를 활성화합니다.
`CONFIG_PTP_1588_CLOCK`외부 옵션mlx5 PTP 지원을 활성화합니다.
`CONFIG_VXLAN`외부 옵션mlx5 VXLAN 지원을 활성화합니다.

각 옵션의 빌드 형태와 활성화되는 기능을 원문 순서대로 정리했습니다.

`CONFIG_MLX5_CORE`와 `CONFIG_MLX5_INFINIBAND`는 모듈 빌드를 허용하고, 나머지 표의 `(y/n)` 옵션은 기능 포함 여부를 선택합니다. 외부 옵션은 해당 mlx5 기능이 필요한 경우 함께 선택합니다.

.. SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
.. include:: <isonum.txt>

=======================================
Enabling the driver and kconfig options
=======================================

:Copyright: |copy| 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

| mlx5 core is modular and most of the major mlx5 core driver features can be selected (compiled in/out)
| at build time via kernel Kconfig flags.
| Basic features, ethernet net device rx/tx offloads and XDP, are available with the most basic flags
| CONFIG_MLX5_CORE=y/m and CONFIG_MLX5_CORE_EN=y.
| For the list of advanced features, please see below.

**CONFIG_MLX5_BRIDGE=(y/n)**

|    Enable :ref:`Ethernet Bridging (BRIDGE) offloading support <mlx5_bridge_offload>`.
|    This will provide the ability to add representors of mlx5 uplink and VF
|    ports to Bridge and offloading rules for traffic between such ports.
|    Supports VLANs (trunk and access modes).


**CONFIG_MLX5_CORE=(y/m/n)** (module mlx5_core.ko)

|    The driver can be enabled by choosing CONFIG_MLX5_CORE=y/m in kernel config.
|    This will provide mlx5 core driver for mlx5 ulps to interface with (mlx5e, mlx5_ib).


**CONFIG_MLX5_CORE_EN=(y/n)**

|    Choosing this option will allow basic ethernet netdevice support with all of the standard rx/tx offloads.
|    mlx5e is the mlx5 ulp driver which provides netdevice kernel interface, when chosen, mlx5e will be
|    built-in into mlx5_core.ko.


**CONFIG_MLX5_CORE_EN_DCB=(y/n)**:

|    Enables `Data Center Bridging (DCB) Support <https://enterprise-support.nvidia.com/s/article/howto-auto-config-pfc-and-ets-on-connectx-4-via-lldp-dcbx>`_.


**CONFIG_MLX5_CORE_IPOIB=(y/n)**

|    IPoIB offloads & acceleration support.
|    Requires CONFIG_MLX5_CORE_EN to provide an accelerated interface for the rdma
|    IPoIB ulp netdevice.


**CONFIG_MLX5_CLS_ACT=(y/n)**

|    Enables offload support for TC classifier action (NET_CLS_ACT).
|    Works in both native NIC mode and Switchdev SRIOV mode.
|    Flow-based classifiers, such as those registered through
|    `tc-flower(8)`, are processed by the device, rather than the
|    host. Actions that would then overwrite matching classification
|    results would then be instant due to the offload.


**CONFIG_MLX5_EN_ARFS=(y/n)**

|    Enables Hardware-accelerated receive flow steering (arfs) support, and ntuple filtering.
|    https://enterprise-support.nvidia.com/s/article/howto-configure-arfs-on-connectx-4


**CONFIG_MLX5_EN_IPSEC=(y/n)**

|    Enables :ref:`IPSec XFRM cryptography-offload acceleration <xfrm_device>`.


**CONFIG_MLX5_MACSEC=(y/n)**

|    Build support for MACsec cryptography-offload acceleration in the NIC.


**CONFIG_MLX5_EN_RXNFC=(y/n)**

|    Enables ethtool receive network flow classification, which allows user defined
|    flow rules to direct traffic into arbitrary rx queue via ethtool set/get_rxnfc API.


**CONFIG_MLX5_EN_TLS=(y/n)**

|    TLS cryptography-offload acceleration.


**CONFIG_MLX5_ESWITCH=(y/n)**

|    Ethernet SRIOV E-Switch support in ConnectX NIC. E-Switch provides internal SRIOV packet steering
|    and switching for the enabled VFs and PF in two available modes:
|           1) `Legacy SRIOV mode (L2 mac vlan steering based) <https://enterprise-support.nvidia.com/s/article/HowTo-Configure-SR-IOV-for-ConnectX-4-ConnectX-5-ConnectX-6-with-KVM-Ethernet>`_.
|           2) :ref:`Switchdev mode (eswitch offloads) <switchdev>`.


**CONFIG_MLX5_FPGA=(y/n)**

|    Build support for the Innova family of network cards by Mellanox Technologies.
|    Innova network cards are comprised of a ConnectX chip and an FPGA chip on one board.
|    If you select this option, the mlx5_core driver will include the Innova FPGA core and allow
|    building sandbox-specific client drivers.


**CONFIG_MLX5_INFINIBAND=(y/n/m)** (module mlx5_ib.ko)

|    Provides low-level InfiniBand/RDMA and `RoCE <https://enterprise-support.nvidia.com/s/article/recommended-network-configuration-examples-for-roce-deployment>`_ support.


**CONFIG_MLX5_MPFS=(y/n)**

|    Ethernet Multi-Physical Function Switch (MPFS) support in ConnectX NIC.
|    MPFs is required for when `Multi-Host <https://www.nvidia.com/en-us/networking/multi-host/>`_ configuration is enabled to allow passing
|    user configured unicast MAC addresses to the requesting PF.


**CONFIG_MLX5_SF=(y/n)**

|    Build support for subfunction.
|    Subfunctons are more light weight than PCI SRIOV VFs. Choosing this option
|    will enable support for creating subfunction devices.


**CONFIG_MLX5_SF_MANAGER=(y/n)**

|    Build support for subfuction port in the NIC. A Mellanox subfunction
|    port is managed through devlink.  A subfunction supports RDMA, netdevice
|    and vdpa device. It is similar to a SRIOV VF but it doesn't require
|    SRIOV support.


**CONFIG_MLX5_SW_STEERING=(y/n)**

|    Build support for software-managed steering in the NIC.

**CONFIG_MLX5_HW_STEERING=(y/n)**

|    Build support for hardware-managed steering in the NIC.

**CONFIG_MLX5_TC_CT=(y/n)**

|    Support offloading connection tracking rules via tc ct action.


**CONFIG_MLX5_TC_SAMPLE=(y/n)**

|    Support offloading sample rules via tc sample action.


**CONFIG_MLX5_VDPA=(y/n)**

|    Support library for Mellanox VDPA drivers. Provides code that is
|    common for all types of VDPA drivers. The following drivers are planned:
|    net, block.


**CONFIG_MLX5_VDPA_NET=(y/n)**

|    VDPA network driver for ConnectX6 and newer. Provides offloading
|    of virtio net datapath such that descriptors put on the ring will
|    be executed by the hardware. It also supports a variety of stateless
|    offloads depending on the actual device used and firmware version.


**CONFIG_MLX5_VFIO_PCI=(y/n)**

|    This provides migration support for MLX5 devices using the VFIO framework.


**External options** ( Choose if the corresponding mlx5 feature is required )

- CONFIG_MLXFW: When chosen, mlx5 firmware flashing support will be enabled (via devlink and ethtool).
- CONFIG_PTP_1588_CLOCK: When chosen, mlx5 ptp support will be enabled
- CONFIG_VXLAN: When chosen, mlx5 vxlan support will be enabled.