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