1# SPDX-License-Identifier: GPL-2.0-only
2#
3# Mellanox driver configuration
4#
5
6config MLX5_CORE
7	tristate "Mellanox 5th generation network adapters (ConnectX series) core driver"
8	depends on PCI
9	select AUXILIARY_BUS
10	select NET_DEVLINK
11	depends on VXLAN || !VXLAN
12	depends on MLXFW || !MLXFW
13	depends on PTP_1588_CLOCK_OPTIONAL
14	depends on PCI_HYPERV_INTERFACE || !PCI_HYPERV_INTERFACE
15	help
16	  Core driver for low level functionality of the ConnectX-4 and
17	  Connect-IB cards by Mellanox Technologies.
18
19config MLX5_ACCEL
20	bool
21
22config MLX5_FPGA
23	bool "Mellanox Technologies Innova support"
24	depends on MLX5_CORE
25	select MLX5_ACCEL
26	help
27	  Build support for the Innova family of network cards by Mellanox
28	  Technologies. Innova network cards are comprised of a ConnectX chip
29	  and an FPGA chip on one board. If you select this option, the
30	  mlx5_core driver will include the Innova FPGA core and allow building
31	  sandbox-specific client drivers.
32
33config MLX5_CORE_EN
34	bool "Mellanox 5th generation network adapters (ConnectX series) Ethernet support"
35	depends on NETDEVICES && ETHERNET && INET && PCI && MLX5_CORE
36	select PAGE_POOL
37	select DIMLIB
38	help
39	  Ethernet support in Mellanox Technologies ConnectX-4 NIC.
40
41config MLX5_EN_ARFS
42	bool "Mellanox MLX5 ethernet accelerated receive flow steering (ARFS) support"
43	depends on MLX5_CORE_EN && RFS_ACCEL
44	default y
45	help
46	  Mellanox MLX5 ethernet hardware-accelerated receive flow steering support,
47	  Enables ethernet netdevice arfs support and ntuple filtering.
48
49config MLX5_EN_RXNFC
50	bool "Mellanox MLX5 ethernet rx nfc flow steering support"
51	depends on MLX5_CORE_EN
52	default y
53	help
54	  Mellanox MLX5 ethernet rx nfc flow steering support
55	  Enables ethtool receive network flow classification, which allows user defined
56	  flow rules to direct traffic into arbitrary rx queue via ethtool set/get_rxnfc
57	  API.
58
59config MLX5_MPFS
60	bool "Mellanox Technologies MLX5 MPFS support"
61	depends on MLX5_CORE_EN
62	default y
63	help
64	  Mellanox Technologies Ethernet Multi-Physical Function Switch (MPFS)
65	  support in ConnectX NIC. MPFs is required for when multi-PF configuration
66	  is enabled to allow passing user configured unicast MAC addresses to the
67	  requesting PF.
68
69config MLX5_ESWITCH
70	bool "Mellanox Technologies MLX5 SRIOV E-Switch support"
71	depends on MLX5_CORE_EN && NET_SWITCHDEV
72	default y
73	help
74	  Mellanox Technologies Ethernet SRIOV E-Switch support in ConnectX NIC.
75	  E-Switch provides internal SRIOV packet steering and switching for the
76	  enabled VFs and PF in two available modes:
77	        Legacy SRIOV mode (L2 mac vlan steering based).
78	        Switchdev mode (eswitch offloads).
79
80config MLX5_BRIDGE
81	bool
82	depends on MLX5_ESWITCH && BRIDGE
83	default y
84	help
85	  mlx5 ConnectX offloads support for Ethernet Bridging (BRIDGE).
86	  Enable adding representors of mlx5 uplink and VF ports to Bridge and
87	  offloading rules for traffic between such ports. Supports VLANs (trunk and
88	  access modes).
89
90config MLX5_CLS_ACT
91	bool "MLX5 TC classifier action support"
92	depends on MLX5_ESWITCH && NET_CLS_ACT
93	default y
94	help
95	  mlx5 ConnectX offloads support for TC classifier action (NET_CLS_ACT),
96	  works in both native NIC mode and Switchdev SRIOV mode.
97	  Actions get attached to a Hardware offloaded classifiers and are
98	  invoked after a successful classification. Actions are used to
99	  overwrite the classification result, instantly drop or redirect and/or
100	  reformat packets in wire speeds without involving the host cpu.
101
102	  If set to N, TC offloads in both NIC and switchdev modes will be disabled.
103	  If unsure, set to Y
104
105config MLX5_TC_CT
106	bool "MLX5 TC connection tracking offload support"
107	depends on MLX5_CLS_ACT && NF_FLOW_TABLE && NET_ACT_CT && NET_TC_SKB_EXT
108	default y
109	help
110	  Say Y here if you want to support offloading connection tracking rules
111	  via tc ct action.
112
113	  If unsure, set to Y
114
115config MLX5_TC_SAMPLE
116	bool "MLX5 TC sample offload support"
117	depends on MLX5_CLS_ACT
118	depends on PSAMPLE=y || PSAMPLE=n || MLX5_CORE=m
119	default y
120	help
121	  Say Y here if you want to support offloading sample rules via tc
122	  sample action.
123	  If set to N, will not be able to configure tc rules with sample
124	  action.
125
126	  If unsure, set to Y
127
128config MLX5_CORE_EN_DCB
129	bool "Data Center Bridging (DCB) Support"
130	default y
131	depends on MLX5_CORE_EN && DCB
132	help
133	  Say Y here if you want to use Data Center Bridging (DCB) in the
134	  driver.
135	  If set to N, will not be able to configure QoS and ratelimit attributes.
136	  This flag is depended on the kernel's DCB support.
137
138	  If unsure, set to Y
139
140config MLX5_CORE_IPOIB
141	bool "Mellanox 5th generation network adapters (connectX series) IPoIB offloads support"
142	depends on MLX5_CORE_EN
143	help
144	  MLX5 IPoIB offloads & acceleration support.
145
146config MLX5_FPGA_IPSEC
147	bool "Mellanox Technologies IPsec Innova support"
148	depends on MLX5_CORE
149	depends on MLX5_FPGA
150	help
151	Build IPsec support for the Innova family of network cards by Mellanox
152	Technologies. Innova network cards are comprised of a ConnectX chip
153	and an FPGA chip on one board. If you select this option, the
154	mlx5_core driver will include the Innova FPGA core and allow building
155	sandbox-specific client drivers.
156
157config MLX5_IPSEC
158	bool "Mellanox Technologies IPsec Connect-X support"
159	depends on MLX5_CORE_EN
160	depends on XFRM_OFFLOAD
161	depends on INET_ESP_OFFLOAD || INET6_ESP_OFFLOAD
162	select MLX5_ACCEL
163	help
164	Build IPsec support for the Connect-X family of network cards by Mellanox
165	Technologies.
166	Note: If you select this option, the mlx5_core driver will include
167	IPsec support for the Connect-X family.
168
169config MLX5_EN_IPSEC
170	bool "IPSec XFRM cryptography-offload acceleration"
171	depends on MLX5_CORE_EN
172	depends on XFRM_OFFLOAD
173	depends on INET_ESP_OFFLOAD || INET6_ESP_OFFLOAD
174	depends on MLX5_FPGA_IPSEC || MLX5_IPSEC
175	help
176	  Build support for IPsec cryptography-offload acceleration in the NIC.
177	  Note: Support for hardware with this capability needs to be selected
178	  for this option to become available.
179
180config MLX5_FPGA_TLS
181	bool "Mellanox Technologies TLS Innova support"
182	depends on TLS_DEVICE
183	depends on TLS=y || MLX5_CORE=m
184	depends on MLX5_CORE_EN
185	depends on MLX5_FPGA
186	select MLX5_EN_TLS
187	help
188	Build TLS support for the Innova family of network cards by Mellanox
189	Technologies. Innova network cards are comprised of a ConnectX chip
190	and an FPGA chip on one board. If you select this option, the
191	mlx5_core driver will include the Innova FPGA core and allow building
192	sandbox-specific client drivers.
193
194config MLX5_TLS
195	bool "Mellanox Technologies TLS Connect-X support"
196	depends on TLS_DEVICE
197	depends on TLS=y || MLX5_CORE=m
198	depends on MLX5_CORE_EN
199	select MLX5_ACCEL
200	select MLX5_EN_TLS
201	help
202	Build TLS support for the Connect-X family of network cards by Mellanox
203	Technologies.
204
205config MLX5_EN_TLS
206	bool
207	help
208	Build support for TLS cryptography-offload acceleration in the NIC.
209	Note: Support for hardware with this capability needs to be selected
210	for this option to become available.
211
212config MLX5_SW_STEERING
213	bool "Mellanox Technologies software-managed steering"
214	depends on MLX5_CORE_EN && MLX5_ESWITCH
215	select CRC32
216	default y
217	help
218	Build support for software-managed steering in the NIC.
219
220config MLX5_SF
221	bool "Mellanox Technologies subfunction device support using auxiliary device"
222	depends on MLX5_CORE && MLX5_CORE_EN
223	help
224	Build support for subfuction device in the NIC. A Mellanox subfunction
225	device can support RDMA, netdevice and vdpa device.
226	It is similar to a SRIOV VF but it doesn't require SRIOV support.
227
228config MLX5_SF_MANAGER
229	bool
230	depends on MLX5_SF && MLX5_ESWITCH
231	default y
232	help
233	Build support for subfuction port in the NIC. A Mellanox subfunction
234	port is managed through devlink.  A subfunction supports RDMA, netdevice
235	and vdpa device. It is similar to a SRIOV VF but it doesn't require
236	SRIOV support.
237