1283514Sarybchik/*-
2283514Sarybchik * Copyright (c) 2012-2015 Solarflare Communications Inc.
3283514Sarybchik * All rights reserved.
4283514Sarybchik *
5283514Sarybchik * Redistribution and use in source and binary forms, with or without
6283514Sarybchik * modification, are permitted provided that the following conditions are met:
7283514Sarybchik *
8283514Sarybchik * 1. Redistributions of source code must retain the above copyright notice,
9283514Sarybchik *    this list of conditions and the following disclaimer.
10283514Sarybchik * 2. Redistributions in binary form must reproduce the above copyright notice,
11283514Sarybchik *    this list of conditions and the following disclaimer in the documentation
12283514Sarybchik *    and/or other materials provided with the distribution.
13283514Sarybchik *
14283514Sarybchik * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15283514Sarybchik * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16283514Sarybchik * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17283514Sarybchik * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18283514Sarybchik * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19283514Sarybchik * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20283514Sarybchik * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21283514Sarybchik * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22283514Sarybchik * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23283514Sarybchik * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
24283514Sarybchik * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25283514Sarybchik *
26283514Sarybchik * The views and conclusions contained in the software and documentation are
27283514Sarybchik * those of the authors and should not be interpreted as representing official
28283514Sarybchik * policies, either expressed or implied, of the FreeBSD Project.
29283514Sarybchik *
30283514Sarybchik * $FreeBSD: releng/10.3/sys/dev/sfxge/common/efx_check.h 294386 2016-01-20 08:01:21Z arybchik $
31283514Sarybchik */
32283514Sarybchik
33283514Sarybchik#ifndef _SYS_EFX_CHECK_H
34283514Sarybchik#define	_SYS_EFX_CHECK_H
35283514Sarybchik
36283514Sarybchik#include "efsys.h"
37283514Sarybchik
38283514Sarybchik/*
39283514Sarybchik * Check that the efsys.h header in client code has a valid combination of
40283514Sarybchik * EFSYS_OPT_xxx options.
41283514Sarybchik *
42283514Sarybchik * NOTE: Keep checks for obsolete options here to ensure that they are removed
43283514Sarybchik * from client code (and do not reappear in merges from other branches).
44283514Sarybchik */
45283514Sarybchik
46283514Sarybchik/* Support NVRAM based boot config */
47283514Sarybchik#if EFSYS_OPT_BOOTCFG
48283514Sarybchik# if !EFSYS_OPT_NVRAM
49283514Sarybchik#  error "BOOTCFG requires NVRAM"
50283514Sarybchik# endif
51283514Sarybchik#endif /* EFSYS_OPT_BOOTCFG */
52283514Sarybchik
53283514Sarybchik/* Verify chip implements accessed registers */
54283514Sarybchik#if EFSYS_OPT_CHECK_REG
55293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
56293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
57293974Sarybchik#  error "CHECK_REG requires FALCON or SIENA or HUNTINGTON or MEDFORD"
58283514Sarybchik# endif
59283514Sarybchik#endif /* EFSYS_OPT_CHECK_REG */
60283514Sarybchik
61283514Sarybchik/* Decode fatal errors */
62283514Sarybchik#if EFSYS_OPT_DECODE_INTR_FATAL
63283514Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA)
64283514Sarybchik#  error "INTR_FATAL requires FALCON or SIENA"
65283514Sarybchik# endif
66283514Sarybchik#endif /* EFSYS_OPT_DECODE_INTR_FATAL */
67283514Sarybchik
68283514Sarybchik/* Support diagnostic hardware tests */
69283514Sarybchik#if EFSYS_OPT_DIAG
70293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
71293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
72293974Sarybchik#  error "DIAG requires FALCON or SIENA or HUNTINGTON or MEDFORD"
73283514Sarybchik# endif
74283514Sarybchik#endif /* EFSYS_OPT_DIAG */
75283514Sarybchik
76283514Sarybchik/* Support optimized EVQ data access */
77283514Sarybchik#if EFSYS_OPT_EV_PREFETCH
78293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
79293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
80293974Sarybchik#  error "EV_PREFETCH requires FALCON or SIENA or HUNTINGTON or MEDFORD"
81283514Sarybchik# endif
82283514Sarybchik#endif /* EFSYS_OPT_EV_PREFETCH */
83283514Sarybchik
84283514Sarybchik/* Support overriding the NVRAM and VPD configuration */
85283514Sarybchik#if EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE
86283514Sarybchik# if !EFSYS_OPT_FALCON
87283514Sarybchik#  error "FALCON_NIC_CFG_OVERRIDE requires FALCON"
88283514Sarybchik# endif
89283514Sarybchik#endif /* EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE */
90283514Sarybchik
91283514Sarybchik/* Support hardware packet filters */
92283514Sarybchik#if EFSYS_OPT_FILTER
93293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
94293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
95293974Sarybchik#  error "FILTER requires FALCON or SIENA or HUNTINGTON or MEDFORD"
96283514Sarybchik# endif
97283514Sarybchik#endif /* EFSYS_OPT_FILTER */
98283514Sarybchik
99293974Sarybchik#if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
100283514Sarybchik# if !EFSYS_OPT_FILTER
101293974Sarybchik#  error "HUNTINGTON or MEDFORD requires FILTER"
102283514Sarybchik# endif
103283514Sarybchik#endif /* EFSYS_OPT_HUNTINGTON */
104283514Sarybchik
105283514Sarybchik/* Support hardware loopback modes */
106283514Sarybchik#if EFSYS_OPT_LOOPBACK
107293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
108293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
109293974Sarybchik#  error "LOOPBACK requires FALCON or SIENA or HUNTINGTON or MEDFORD"
110283514Sarybchik# endif
111283514Sarybchik#endif /* EFSYS_OPT_LOOPBACK */
112283514Sarybchik
113283514Sarybchik/* Support Falcon GMAC */
114283514Sarybchik#if EFSYS_OPT_MAC_FALCON_GMAC
115283514Sarybchik# if !EFSYS_OPT_FALCON
116283514Sarybchik#  error "MAC_FALCON_GMAC requires FALCON"
117283514Sarybchik# endif
118283514Sarybchik#endif /* EFSYS_OPT_MAC_FALCON_GMAC */
119283514Sarybchik
120283514Sarybchik/* Support Falcon XMAC */
121283514Sarybchik#if EFSYS_OPT_MAC_FALCON_XMAC
122283514Sarybchik# if !EFSYS_OPT_FALCON
123283514Sarybchik#  error "MAC_FALCON_XMAC requires FALCON"
124283514Sarybchik# endif
125283514Sarybchik#endif /* EFSYS_OPT_MAC_FALCON_XMAC */
126283514Sarybchik
127283514Sarybchik/* Support MAC statistics */
128283514Sarybchik#if EFSYS_OPT_MAC_STATS
129293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
130293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
131293974Sarybchik#  error "MAC_STATS requires FALCON or SIENA or HUNTINGTON or MEDFORD"
132283514Sarybchik# endif
133283514Sarybchik#endif /* EFSYS_OPT_MAC_STATS */
134283514Sarybchik
135283514Sarybchik/* Support management controller messages */
136283514Sarybchik#if EFSYS_OPT_MCDI
137293974Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
138293974Sarybchik#  error "MCDI requires SIENA or HUNTINGTON or MEDFORD"
139283514Sarybchik# endif
140283514Sarybchik#endif /* EFSYS_OPT_MCDI */
141283514Sarybchik
142293974Sarybchik#if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
143293974Sarybchik# if !EFSYS_OPT_MCDI
144293974Sarybchik#  error "SIENA or HUNTINGTON or MEDFORD requires MCDI"
145293974Sarybchik# endif
146283514Sarybchik#endif
147283514Sarybchik
148293939Sarybchik/* Support MCDI logging */
149293939Sarybchik#if EFSYS_OPT_MCDI_LOGGING
150293939Sarybchik# if !EFSYS_OPT_MCDI
151293939Sarybchik#  error "MCDI_LOGGING requires MCDI"
152293939Sarybchik# endif
153293939Sarybchik#endif /* EFSYS_OPT_MCDI_LOGGING */
154293939Sarybchik
155293958Sarybchik/* Support MCDI proxy authorization */
156293958Sarybchik#if EFSYS_OPT_MCDI_PROXY_AUTH
157293958Sarybchik# if !EFSYS_OPT_MCDI
158293958Sarybchik#  error "MCDI_PROXY_AUTH requires MCDI"
159293958Sarybchik# endif
160293958Sarybchik#endif /* EFSYS_OPT_MCDI_PROXY_AUTH */
161293958Sarybchik
162283514Sarybchik/* Support LM87 monitor */
163283514Sarybchik#if EFSYS_OPT_MON_LM87
164283514Sarybchik# if !EFSYS_OPT_FALCON
165283514Sarybchik#  error "MON_LM87 requires FALCON"
166283514Sarybchik# endif
167283514Sarybchik#endif /* EFSYS_OPT_MON_LM87 */
168283514Sarybchik
169283514Sarybchik/* Support MAX6647 monitor */
170283514Sarybchik#if EFSYS_OPT_MON_MAX6647
171283514Sarybchik# if !EFSYS_OPT_FALCON
172283514Sarybchik#  error "MON_MAX6647 requires FALCON"
173283514Sarybchik# endif
174283514Sarybchik#endif /* EFSYS_OPT_MON_MAX6647 */
175283514Sarybchik
176283514Sarybchik/* Support null monitor */
177283514Sarybchik#if EFSYS_OPT_MON_NULL
178283514Sarybchik# if !EFSYS_OPT_FALCON
179283514Sarybchik#  error "MON_NULL requires FALCON"
180283514Sarybchik# endif
181283514Sarybchik#endif /* EFSYS_OPT_MON_NULL */
182283514Sarybchik
183293999Sarybchik/* Obsolete option */
184283514Sarybchik#ifdef EFSYS_OPT_MON_SIENA
185293999Sarybchik#  error "MON_SIENA is obsolete (replaced by MON_MCDI)."
186283514Sarybchik#endif /* EFSYS_OPT_MON_SIENA*/
187283514Sarybchik
188293999Sarybchik/* Obsolete option */
189283514Sarybchik#ifdef EFSYS_OPT_MON_HUNTINGTON
190293999Sarybchik#  error "MON_HUNTINGTON is obsolete (replaced by MON_MCDI)."
191283514Sarybchik#endif /* EFSYS_OPT_MON_HUNTINGTON*/
192283514Sarybchik
193283514Sarybchik/* Support monitor statistics (voltage/temperature) */
194283514Sarybchik#if EFSYS_OPT_MON_STATS
195293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
196293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
197293974Sarybchik#  error "MON_STATS requires FALCON or SIENA or HUNTINGTON or MEDFORD"
198283514Sarybchik# endif
199283514Sarybchik#endif /* EFSYS_OPT_MON_STATS */
200283514Sarybchik
201283514Sarybchik/* Support Monitor via mcdi */
202283514Sarybchik#if EFSYS_OPT_MON_MCDI
203293974Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
204293974Sarybchik#  error "MON_MCDI requires SIENA or HUNTINGTON or MEDFORD"
205283514Sarybchik# endif
206283514Sarybchik#endif /* EFSYS_OPT_MON_MCDI*/
207283514Sarybchik
208283514Sarybchik/* Support printable names for statistics */
209283514Sarybchik#if EFSYS_OPT_NAMES
210283514Sarybchik# if !(EFSYS_OPT_LOOPBACK || EFSYS_OPT_MAC_STATS || EFSYS_OPT_MCDI || \
211283514Sarybchik	EFSYS_MON_STATS || EFSYS_OPT_PHY_PROPS || EFSYS_OPT_PHY_STATS || \
212283514Sarybchik	EFSYS_OPT_QSTATS)
213283514Sarybchik#  error "NAMES requires LOOPBACK or xxxSTATS or MCDI or PHY_PROPS"
214283514Sarybchik# endif
215283514Sarybchik#endif /* EFSYS_OPT_NAMES */
216283514Sarybchik
217283514Sarybchik/* Support non volatile configuration */
218283514Sarybchik#if EFSYS_OPT_NVRAM
219293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
220293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
221293974Sarybchik#  error "NVRAM requires FALCON or SIENA or HUNTINGTON or MEDFORD"
222283514Sarybchik# endif
223283514Sarybchik#endif /* EFSYS_OPT_NVRAM */
224283514Sarybchik
225283514Sarybchik/* Support Falcon bootrom */
226283514Sarybchik#if EFSYS_OPT_NVRAM_FALCON_BOOTROM
227283514Sarybchik# if !EFSYS_OPT_NVRAM
228283514Sarybchik#  error "NVRAM_FALCON_BOOTROM requires NVRAM"
229283514Sarybchik# endif
230283514Sarybchik# if !EFSYS_OPT_FALCON
231283514Sarybchik#  error "NVRAM_FALCON_BOOTROM requires FALCON"
232283514Sarybchik# endif
233283514Sarybchik#endif /* EFSYS_OPT_NVRAM_FALCON_BOOTROM */
234283514Sarybchik
235283514Sarybchik/* Support NVRAM config for SFT9001 */
236283514Sarybchik#if EFSYS_OPT_NVRAM_SFT9001
237283514Sarybchik# if !EFSYS_OPT_NVRAM
238283514Sarybchik#  error "NVRAM_SFT9001 requires NVRAM"
239283514Sarybchik# endif
240283514Sarybchik# if !EFSYS_OPT_FALCON
241283514Sarybchik#  error "NVRAM_SFT9001 requires FALCON"
242283514Sarybchik# endif
243283514Sarybchik#endif /* EFSYS_OPT_NVRAM_SFT9001 */
244283514Sarybchik
245283514Sarybchik/* Support NVRAM config for SFX7101 */
246283514Sarybchik#if EFSYS_OPT_NVRAM_SFX7101
247283514Sarybchik# if !EFSYS_OPT_NVRAM
248283514Sarybchik#  error "NVRAM_SFX7101 requires NVRAM"
249283514Sarybchik# endif
250283514Sarybchik# if !EFSYS_OPT_FALCON
251283514Sarybchik#  error "NVRAM_SFX7101 requires FALCON"
252283514Sarybchik# endif
253283514Sarybchik#endif /* EFSYS_OPT_NVRAM_SFX7101 */
254283514Sarybchik
255283514Sarybchik/* Support PCIe interface tuning */
256283514Sarybchik#if EFSYS_OPT_PCIE_TUNE
257283514Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA)
258283514Sarybchik#  error "PCIE_TUNE requires FALCON or SIENA"
259283514Sarybchik# endif
260283514Sarybchik#endif /* EFSYS_OPT_PCIE_TUNE */
261283514Sarybchik
262293999Sarybchik/* Obsolete option */
263283514Sarybchik#if EFSYS_OPT_PHY_BIST
264293999Sarybchik#  error "PHY_BIST is obsolete (replaced by BIST)."
265283514Sarybchik#endif /* EFSYS_OPT_PHY_BIST */
266283514Sarybchik
267283514Sarybchik/* Support PHY flags */
268283514Sarybchik#if EFSYS_OPT_PHY_FLAGS
269283514Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA)
270283514Sarybchik#  error "PHY_FLAGS requires FALCON or SIENA"
271283514Sarybchik# endif
272283514Sarybchik#endif /* EFSYS_OPT_PHY_FLAGS */
273283514Sarybchik
274283514Sarybchik/* Support for PHY LED control */
275283514Sarybchik#if EFSYS_OPT_PHY_LED_CONTROL
276283514Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA)
277283514Sarybchik#  error "PHY_LED_CONTROL requires FALCON or SIENA"
278283514Sarybchik# endif
279283514Sarybchik#endif /* EFSYS_OPT_PHY_LED_CONTROL */
280283514Sarybchik
281283514Sarybchik/* Support NULL PHY */
282283514Sarybchik#if EFSYS_OPT_PHY_NULL
283283514Sarybchik# if !EFSYS_OPT_FALCON
284283514Sarybchik#  error "PHY_NULL requires FALCON"
285283514Sarybchik# endif
286283514Sarybchik#endif /* EFSYS_OPT_PHY_NULL */
287283514Sarybchik
288283514Sarybchik/* Obsolete option */
289283514Sarybchik#ifdef EFSYS_OPT_PHY_PM8358
290283514Sarybchik# error "EFSYS_OPT_PHY_PM8358 is obsolete and is not supported."
291283514Sarybchik#endif
292283514Sarybchik
293283514Sarybchik/* Support PHY properties */
294283514Sarybchik#if EFSYS_OPT_PHY_PROPS
295283514Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA)
296283514Sarybchik#  error "PHY_PROPS requires FALCON or SIENA"
297283514Sarybchik# endif
298283514Sarybchik#endif /* EFSYS_OPT_PHY_PROPS */
299283514Sarybchik
300283514Sarybchik/* Support QT2022C2 PHY */
301283514Sarybchik#if EFSYS_OPT_PHY_QT2022C2
302283514Sarybchik# if !EFSYS_OPT_FALCON
303283514Sarybchik#  error "PHY_QT2022C2 requires FALCON"
304283514Sarybchik# endif
305283514Sarybchik#endif /* EFSYS_OPT_PHY_QT2022C2 */
306283514Sarybchik
307283514Sarybchik/* Support QT2025C PHY (Wakefield NIC) */
308283514Sarybchik#if EFSYS_OPT_PHY_QT2025C
309283514Sarybchik# if !EFSYS_OPT_FALCON
310283514Sarybchik#  error "PHY_QT2025C requires FALCON"
311283514Sarybchik# endif
312283514Sarybchik#endif /* EFSYS_OPT_PHY_QT2025C */
313283514Sarybchik
314283514Sarybchik/* Support SFT9001 PHY (Starbolt NIC) */
315283514Sarybchik#if EFSYS_OPT_PHY_SFT9001
316283514Sarybchik# if !EFSYS_OPT_FALCON
317283514Sarybchik#  error "PHY_SFT9001 requires FALCON"
318283514Sarybchik# endif
319283514Sarybchik#endif /* EFSYS_OPT_PHY_SFT9001 */
320283514Sarybchik
321283514Sarybchik/* Support SFX7101 PHY (SFE4001 NIC) */
322283514Sarybchik#if EFSYS_OPT_PHY_SFX7101
323283514Sarybchik# if !EFSYS_OPT_FALCON
324283514Sarybchik#  error "PHY_SFX7101 requires FALCON"
325283514Sarybchik# endif
326283514Sarybchik#endif /* EFSYS_OPT_PHY_SFX7101 */
327283514Sarybchik
328283514Sarybchik/* Support PHY statistics */
329283514Sarybchik#if EFSYS_OPT_PHY_STATS
330283514Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA)
331283514Sarybchik#  error "PHY_STATS requires FALCON or SIENA"
332283514Sarybchik# endif
333283514Sarybchik#endif /* EFSYS_OPT_PHY_STATS */
334283514Sarybchik
335283514Sarybchik/* Support TXC43128 PHY (SFE4003 NIC) */
336283514Sarybchik#if EFSYS_OPT_PHY_TXC43128
337283514Sarybchik# if !EFSYS_OPT_FALCON
338283514Sarybchik#  error "PHY_TXC43128 requires FALCON"
339283514Sarybchik# endif
340283514Sarybchik#endif /* EFSYS_OPT_PHY_TXC43128 */
341283514Sarybchik
342283514Sarybchik/* Support EVQ/RXQ/TXQ statistics */
343283514Sarybchik#if EFSYS_OPT_QSTATS
344293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
345293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
346293974Sarybchik#  error "QSTATS requires FALCON or SIENA or HUNTINGTON or MEDFORD"
347283514Sarybchik# endif
348283514Sarybchik#endif /* EFSYS_OPT_QSTATS */
349283514Sarybchik
350294007Sarybchik/* Obsolete option */
351294007Sarybchik#ifdef EFSYS_OPT_RX_HDR_SPLIT
352294007Sarybchik# error "RX_HDR_SPLIT is obsolete and is not supported"
353283514Sarybchik#endif /* EFSYS_OPT_RX_HDR_SPLIT */
354283514Sarybchik
355283514Sarybchik/* Support receive scaling (RSS) */
356283514Sarybchik#if EFSYS_OPT_RX_SCALE
357293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
358293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
359293974Sarybchik#  error "RX_SCALE requires FALCON or SIENA or HUNTINGTON or MEDFORD"
360283514Sarybchik# endif
361283514Sarybchik#endif /* EFSYS_OPT_RX_SCALE */
362283514Sarybchik
363283514Sarybchik/* Support receive scatter DMA */
364283514Sarybchik#if EFSYS_OPT_RX_SCATTER
365293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
366293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
367293974Sarybchik#  error "RX_SCATTER requires FALCON or SIENA or HUNTINGTON or MEDFORD"
368283514Sarybchik# endif
369283514Sarybchik#endif /* EFSYS_OPT_RX_SCATTER */
370283514Sarybchik
371283514Sarybchik/* Obsolete option */
372283514Sarybchik#ifdef EFSYS_OPT_STAT_NAME
373293999Sarybchik# error "STAT_NAME is obsolete (replaced by NAMES)."
374283514Sarybchik#endif
375283514Sarybchik
376283514Sarybchik/* Support PCI Vital Product Data (VPD) */
377283514Sarybchik#if EFSYS_OPT_VPD
378293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
379293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
380293974Sarybchik#  error "VPD requires FALCON or SIENA or HUNTINGTON or MEDFORD"
381283514Sarybchik# endif
382283514Sarybchik#endif /* EFSYS_OPT_VPD */
383283514Sarybchik
384283514Sarybchik/* Support Wake on LAN */
385283514Sarybchik#if EFSYS_OPT_WOL
386283514Sarybchik# if !EFSYS_OPT_SIENA
387283514Sarybchik#  error "WOL requires SIENA"
388283514Sarybchik# endif
389283514Sarybchik#endif /* EFSYS_OPT_WOL */
390283514Sarybchik
391293992Sarybchik/* Obsolete option */
392293992Sarybchik#ifdef EFSYS_OPT_MCAST_FILTER_LIST
393293999Sarybchik#  error "MCAST_FILTER_LIST is obsolete and is not supported"
394283514Sarybchik#endif /* EFSYS_OPT_MCAST_FILTER_LIST */
395283514Sarybchik
396283514Sarybchik/* Support BIST */
397283514Sarybchik#if EFSYS_OPT_BIST
398293974Sarybchik# if !(EFSYS_OPT_FALCON || EFSYS_OPT_SIENA || \
399293974Sarybchik	EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
400293974Sarybchik#  error "BIST requires FALCON or SIENA or HUNTINGTON or MEDFORD"
401283514Sarybchik# endif
402283514Sarybchik#endif /* EFSYS_OPT_BIST */
403283514Sarybchik
404294386Sarybchik/* Support MCDI licensing API */
405294386Sarybchik#if EFSYS_OPT_LICENSING
406294386Sarybchik# if !EFSYS_OPT_MCDI
407294386Sarybchik#  error "LICENSING requires MCDI"
408294386Sarybchik# endif
409294386Sarybchik# if !EFSYS_HAS_UINT64
410294386Sarybchik#  error "LICENSING requires UINT64"
411294386Sarybchik# endif
412294386Sarybchik#endif /* EFSYS_OPT_LICENSING */
413294386Sarybchik
414294386Sarybchik
415283514Sarybchik#endif /* _SYS_EFX_CHECK_H */
416