efx_check.h revision 299320
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: head/sys/dev/sfxge/common/efx_check.h 299320 2016-05-10 07:01:06Z 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
46299253Sarybchik#ifdef EFSYS_OPT_FALCON
47299253Sarybchik# error "FALCON is obsolete and is not supported."
48299253Sarybchik#else
49299253Sarybchik/* FIXME: remove this after Falcon support has been removed */
50299253Sarybchik#define	EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE	(0)
51299253Sarybchik
52299253Sarybchik#define	EFSYS_OPT_MAC_FALCON_GMAC		(0)
53299253Sarybchik#define	EFSYS_OPT_MAC_FALCON_XMAC		(0)
54299253Sarybchik
55299253Sarybchik#define	EFSYS_OPT_MON_LM87			(0)
56299253Sarybchik#define	EFSYS_OPT_MON_MAX6647			(0)
57299253Sarybchik#define	EFSYS_OPT_MON_NULL			(0)
58299253Sarybchik
59299253Sarybchik#define	EFSYS_OPT_NVRAM_FALCON_BOOTROM		(0)
60299253Sarybchik#define	EFSYS_OPT_NVRAM_SFT9001			(0)
61299253Sarybchik#define	EFSYS_OPT_NVRAM_SFX7101			(0)
62299253Sarybchik
63299253Sarybchik#define	EFSYS_OPT_PHY_NULL			(0)
64299253Sarybchik#define	EFSYS_OPT_PHY_QT2022C2			(0)
65299253Sarybchik#define	EFSYS_OPT_PHY_QT2025C			(0)
66299253Sarybchik#define	EFSYS_OPT_PHY_SFT9001			(0)
67299253Sarybchik#define	EFSYS_OPT_PHY_SFX7101			(0)
68299253Sarybchik#define	EFSYS_OPT_PHY_TXC43128			(0)
69299253Sarybchik#endif
70299253Sarybchik
71283514Sarybchik/* Support NVRAM based boot config */
72283514Sarybchik#if EFSYS_OPT_BOOTCFG
73283514Sarybchik# if !EFSYS_OPT_NVRAM
74283514Sarybchik#  error "BOOTCFG requires NVRAM"
75283514Sarybchik# endif
76283514Sarybchik#endif /* EFSYS_OPT_BOOTCFG */
77283514Sarybchik
78283514Sarybchik/* Verify chip implements accessed registers */
79283514Sarybchik#if EFSYS_OPT_CHECK_REG
80299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
81299320Sarybchik#  error "CHECK_REG requires SIENA or HUNTINGTON or MEDFORD"
82283514Sarybchik# endif
83283514Sarybchik#endif /* EFSYS_OPT_CHECK_REG */
84283514Sarybchik
85283514Sarybchik/* Decode fatal errors */
86283514Sarybchik#if EFSYS_OPT_DECODE_INTR_FATAL
87299320Sarybchik# if !EFSYS_OPT_SIENA
88299320Sarybchik#  error "INTR_FATAL requires SIENA"
89283514Sarybchik# endif
90283514Sarybchik#endif /* EFSYS_OPT_DECODE_INTR_FATAL */
91283514Sarybchik
92283514Sarybchik/* Support diagnostic hardware tests */
93283514Sarybchik#if EFSYS_OPT_DIAG
94299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
95299320Sarybchik#  error "DIAG requires SIENA or HUNTINGTON or MEDFORD"
96283514Sarybchik# endif
97283514Sarybchik#endif /* EFSYS_OPT_DIAG */
98283514Sarybchik
99283514Sarybchik/* Support optimized EVQ data access */
100283514Sarybchik#if EFSYS_OPT_EV_PREFETCH
101299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
102299320Sarybchik#  error "EV_PREFETCH requires SIENA or HUNTINGTON or MEDFORD"
103283514Sarybchik# endif
104283514Sarybchik#endif /* EFSYS_OPT_EV_PREFETCH */
105283514Sarybchik
106283514Sarybchik/* Support overriding the NVRAM and VPD configuration */
107283514Sarybchik#if EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE
108283514Sarybchik# if !EFSYS_OPT_FALCON
109283514Sarybchik#  error "FALCON_NIC_CFG_OVERRIDE requires FALCON"
110283514Sarybchik# endif
111283514Sarybchik#endif /* EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE */
112283514Sarybchik
113283514Sarybchik/* Support hardware packet filters */
114283514Sarybchik#if EFSYS_OPT_FILTER
115299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
116299320Sarybchik#  error "FILTER requires SIENA or HUNTINGTON or MEDFORD"
117283514Sarybchik# endif
118283514Sarybchik#endif /* EFSYS_OPT_FILTER */
119283514Sarybchik
120293730Sarybchik#if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
121283514Sarybchik# if !EFSYS_OPT_FILTER
122293730Sarybchik#  error "HUNTINGTON or MEDFORD requires FILTER"
123283514Sarybchik# endif
124283514Sarybchik#endif /* EFSYS_OPT_HUNTINGTON */
125283514Sarybchik
126283514Sarybchik/* Support hardware loopback modes */
127283514Sarybchik#if EFSYS_OPT_LOOPBACK
128299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
129299320Sarybchik#  error "LOOPBACK requires SIENA or HUNTINGTON or MEDFORD"
130283514Sarybchik# endif
131283514Sarybchik#endif /* EFSYS_OPT_LOOPBACK */
132283514Sarybchik
133283514Sarybchik/* Support Falcon GMAC */
134283514Sarybchik#if EFSYS_OPT_MAC_FALCON_GMAC
135283514Sarybchik# if !EFSYS_OPT_FALCON
136283514Sarybchik#  error "MAC_FALCON_GMAC requires FALCON"
137283514Sarybchik# endif
138283514Sarybchik#endif /* EFSYS_OPT_MAC_FALCON_GMAC */
139283514Sarybchik
140283514Sarybchik/* Support Falcon XMAC */
141283514Sarybchik#if EFSYS_OPT_MAC_FALCON_XMAC
142283514Sarybchik# if !EFSYS_OPT_FALCON
143283514Sarybchik#  error "MAC_FALCON_XMAC requires FALCON"
144283514Sarybchik# endif
145283514Sarybchik#endif /* EFSYS_OPT_MAC_FALCON_XMAC */
146283514Sarybchik
147283514Sarybchik/* Support MAC statistics */
148283514Sarybchik#if EFSYS_OPT_MAC_STATS
149299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
150299320Sarybchik#  error "MAC_STATS requires SIENA or HUNTINGTON or MEDFORD"
151283514Sarybchik# endif
152283514Sarybchik#endif /* EFSYS_OPT_MAC_STATS */
153283514Sarybchik
154283514Sarybchik/* Support management controller messages */
155283514Sarybchik#if EFSYS_OPT_MCDI
156293730Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
157293730Sarybchik#  error "MCDI requires SIENA or HUNTINGTON or MEDFORD"
158283514Sarybchik# endif
159283514Sarybchik#endif /* EFSYS_OPT_MCDI */
160283514Sarybchik
161293730Sarybchik#if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
162293730Sarybchik# if !EFSYS_OPT_MCDI
163293730Sarybchik#  error "SIENA or HUNTINGTON or MEDFORD requires MCDI"
164293730Sarybchik# endif
165283514Sarybchik#endif
166283514Sarybchik
167291677Sarybchik/* Support MCDI logging */
168291677Sarybchik#if EFSYS_OPT_MCDI_LOGGING
169291677Sarybchik# if !EFSYS_OPT_MCDI
170291677Sarybchik#  error "MCDI_LOGGING requires MCDI"
171291677Sarybchik# endif
172291677Sarybchik#endif /* EFSYS_OPT_MCDI_LOGGING */
173291677Sarybchik
174291927Sarybchik/* Support MCDI proxy authorization */
175291927Sarybchik#if EFSYS_OPT_MCDI_PROXY_AUTH
176291927Sarybchik# if !EFSYS_OPT_MCDI
177291927Sarybchik#  error "MCDI_PROXY_AUTH requires MCDI"
178291927Sarybchik# endif
179291927Sarybchik#endif /* EFSYS_OPT_MCDI_PROXY_AUTH */
180291927Sarybchik
181283514Sarybchik/* Support LM87 monitor */
182283514Sarybchik#if EFSYS_OPT_MON_LM87
183283514Sarybchik# if !EFSYS_OPT_FALCON
184283514Sarybchik#  error "MON_LM87 requires FALCON"
185283514Sarybchik# endif
186283514Sarybchik#endif /* EFSYS_OPT_MON_LM87 */
187283514Sarybchik
188283514Sarybchik/* Support MAX6647 monitor */
189283514Sarybchik#if EFSYS_OPT_MON_MAX6647
190283514Sarybchik# if !EFSYS_OPT_FALCON
191283514Sarybchik#  error "MON_MAX6647 requires FALCON"
192283514Sarybchik# endif
193283514Sarybchik#endif /* EFSYS_OPT_MON_MAX6647 */
194283514Sarybchik
195283514Sarybchik/* Support null monitor */
196283514Sarybchik#if EFSYS_OPT_MON_NULL
197283514Sarybchik# if !EFSYS_OPT_FALCON
198283514Sarybchik#  error "MON_NULL requires FALCON"
199283514Sarybchik# endif
200283514Sarybchik#endif /* EFSYS_OPT_MON_NULL */
201283514Sarybchik
202293767Sarybchik/* Obsolete option */
203283514Sarybchik#ifdef EFSYS_OPT_MON_SIENA
204293767Sarybchik#  error "MON_SIENA is obsolete (replaced by MON_MCDI)."
205283514Sarybchik#endif /* EFSYS_OPT_MON_SIENA*/
206283514Sarybchik
207293767Sarybchik/* Obsolete option */
208283514Sarybchik#ifdef EFSYS_OPT_MON_HUNTINGTON
209293767Sarybchik#  error "MON_HUNTINGTON is obsolete (replaced by MON_MCDI)."
210283514Sarybchik#endif /* EFSYS_OPT_MON_HUNTINGTON*/
211283514Sarybchik
212283514Sarybchik/* Support monitor statistics (voltage/temperature) */
213283514Sarybchik#if EFSYS_OPT_MON_STATS
214299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
215299320Sarybchik#  error "MON_STATS requires SIENA or HUNTINGTON or MEDFORD"
216283514Sarybchik# endif
217283514Sarybchik#endif /* EFSYS_OPT_MON_STATS */
218283514Sarybchik
219283514Sarybchik/* Support Monitor via mcdi */
220283514Sarybchik#if EFSYS_OPT_MON_MCDI
221293730Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
222293730Sarybchik#  error "MON_MCDI requires SIENA or HUNTINGTON or MEDFORD"
223283514Sarybchik# endif
224283514Sarybchik#endif /* EFSYS_OPT_MON_MCDI*/
225283514Sarybchik
226283514Sarybchik/* Support printable names for statistics */
227283514Sarybchik#if EFSYS_OPT_NAMES
228283514Sarybchik# if !(EFSYS_OPT_LOOPBACK || EFSYS_OPT_MAC_STATS || EFSYS_OPT_MCDI || \
229283514Sarybchik	EFSYS_MON_STATS || EFSYS_OPT_PHY_PROPS || EFSYS_OPT_PHY_STATS || \
230283514Sarybchik	EFSYS_OPT_QSTATS)
231283514Sarybchik#  error "NAMES requires LOOPBACK or xxxSTATS or MCDI or PHY_PROPS"
232283514Sarybchik# endif
233283514Sarybchik#endif /* EFSYS_OPT_NAMES */
234283514Sarybchik
235283514Sarybchik/* Support non volatile configuration */
236283514Sarybchik#if EFSYS_OPT_NVRAM
237299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
238299320Sarybchik#  error "NVRAM requires SIENA or HUNTINGTON or MEDFORD"
239283514Sarybchik# endif
240283514Sarybchik#endif /* EFSYS_OPT_NVRAM */
241283514Sarybchik
242283514Sarybchik/* Support Falcon bootrom */
243283514Sarybchik#if EFSYS_OPT_NVRAM_FALCON_BOOTROM
244283514Sarybchik# if !EFSYS_OPT_NVRAM
245283514Sarybchik#  error "NVRAM_FALCON_BOOTROM requires NVRAM"
246283514Sarybchik# endif
247283514Sarybchik# if !EFSYS_OPT_FALCON
248283514Sarybchik#  error "NVRAM_FALCON_BOOTROM requires FALCON"
249283514Sarybchik# endif
250283514Sarybchik#endif /* EFSYS_OPT_NVRAM_FALCON_BOOTROM */
251283514Sarybchik
252283514Sarybchik/* Support NVRAM config for SFT9001 */
253283514Sarybchik#if EFSYS_OPT_NVRAM_SFT9001
254283514Sarybchik# if !EFSYS_OPT_NVRAM
255283514Sarybchik#  error "NVRAM_SFT9001 requires NVRAM"
256283514Sarybchik# endif
257283514Sarybchik# if !EFSYS_OPT_FALCON
258283514Sarybchik#  error "NVRAM_SFT9001 requires FALCON"
259283514Sarybchik# endif
260283514Sarybchik#endif /* EFSYS_OPT_NVRAM_SFT9001 */
261283514Sarybchik
262283514Sarybchik/* Support NVRAM config for SFX7101 */
263283514Sarybchik#if EFSYS_OPT_NVRAM_SFX7101
264283514Sarybchik# if !EFSYS_OPT_NVRAM
265283514Sarybchik#  error "NVRAM_SFX7101 requires NVRAM"
266283514Sarybchik# endif
267283514Sarybchik# if !EFSYS_OPT_FALCON
268283514Sarybchik#  error "NVRAM_SFX7101 requires FALCON"
269283514Sarybchik# endif
270283514Sarybchik#endif /* EFSYS_OPT_NVRAM_SFX7101 */
271283514Sarybchik
272299254Sarybchik#ifdef EFSYS_OPT_PCIE_TUNE
273299254Sarybchik# error "PCIE_TUNE is obsolete and is not supported."
274299254Sarybchik#endif
275283514Sarybchik
276293767Sarybchik/* Obsolete option */
277299252Sarybchik#ifdef EFSYS_OPT_PHY_BIST
278299252Sarybchik# error "PHY_BIST is obsolete (replaced by BIST)."
279299252Sarybchik#endif
280283514Sarybchik
281283514Sarybchik/* Support PHY flags */
282283514Sarybchik#if EFSYS_OPT_PHY_FLAGS
283299320Sarybchik# if !EFSYS_OPT_SIENA
284299320Sarybchik#  error "PHY_FLAGS requires SIENA"
285283514Sarybchik# endif
286283514Sarybchik#endif /* EFSYS_OPT_PHY_FLAGS */
287283514Sarybchik
288283514Sarybchik/* Support for PHY LED control */
289283514Sarybchik#if EFSYS_OPT_PHY_LED_CONTROL
290299320Sarybchik# if !EFSYS_OPT_SIENA
291299320Sarybchik#  error "PHY_LED_CONTROL requires SIENA"
292283514Sarybchik# endif
293283514Sarybchik#endif /* EFSYS_OPT_PHY_LED_CONTROL */
294283514Sarybchik
295283514Sarybchik/* Support NULL PHY */
296283514Sarybchik#if EFSYS_OPT_PHY_NULL
297283514Sarybchik# if !EFSYS_OPT_FALCON
298283514Sarybchik#  error "PHY_NULL requires FALCON"
299283514Sarybchik# endif
300283514Sarybchik#endif /* EFSYS_OPT_PHY_NULL */
301283514Sarybchik
302283514Sarybchik/* Obsolete option */
303283514Sarybchik#ifdef EFSYS_OPT_PHY_PM8358
304283514Sarybchik# error "EFSYS_OPT_PHY_PM8358 is obsolete and is not supported."
305283514Sarybchik#endif
306283514Sarybchik
307283514Sarybchik/* Support PHY properties */
308283514Sarybchik#if EFSYS_OPT_PHY_PROPS
309299320Sarybchik# if !EFSYS_OPT_SIENA
310299320Sarybchik#  error "PHY_PROPS requires SIENA"
311283514Sarybchik# endif
312283514Sarybchik#endif /* EFSYS_OPT_PHY_PROPS */
313283514Sarybchik
314283514Sarybchik/* Support QT2022C2 PHY */
315283514Sarybchik#if EFSYS_OPT_PHY_QT2022C2
316283514Sarybchik# if !EFSYS_OPT_FALCON
317283514Sarybchik#  error "PHY_QT2022C2 requires FALCON"
318283514Sarybchik# endif
319283514Sarybchik#endif /* EFSYS_OPT_PHY_QT2022C2 */
320283514Sarybchik
321283514Sarybchik/* Support QT2025C PHY (Wakefield NIC) */
322283514Sarybchik#if EFSYS_OPT_PHY_QT2025C
323283514Sarybchik# if !EFSYS_OPT_FALCON
324283514Sarybchik#  error "PHY_QT2025C requires FALCON"
325283514Sarybchik# endif
326283514Sarybchik#endif /* EFSYS_OPT_PHY_QT2025C */
327283514Sarybchik
328283514Sarybchik/* Support SFT9001 PHY (Starbolt NIC) */
329283514Sarybchik#if EFSYS_OPT_PHY_SFT9001
330283514Sarybchik# if !EFSYS_OPT_FALCON
331283514Sarybchik#  error "PHY_SFT9001 requires FALCON"
332283514Sarybchik# endif
333283514Sarybchik#endif /* EFSYS_OPT_PHY_SFT9001 */
334283514Sarybchik
335283514Sarybchik/* Support SFX7101 PHY (SFE4001 NIC) */
336283514Sarybchik#if EFSYS_OPT_PHY_SFX7101
337283514Sarybchik# if !EFSYS_OPT_FALCON
338283514Sarybchik#  error "PHY_SFX7101 requires FALCON"
339283514Sarybchik# endif
340283514Sarybchik#endif /* EFSYS_OPT_PHY_SFX7101 */
341283514Sarybchik
342283514Sarybchik/* Support PHY statistics */
343283514Sarybchik#if EFSYS_OPT_PHY_STATS
344299320Sarybchik# if !EFSYS_OPT_SIENA
345299320Sarybchik#  error "PHY_STATS requires SIENA"
346283514Sarybchik# endif
347283514Sarybchik#endif /* EFSYS_OPT_PHY_STATS */
348283514Sarybchik
349283514Sarybchik/* Support TXC43128 PHY (SFE4003 NIC) */
350283514Sarybchik#if EFSYS_OPT_PHY_TXC43128
351283514Sarybchik# if !EFSYS_OPT_FALCON
352283514Sarybchik#  error "PHY_TXC43128 requires FALCON"
353283514Sarybchik# endif
354283514Sarybchik#endif /* EFSYS_OPT_PHY_TXC43128 */
355283514Sarybchik
356283514Sarybchik/* Support EVQ/RXQ/TXQ statistics */
357283514Sarybchik#if EFSYS_OPT_QSTATS
358299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
359299320Sarybchik#  error "QSTATS requires SIENA or HUNTINGTON or MEDFORD"
360283514Sarybchik# endif
361283514Sarybchik#endif /* EFSYS_OPT_QSTATS */
362283514Sarybchik
363293806Sarybchik/* Obsolete option */
364293806Sarybchik#ifdef EFSYS_OPT_RX_HDR_SPLIT
365293806Sarybchik# error "RX_HDR_SPLIT is obsolete and is not supported"
366283514Sarybchik#endif /* EFSYS_OPT_RX_HDR_SPLIT */
367283514Sarybchik
368283514Sarybchik/* Support receive scaling (RSS) */
369283514Sarybchik#if EFSYS_OPT_RX_SCALE
370299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
371299320Sarybchik#  error "RX_SCALE requires SIENA or HUNTINGTON or MEDFORD"
372283514Sarybchik# endif
373283514Sarybchik#endif /* EFSYS_OPT_RX_SCALE */
374283514Sarybchik
375283514Sarybchik/* Support receive scatter DMA */
376283514Sarybchik#if EFSYS_OPT_RX_SCATTER
377299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
378299320Sarybchik#  error "RX_SCATTER requires SIENA or HUNTINGTON or MEDFORD"
379283514Sarybchik# endif
380283514Sarybchik#endif /* EFSYS_OPT_RX_SCATTER */
381283514Sarybchik
382283514Sarybchik/* Obsolete option */
383283514Sarybchik#ifdef EFSYS_OPT_STAT_NAME
384293767Sarybchik# error "STAT_NAME is obsolete (replaced by NAMES)."
385283514Sarybchik#endif
386283514Sarybchik
387283514Sarybchik/* Support PCI Vital Product Data (VPD) */
388283514Sarybchik#if EFSYS_OPT_VPD
389299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
390299320Sarybchik#  error "VPD requires SIENA or HUNTINGTON or MEDFORD"
391283514Sarybchik# endif
392283514Sarybchik#endif /* EFSYS_OPT_VPD */
393283514Sarybchik
394283514Sarybchik/* Support Wake on LAN */
395283514Sarybchik#if EFSYS_OPT_WOL
396283514Sarybchik# if !EFSYS_OPT_SIENA
397283514Sarybchik#  error "WOL requires SIENA"
398283514Sarybchik# endif
399283514Sarybchik#endif /* EFSYS_OPT_WOL */
400283514Sarybchik
401293758Sarybchik/* Obsolete option */
402293758Sarybchik#ifdef EFSYS_OPT_MCAST_FILTER_LIST
403293767Sarybchik#  error "MCAST_FILTER_LIST is obsolete and is not supported"
404283514Sarybchik#endif /* EFSYS_OPT_MCAST_FILTER_LIST */
405283514Sarybchik
406283514Sarybchik/* Support BIST */
407283514Sarybchik#if EFSYS_OPT_BIST
408299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
409299320Sarybchik#  error "BIST requires SIENA or HUNTINGTON or MEDFORD"
410283514Sarybchik# endif
411283514Sarybchik#endif /* EFSYS_OPT_BIST */
412283514Sarybchik
413293901Sarybchik/* Support MCDI licensing API */
414293901Sarybchik#if EFSYS_OPT_LICENSING
415293901Sarybchik# if !EFSYS_OPT_MCDI
416293901Sarybchik#  error "LICENSING requires MCDI"
417293901Sarybchik# endif
418293901Sarybchik# if !EFSYS_HAS_UINT64
419293901Sarybchik#  error "LICENSING requires UINT64"
420293901Sarybchik# endif
421293901Sarybchik#endif /* EFSYS_OPT_LICENSING */
422293901Sarybchik
423293901Sarybchik
424283514Sarybchik#endif /* _SYS_EFX_CHECK_H */
425