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_CORE_EN_DCB
108	bool "Data Center Bridging (DCB) Support"
109	default y
110	depends on MLX5_CORE_EN && DCB
111	help
112	  Say Y here if you want to use Data Center Bridging (DCB) in the
113	  driver.
114	  If set to N, will not be able to configure QoS and ratelimit attributes.
115	  This flag is depended on the kernel's DCB support.
116
117	  If unsure, set to Y
118
119config MLX5_CORE_IPOIB
120	bool "Mellanox 5th generation network adapters (connectX series) IPoIB offloads support"
121	depends on MLX5_CORE_EN
122	default n
123	help
124	  MLX5 IPoIB offloads & acceleration support.
125
126config MLX5_FPGA_IPSEC
127	bool "Mellanox Technologies IPsec Innova support"
128	depends on MLX5_CORE
129	depends on MLX5_FPGA
130	default n
131	help
132	Build IPsec support for the Innova family of network cards by Mellanox
133	Technologies. Innova network cards are comprised of a ConnectX chip
134	and an FPGA chip on one board. If you select this option, the
135	mlx5_core driver will include the Innova FPGA core and allow building
136	sandbox-specific client drivers.
137
138config MLX5_IPSEC
139	bool "Mellanox Technologies IPsec Connect-X support"
140	depends on MLX5_CORE_EN
141	depends on XFRM_OFFLOAD
142	depends on INET_ESP_OFFLOAD || INET6_ESP_OFFLOAD
143	select MLX5_ACCEL
144	default n
145	help
146	Build IPsec support for the Connect-X family of network cards by Mellanox
147	Technologies.
148	Note: If you select this option, the mlx5_core driver will include
149	IPsec support for the Connect-X family.
150
151config MLX5_EN_IPSEC
152	bool "IPSec XFRM cryptography-offload acceleration"
153	depends on MLX5_CORE_EN
154	depends on XFRM_OFFLOAD
155	depends on INET_ESP_OFFLOAD || INET6_ESP_OFFLOAD
156	depends on MLX5_FPGA_IPSEC || MLX5_IPSEC
157	default n
158	help
159	  Build support for IPsec cryptography-offload acceleration in the NIC.
160	  Note: Support for hardware with this capability needs to be selected
161	  for this option to become available.
162
163config MLX5_FPGA_TLS
164	bool "Mellanox Technologies TLS Innova support"
165	depends on TLS_DEVICE
166	depends on TLS=y || MLX5_CORE=m
167	depends on MLX5_CORE_EN
168	depends on MLX5_FPGA
169	select MLX5_EN_TLS
170	default n
171	help
172	Build TLS support for the Innova family of network cards by Mellanox
173	Technologies. Innova network cards are comprised of a ConnectX chip
174	and an FPGA chip on one board. If you select this option, the
175	mlx5_core driver will include the Innova FPGA core and allow building
176	sandbox-specific client drivers.
177
178config MLX5_TLS
179	bool "Mellanox Technologies TLS Connect-X support"
180	depends on TLS_DEVICE
181	depends on TLS=y || MLX5_CORE=m
182	depends on MLX5_CORE_EN
183	select MLX5_ACCEL
184	select MLX5_EN_TLS
185	default n
186	help
187	Build TLS support for the Connect-X family of network cards by Mellanox
188	Technologies.
189
190config MLX5_EN_TLS
191	bool
192	help
193	Build support for TLS cryptography-offload acceleration in the NIC.
194	Note: Support for hardware with this capability needs to be selected
195	for this option to become available.
196
197config MLX5_SW_STEERING
198	bool "Mellanox Technologies software-managed steering"
199	depends on MLX5_CORE_EN && MLX5_ESWITCH
200	select CRC32
201	default y
202	help
203	Build support for software-managed steering in the NIC.
204
205config MLX5_SF
206	bool "Mellanox Technologies subfunction device support using auxiliary device"
207	depends on MLX5_CORE && MLX5_CORE_EN
208	default n
209	help
210	Build support for subfuction device in the NIC. A Mellanox subfunction
211	device can support RDMA, netdevice and vdpa device.
212	It is similar to a SRIOV VF but it doesn't require SRIOV support.
213
214config MLX5_SF_MANAGER
215	bool
216	depends on MLX5_SF && MLX5_ESWITCH
217	default y
218	help
219	Build support for subfuction port in the NIC. A Mellanox subfunction
220	port is managed through devlink.  A subfunction supports RDMA, netdevice
221	and vdpa device. It is similar to a SRIOV VF but it doesn't require
222	SRIOV support.
223