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