1*49ef7e06SGarrett D'Amore /*
2*49ef7e06SGarrett D'Amore  * Copyright (c) 2012-2015 Solarflare Communications Inc.
3*49ef7e06SGarrett D'Amore  * All rights reserved.
4*49ef7e06SGarrett D'Amore  *
5*49ef7e06SGarrett D'Amore  * Redistribution and use in source and binary forms, with or without
6*49ef7e06SGarrett D'Amore  * modification, are permitted provided that the following conditions are met:
7*49ef7e06SGarrett D'Amore  *
8*49ef7e06SGarrett D'Amore  * 1. Redistributions of source code must retain the above copyright notice,
9*49ef7e06SGarrett D'Amore  *    this list of conditions and the following disclaimer.
10*49ef7e06SGarrett D'Amore  * 2. Redistributions in binary form must reproduce the above copyright notice,
11*49ef7e06SGarrett D'Amore  *    this list of conditions and the following disclaimer in the documentation
12*49ef7e06SGarrett D'Amore  *    and/or other materials provided with the distribution.
13*49ef7e06SGarrett D'Amore  *
14*49ef7e06SGarrett D'Amore  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15*49ef7e06SGarrett D'Amore  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16*49ef7e06SGarrett D'Amore  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17*49ef7e06SGarrett D'Amore  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18*49ef7e06SGarrett D'Amore  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19*49ef7e06SGarrett D'Amore  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20*49ef7e06SGarrett D'Amore  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21*49ef7e06SGarrett D'Amore  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22*49ef7e06SGarrett D'Amore  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23*49ef7e06SGarrett D'Amore  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
24*49ef7e06SGarrett D'Amore  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25*49ef7e06SGarrett D'Amore  *
26*49ef7e06SGarrett D'Amore  * The views and conclusions contained in the software and documentation are
27*49ef7e06SGarrett D'Amore  * those of the authors and should not be interpreted as representing official
28*49ef7e06SGarrett D'Amore  * policies, either expressed or implied, of the FreeBSD Project.
29*49ef7e06SGarrett D'Amore  */
30*49ef7e06SGarrett D'Amore 
31*49ef7e06SGarrett D'Amore #ifndef _SYS_EFX_CHECK_H
32*49ef7e06SGarrett D'Amore #define	_SYS_EFX_CHECK_H
33*49ef7e06SGarrett D'Amore 
34*49ef7e06SGarrett D'Amore #include "efsys.h"
35*49ef7e06SGarrett D'Amore 
36*49ef7e06SGarrett D'Amore /*
37*49ef7e06SGarrett D'Amore  * Check that the efsys.h header in client code has a valid combination of
38*49ef7e06SGarrett D'Amore  * EFSYS_OPT_xxx options.
39*49ef7e06SGarrett D'Amore  *
40*49ef7e06SGarrett D'Amore  * NOTE: Keep checks for obsolete options here to ensure that they are removed
41*49ef7e06SGarrett D'Amore  * from client code (and do not reappear in merges from other branches).
42*49ef7e06SGarrett D'Amore  */
43*49ef7e06SGarrett D'Amore 
44*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_FALCON
45*49ef7e06SGarrett D'Amore # error "FALCON is obsolete and is not supported."
46*49ef7e06SGarrett D'Amore #endif
47*49ef7e06SGarrett D'Amore 
48*49ef7e06SGarrett D'Amore /* Support NVRAM based boot config */
49*49ef7e06SGarrett D'Amore #if EFSYS_OPT_BOOTCFG
50*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_NVRAM
51*49ef7e06SGarrett D'Amore #  error "BOOTCFG requires NVRAM"
52*49ef7e06SGarrett D'Amore # endif
53*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_BOOTCFG */
54*49ef7e06SGarrett D'Amore 
55*49ef7e06SGarrett D'Amore /* Verify chip implements accessed registers */
56*49ef7e06SGarrett D'Amore #if EFSYS_OPT_CHECK_REG
57*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
58*49ef7e06SGarrett D'Amore #  error "CHECK_REG requires SIENA or HUNTINGTON or MEDFORD"
59*49ef7e06SGarrett D'Amore # endif
60*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_CHECK_REG */
61*49ef7e06SGarrett D'Amore 
62*49ef7e06SGarrett D'Amore /* Decode fatal errors */
63*49ef7e06SGarrett D'Amore #if EFSYS_OPT_DECODE_INTR_FATAL
64*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_SIENA
65*49ef7e06SGarrett D'Amore #  error "INTR_FATAL requires SIENA"
66*49ef7e06SGarrett D'Amore # endif
67*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_DECODE_INTR_FATAL */
68*49ef7e06SGarrett D'Amore 
69*49ef7e06SGarrett D'Amore /* Support diagnostic hardware tests */
70*49ef7e06SGarrett D'Amore #if EFSYS_OPT_DIAG
71*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
72*49ef7e06SGarrett D'Amore #  error "DIAG requires SIENA or HUNTINGTON or MEDFORD"
73*49ef7e06SGarrett D'Amore # endif
74*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_DIAG */
75*49ef7e06SGarrett D'Amore 
76*49ef7e06SGarrett D'Amore /* Support optimized EVQ data access */
77*49ef7e06SGarrett D'Amore #if EFSYS_OPT_EV_PREFETCH
78*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
79*49ef7e06SGarrett D'Amore #  error "EV_PREFETCH requires SIENA or HUNTINGTON or MEDFORD"
80*49ef7e06SGarrett D'Amore # endif
81*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_EV_PREFETCH */
82*49ef7e06SGarrett D'Amore 
83*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE
84*49ef7e06SGarrett D'Amore # error "FALCON_NIC_CFG_OVERRIDE is obsolete and is not supported."
85*49ef7e06SGarrett D'Amore #endif
86*49ef7e06SGarrett D'Amore 
87*49ef7e06SGarrett D'Amore /* Support hardware packet filters */
88*49ef7e06SGarrett D'Amore #if EFSYS_OPT_FILTER
89*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
90*49ef7e06SGarrett D'Amore #  error "FILTER requires SIENA or HUNTINGTON or MEDFORD"
91*49ef7e06SGarrett D'Amore # endif
92*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_FILTER */
93*49ef7e06SGarrett D'Amore 
94*49ef7e06SGarrett D'Amore #if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
95*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_FILTER
96*49ef7e06SGarrett D'Amore #  error "HUNTINGTON or MEDFORD requires FILTER"
97*49ef7e06SGarrett D'Amore # endif
98*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_HUNTINGTON */
99*49ef7e06SGarrett D'Amore 
100*49ef7e06SGarrett D'Amore /* Support hardware loopback modes */
101*49ef7e06SGarrett D'Amore #if EFSYS_OPT_LOOPBACK
102*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
103*49ef7e06SGarrett D'Amore #  error "LOOPBACK requires SIENA or HUNTINGTON or MEDFORD"
104*49ef7e06SGarrett D'Amore # endif
105*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_LOOPBACK */
106*49ef7e06SGarrett D'Amore 
107*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MAC_FALCON_GMAC
108*49ef7e06SGarrett D'Amore # error "MAC_FALCON_GMAC is obsolete and is not supported."
109*49ef7e06SGarrett D'Amore #endif
110*49ef7e06SGarrett D'Amore 
111*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MAC_FALCON_XMAC
112*49ef7e06SGarrett D'Amore # error "MAC_FALCON_XMAC is obsolete and is not supported."
113*49ef7e06SGarrett D'Amore #endif
114*49ef7e06SGarrett D'Amore 
115*49ef7e06SGarrett D'Amore /* Support MAC statistics */
116*49ef7e06SGarrett D'Amore #if EFSYS_OPT_MAC_STATS
117*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
118*49ef7e06SGarrett D'Amore #  error "MAC_STATS requires SIENA or HUNTINGTON or MEDFORD"
119*49ef7e06SGarrett D'Amore # endif
120*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_MAC_STATS */
121*49ef7e06SGarrett D'Amore 
122*49ef7e06SGarrett D'Amore /* Support management controller messages */
123*49ef7e06SGarrett D'Amore #if EFSYS_OPT_MCDI
124*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
125*49ef7e06SGarrett D'Amore #  error "MCDI requires SIENA or HUNTINGTON or MEDFORD"
126*49ef7e06SGarrett D'Amore # endif
127*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_MCDI */
128*49ef7e06SGarrett D'Amore 
129*49ef7e06SGarrett D'Amore #if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
130*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_MCDI
131*49ef7e06SGarrett D'Amore #  error "SIENA or HUNTINGTON or MEDFORD requires MCDI"
132*49ef7e06SGarrett D'Amore # endif
133*49ef7e06SGarrett D'Amore #endif
134*49ef7e06SGarrett D'Amore 
135*49ef7e06SGarrett D'Amore /* Support MCDI logging */
136*49ef7e06SGarrett D'Amore #if EFSYS_OPT_MCDI_LOGGING
137*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_MCDI
138*49ef7e06SGarrett D'Amore #  error "MCDI_LOGGING requires MCDI"
139*49ef7e06SGarrett D'Amore # endif
140*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_MCDI_LOGGING */
141*49ef7e06SGarrett D'Amore 
142*49ef7e06SGarrett D'Amore /* Support MCDI proxy authorization */
143*49ef7e06SGarrett D'Amore #if EFSYS_OPT_MCDI_PROXY_AUTH
144*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_MCDI
145*49ef7e06SGarrett D'Amore #  error "MCDI_PROXY_AUTH requires MCDI"
146*49ef7e06SGarrett D'Amore # endif
147*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_MCDI_PROXY_AUTH */
148*49ef7e06SGarrett D'Amore 
149*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MON_LM87
150*49ef7e06SGarrett D'Amore # error "MON_LM87 is obsolete and is not supported."
151*49ef7e06SGarrett D'Amore #endif
152*49ef7e06SGarrett D'Amore 
153*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MON_MAX6647
154*49ef7e06SGarrett D'Amore # error "MON_MAX6647 is obsolete and is not supported."
155*49ef7e06SGarrett D'Amore #endif
156*49ef7e06SGarrett D'Amore 
157*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MON_NULL
158*49ef7e06SGarrett D'Amore # error "MON_NULL is obsolete and is not supported."
159*49ef7e06SGarrett D'Amore #endif
160*49ef7e06SGarrett D'Amore 
161*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MON_SIENA
162*49ef7e06SGarrett D'Amore #  error "MON_SIENA is obsolete (replaced by MON_MCDI)."
163*49ef7e06SGarrett D'Amore #endif
164*49ef7e06SGarrett D'Amore 
165*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MON_HUNTINGTON
166*49ef7e06SGarrett D'Amore #  error "MON_HUNTINGTON is obsolete (replaced by MON_MCDI)."
167*49ef7e06SGarrett D'Amore #endif
168*49ef7e06SGarrett D'Amore 
169*49ef7e06SGarrett D'Amore /* Support monitor statistics (voltage/temperature) */
170*49ef7e06SGarrett D'Amore #if EFSYS_OPT_MON_STATS
171*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
172*49ef7e06SGarrett D'Amore #  error "MON_STATS requires SIENA or HUNTINGTON or MEDFORD"
173*49ef7e06SGarrett D'Amore # endif
174*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_MON_STATS */
175*49ef7e06SGarrett D'Amore 
176*49ef7e06SGarrett D'Amore /* Support Monitor via mcdi */
177*49ef7e06SGarrett D'Amore #if EFSYS_OPT_MON_MCDI
178*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
179*49ef7e06SGarrett D'Amore #  error "MON_MCDI requires SIENA or HUNTINGTON or MEDFORD"
180*49ef7e06SGarrett D'Amore # endif
181*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_MON_MCDI*/
182*49ef7e06SGarrett D'Amore 
183*49ef7e06SGarrett D'Amore /* Support printable names for statistics */
184*49ef7e06SGarrett D'Amore #if EFSYS_OPT_NAMES
185*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_LOOPBACK || EFSYS_OPT_MAC_STATS || EFSYS_OPT_MCDI || \
186*49ef7e06SGarrett D'Amore 	EFSYS_MON_STATS || EFSYS_OPT_PHY_STATS || EFSYS_OPT_QSTATS)
187*49ef7e06SGarrett D'Amore #  error "NAMES requires LOOPBACK or xxxSTATS or MCDI"
188*49ef7e06SGarrett D'Amore # endif
189*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_NAMES */
190*49ef7e06SGarrett D'Amore 
191*49ef7e06SGarrett D'Amore /* Support non volatile configuration */
192*49ef7e06SGarrett D'Amore #if EFSYS_OPT_NVRAM
193*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
194*49ef7e06SGarrett D'Amore #  error "NVRAM requires SIENA or HUNTINGTON or MEDFORD"
195*49ef7e06SGarrett D'Amore # endif
196*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_NVRAM */
197*49ef7e06SGarrett D'Amore 
198*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_NVRAM_FALCON_BOOTROM
199*49ef7e06SGarrett D'Amore # error "NVRAM_FALCON_BOOTROM is obsolete and is not supported."
200*49ef7e06SGarrett D'Amore #endif
201*49ef7e06SGarrett D'Amore 
202*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_NVRAM_SFT9001
203*49ef7e06SGarrett D'Amore # error "NVRAM_SFT9001 is obsolete and is not supported."
204*49ef7e06SGarrett D'Amore #endif
205*49ef7e06SGarrett D'Amore 
206*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_NVRAM_SFX7101
207*49ef7e06SGarrett D'Amore # error "NVRAM_SFX7101 is obsolete and is not supported."
208*49ef7e06SGarrett D'Amore #endif
209*49ef7e06SGarrett D'Amore 
210*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PCIE_TUNE
211*49ef7e06SGarrett D'Amore # error "PCIE_TUNE is obsolete and is not supported."
212*49ef7e06SGarrett D'Amore #endif
213*49ef7e06SGarrett D'Amore 
214*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_BIST
215*49ef7e06SGarrett D'Amore # error "PHY_BIST is obsolete (replaced by BIST)."
216*49ef7e06SGarrett D'Amore #endif
217*49ef7e06SGarrett D'Amore 
218*49ef7e06SGarrett D'Amore /* Support PHY flags */
219*49ef7e06SGarrett D'Amore #if EFSYS_OPT_PHY_FLAGS
220*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_SIENA
221*49ef7e06SGarrett D'Amore #  error "PHY_FLAGS requires SIENA"
222*49ef7e06SGarrett D'Amore # endif
223*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_PHY_FLAGS */
224*49ef7e06SGarrett D'Amore 
225*49ef7e06SGarrett D'Amore /* Support for PHY LED control */
226*49ef7e06SGarrett D'Amore #if EFSYS_OPT_PHY_LED_CONTROL
227*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_SIENA
228*49ef7e06SGarrett D'Amore #  error "PHY_LED_CONTROL requires SIENA"
229*49ef7e06SGarrett D'Amore # endif
230*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_PHY_LED_CONTROL */
231*49ef7e06SGarrett D'Amore 
232*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_NULL
233*49ef7e06SGarrett D'Amore # error "PHY_NULL is obsolete and is not supported."
234*49ef7e06SGarrett D'Amore #endif
235*49ef7e06SGarrett D'Amore 
236*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_PM8358
237*49ef7e06SGarrett D'Amore # error "PHY_PM8358 is obsolete and is not supported."
238*49ef7e06SGarrett D'Amore #endif
239*49ef7e06SGarrett D'Amore 
240*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_PROPS
241*49ef7e06SGarrett D'Amore # error "PHY_PROPS is obsolete and is not supported."
242*49ef7e06SGarrett D'Amore #endif
243*49ef7e06SGarrett D'Amore 
244*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_QT2022C2
245*49ef7e06SGarrett D'Amore # error "PHY_QT2022C2 is obsolete and is not supported."
246*49ef7e06SGarrett D'Amore #endif
247*49ef7e06SGarrett D'Amore 
248*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_QT2025C
249*49ef7e06SGarrett D'Amore # error "PHY_QT2025C is obsolete and is not supported."
250*49ef7e06SGarrett D'Amore #endif
251*49ef7e06SGarrett D'Amore 
252*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_SFT9001
253*49ef7e06SGarrett D'Amore # error "PHY_SFT9001 is obsolete and is not supported."
254*49ef7e06SGarrett D'Amore #endif
255*49ef7e06SGarrett D'Amore 
256*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_SFX7101
257*49ef7e06SGarrett D'Amore # error "PHY_SFX7101 is obsolete and is not supported."
258*49ef7e06SGarrett D'Amore #endif
259*49ef7e06SGarrett D'Amore 
260*49ef7e06SGarrett D'Amore /* Support PHY statistics */
261*49ef7e06SGarrett D'Amore #if EFSYS_OPT_PHY_STATS
262*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_SIENA
263*49ef7e06SGarrett D'Amore #  error "PHY_STATS requires SIENA"
264*49ef7e06SGarrett D'Amore # endif
265*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_PHY_STATS */
266*49ef7e06SGarrett D'Amore 
267*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_PHY_TXC43128
268*49ef7e06SGarrett D'Amore # error "PHY_TXC43128 is obsolete and is not supported."
269*49ef7e06SGarrett D'Amore #endif
270*49ef7e06SGarrett D'Amore 
271*49ef7e06SGarrett D'Amore /* Support EVQ/RXQ/TXQ statistics */
272*49ef7e06SGarrett D'Amore #if EFSYS_OPT_QSTATS
273*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
274*49ef7e06SGarrett D'Amore #  error "QSTATS requires SIENA or HUNTINGTON or MEDFORD"
275*49ef7e06SGarrett D'Amore # endif
276*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_QSTATS */
277*49ef7e06SGarrett D'Amore 
278*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_RX_HDR_SPLIT
279*49ef7e06SGarrett D'Amore # error "RX_HDR_SPLIT is obsolete and is not supported"
280*49ef7e06SGarrett D'Amore #endif
281*49ef7e06SGarrett D'Amore 
282*49ef7e06SGarrett D'Amore /* Support receive scaling (RSS) */
283*49ef7e06SGarrett D'Amore #if EFSYS_OPT_RX_SCALE
284*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
285*49ef7e06SGarrett D'Amore #  error "RX_SCALE requires SIENA or HUNTINGTON or MEDFORD"
286*49ef7e06SGarrett D'Amore # endif
287*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_RX_SCALE */
288*49ef7e06SGarrett D'Amore 
289*49ef7e06SGarrett D'Amore /* Support receive scatter DMA */
290*49ef7e06SGarrett D'Amore #if EFSYS_OPT_RX_SCATTER
291*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
292*49ef7e06SGarrett D'Amore #  error "RX_SCATTER requires SIENA or HUNTINGTON or MEDFORD"
293*49ef7e06SGarrett D'Amore # endif
294*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_RX_SCATTER */
295*49ef7e06SGarrett D'Amore 
296*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_STAT_NAME
297*49ef7e06SGarrett D'Amore # error "STAT_NAME is obsolete (replaced by NAMES)."
298*49ef7e06SGarrett D'Amore #endif
299*49ef7e06SGarrett D'Amore 
300*49ef7e06SGarrett D'Amore /* Support PCI Vital Product Data (VPD) */
301*49ef7e06SGarrett D'Amore #if EFSYS_OPT_VPD
302*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
303*49ef7e06SGarrett D'Amore #  error "VPD requires SIENA or HUNTINGTON or MEDFORD"
304*49ef7e06SGarrett D'Amore # endif
305*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_VPD */
306*49ef7e06SGarrett D'Amore 
307*49ef7e06SGarrett D'Amore /* Support Wake on LAN */
308*49ef7e06SGarrett D'Amore #if EFSYS_OPT_WOL
309*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_SIENA
310*49ef7e06SGarrett D'Amore #  error "WOL requires SIENA"
311*49ef7e06SGarrett D'Amore # endif
312*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_WOL */
313*49ef7e06SGarrett D'Amore 
314*49ef7e06SGarrett D'Amore #ifdef EFSYS_OPT_MCAST_FILTER_LIST
315*49ef7e06SGarrett D'Amore #  error "MCAST_FILTER_LIST is obsolete and is not supported"
316*49ef7e06SGarrett D'Amore #endif
317*49ef7e06SGarrett D'Amore 
318*49ef7e06SGarrett D'Amore /* Support BIST */
319*49ef7e06SGarrett D'Amore #if EFSYS_OPT_BIST
320*49ef7e06SGarrett D'Amore # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
321*49ef7e06SGarrett D'Amore #  error "BIST requires SIENA or HUNTINGTON or MEDFORD"
322*49ef7e06SGarrett D'Amore # endif
323*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_BIST */
324*49ef7e06SGarrett D'Amore 
325*49ef7e06SGarrett D'Amore /* Support MCDI licensing API */
326*49ef7e06SGarrett D'Amore #if EFSYS_OPT_LICENSING
327*49ef7e06SGarrett D'Amore # if !EFSYS_OPT_MCDI
328*49ef7e06SGarrett D'Amore #  error "LICENSING requires MCDI"
329*49ef7e06SGarrett D'Amore # endif
330*49ef7e06SGarrett D'Amore # if !EFSYS_HAS_UINT64
331*49ef7e06SGarrett D'Amore #  error "LICENSING requires UINT64"
332*49ef7e06SGarrett D'Amore # endif
333*49ef7e06SGarrett D'Amore #endif /* EFSYS_OPT_LICENSING */
334*49ef7e06SGarrett D'Amore 
335*49ef7e06SGarrett D'Amore 
336*49ef7e06SGarrett D'Amore #endif /* _SYS_EFX_CHECK_H */
337