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