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 || EFSYS_OPT_MEDFORD) 60 # error "CHECK_REG requires SIENA or HUNTINGTON or MEDFORD" 61 # endif 62 #endif /* EFSYS_OPT_CHECK_REG */ 63 64 /* Decode fatal errors */ 65 #if EFSYS_OPT_DECODE_INTR_FATAL 66 # if !EFSYS_OPT_SIENA 67 # error "INTR_FATAL requires SIENA" 68 # endif 69 #endif /* EFSYS_OPT_DECODE_INTR_FATAL */ 70 71 /* Support diagnostic hardware tests */ 72 #if EFSYS_OPT_DIAG 73 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 74 # error "DIAG requires SIENA or HUNTINGTON or MEDFORD" 75 # endif 76 #endif /* EFSYS_OPT_DIAG */ 77 78 /* Support optimized EVQ data access */ 79 #if EFSYS_OPT_EV_PREFETCH 80 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 81 # error "EV_PREFETCH requires SIENA or HUNTINGTON or MEDFORD" 82 # endif 83 #endif /* EFSYS_OPT_EV_PREFETCH */ 84 85 #ifdef EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE 86 # error "FALCON_NIC_CFG_OVERRIDE is obsolete and is not supported." 87 #endif 88 89 /* Support hardware packet filters */ 90 #if EFSYS_OPT_FILTER 91 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 92 # error "FILTER requires SIENA or HUNTINGTON or MEDFORD" 93 # endif 94 #endif /* EFSYS_OPT_FILTER */ 95 96 #if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 97 # if !EFSYS_OPT_FILTER 98 # error "HUNTINGTON or MEDFORD requires FILTER" 99 # endif 100 #endif /* EFSYS_OPT_HUNTINGTON */ 101 102 /* Support hardware loopback modes */ 103 #if EFSYS_OPT_LOOPBACK 104 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 105 # error "LOOPBACK requires SIENA or HUNTINGTON or MEDFORD" 106 # endif 107 #endif /* EFSYS_OPT_LOOPBACK */ 108 109 #ifdef EFSYS_OPT_MAC_FALCON_GMAC 110 # error "MAC_FALCON_GMAC is obsolete and is not supported." 111 #endif 112 113 #ifdef EFSYS_OPT_MAC_FALCON_XMAC 114 # error "MAC_FALCON_XMAC is obsolete and is not supported." 115 #endif 116 117 /* Support MAC statistics */ 118 #if EFSYS_OPT_MAC_STATS 119 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 120 # error "MAC_STATS requires SIENA or HUNTINGTON or MEDFORD" 121 # endif 122 #endif /* EFSYS_OPT_MAC_STATS */ 123 124 /* Support management controller messages */ 125 #if EFSYS_OPT_MCDI 126 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 127 # error "MCDI requires SIENA or HUNTINGTON or MEDFORD" 128 # endif 129 #endif /* EFSYS_OPT_MCDI */ 130 131 #if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 132 # if !EFSYS_OPT_MCDI 133 # error "SIENA or HUNTINGTON or MEDFORD requires MCDI" 134 # endif 135 #endif 136 137 /* Support MCDI logging */ 138 #if EFSYS_OPT_MCDI_LOGGING 139 # if !EFSYS_OPT_MCDI 140 # error "MCDI_LOGGING requires MCDI" 141 # endif 142 #endif /* EFSYS_OPT_MCDI_LOGGING */ 143 144 /* Support MCDI proxy authorization */ 145 #if EFSYS_OPT_MCDI_PROXY_AUTH 146 # if !EFSYS_OPT_MCDI 147 # error "MCDI_PROXY_AUTH requires MCDI" 148 # endif 149 #endif /* EFSYS_OPT_MCDI_PROXY_AUTH */ 150 151 #ifdef EFSYS_OPT_MON_LM87 152 # error "MON_LM87 is obsolete and is not supported." 153 #endif 154 155 #ifdef EFSYS_OPT_MON_MAX6647 156 # error "MON_MAX6647 is obsolete and is not supported." 157 #endif 158 159 #ifdef EFSYS_OPT_MON_NULL 160 # error "MON_NULL is obsolete and is not supported." 161 #endif 162 163 #ifdef EFSYS_OPT_MON_SIENA 164 # error "MON_SIENA is obsolete (replaced by MON_MCDI)." 165 #endif 166 167 #ifdef EFSYS_OPT_MON_HUNTINGTON 168 # error "MON_HUNTINGTON is obsolete (replaced by MON_MCDI)." 169 #endif 170 171 /* Support monitor statistics (voltage/temperature) */ 172 #if EFSYS_OPT_MON_STATS 173 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 174 # error "MON_STATS requires SIENA or HUNTINGTON or MEDFORD" 175 # endif 176 #endif /* EFSYS_OPT_MON_STATS */ 177 178 /* Support Monitor via mcdi */ 179 #if EFSYS_OPT_MON_MCDI 180 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 181 # error "MON_MCDI requires SIENA or HUNTINGTON or MEDFORD" 182 # endif 183 #endif /* EFSYS_OPT_MON_MCDI*/ 184 185 /* Support printable names for statistics */ 186 #if EFSYS_OPT_NAMES 187 # if !(EFSYS_OPT_LOOPBACK || EFSYS_OPT_MAC_STATS || EFSYS_OPT_MCDI || \ 188 EFSYS_MON_STATS || EFSYS_OPT_PHY_STATS || EFSYS_OPT_QSTATS) 189 # error "NAMES requires LOOPBACK or xxxSTATS or MCDI" 190 # endif 191 #endif /* EFSYS_OPT_NAMES */ 192 193 /* Support non volatile configuration */ 194 #if EFSYS_OPT_NVRAM 195 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 196 # error "NVRAM requires SIENA or HUNTINGTON or MEDFORD" 197 # endif 198 #endif /* EFSYS_OPT_NVRAM */ 199 200 #ifdef EFSYS_OPT_NVRAM_FALCON_BOOTROM 201 # error "NVRAM_FALCON_BOOTROM is obsolete and is not supported." 202 #endif 203 204 #ifdef EFSYS_OPT_NVRAM_SFT9001 205 # error "NVRAM_SFT9001 is obsolete and is not supported." 206 #endif 207 208 #ifdef EFSYS_OPT_NVRAM_SFX7101 209 # error "NVRAM_SFX7101 is obsolete and is not supported." 210 #endif 211 212 #ifdef EFSYS_OPT_PCIE_TUNE 213 # error "PCIE_TUNE is obsolete and is not supported." 214 #endif 215 216 #ifdef EFSYS_OPT_PHY_BIST 217 # error "PHY_BIST is obsolete (replaced by BIST)." 218 #endif 219 220 /* Support PHY flags */ 221 #if EFSYS_OPT_PHY_FLAGS 222 # if !EFSYS_OPT_SIENA 223 # error "PHY_FLAGS requires SIENA" 224 # endif 225 #endif /* EFSYS_OPT_PHY_FLAGS */ 226 227 /* Support for PHY LED control */ 228 #if EFSYS_OPT_PHY_LED_CONTROL 229 # if !EFSYS_OPT_SIENA 230 # error "PHY_LED_CONTROL requires SIENA" 231 # endif 232 #endif /* EFSYS_OPT_PHY_LED_CONTROL */ 233 234 #ifdef EFSYS_OPT_PHY_NULL 235 # error "PHY_NULL is obsolete and is not supported." 236 #endif 237 238 #ifdef EFSYS_OPT_PHY_PM8358 239 # error "PHY_PM8358 is obsolete and is not supported." 240 #endif 241 242 #ifdef EFSYS_OPT_PHY_PROPS 243 # error "PHY_PROPS is obsolete and is not supported." 244 #endif 245 246 #ifdef EFSYS_OPT_PHY_QT2022C2 247 # error "PHY_QT2022C2 is obsolete and is not supported." 248 #endif 249 250 #ifdef EFSYS_OPT_PHY_QT2025C 251 # error "PHY_QT2025C is obsolete and is not supported." 252 #endif 253 254 #ifdef EFSYS_OPT_PHY_SFT9001 255 # error "PHY_SFT9001 is obsolete and is not supported." 256 #endif 257 258 #ifdef EFSYS_OPT_PHY_SFX7101 259 # error "PHY_SFX7101 is obsolete and is not supported." 260 #endif 261 262 /* Support PHY statistics */ 263 #if EFSYS_OPT_PHY_STATS 264 # if !EFSYS_OPT_SIENA 265 # error "PHY_STATS requires SIENA" 266 # endif 267 #endif /* EFSYS_OPT_PHY_STATS */ 268 269 #ifdef EFSYS_OPT_PHY_TXC43128 270 # error "PHY_TXC43128 is obsolete and is not supported." 271 #endif 272 273 /* Support EVQ/RXQ/TXQ statistics */ 274 #if EFSYS_OPT_QSTATS 275 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 276 # error "QSTATS requires SIENA or HUNTINGTON or MEDFORD" 277 # endif 278 #endif /* EFSYS_OPT_QSTATS */ 279 280 #ifdef EFSYS_OPT_RX_HDR_SPLIT 281 # error "RX_HDR_SPLIT is obsolete and is not supported" 282 #endif 283 284 /* Support receive scaling (RSS) */ 285 #if EFSYS_OPT_RX_SCALE 286 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 287 # error "RX_SCALE requires SIENA or HUNTINGTON or MEDFORD" 288 # endif 289 #endif /* EFSYS_OPT_RX_SCALE */ 290 291 /* Support receive scatter DMA */ 292 #if EFSYS_OPT_RX_SCATTER 293 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 294 # error "RX_SCATTER requires SIENA or HUNTINGTON or MEDFORD" 295 # endif 296 #endif /* EFSYS_OPT_RX_SCATTER */ 297 298 #ifdef EFSYS_OPT_STAT_NAME 299 # error "STAT_NAME is obsolete (replaced by NAMES)." 300 #endif 301 302 /* Support PCI Vital Product Data (VPD) */ 303 #if EFSYS_OPT_VPD 304 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 305 # error "VPD requires SIENA or HUNTINGTON or MEDFORD" 306 # endif 307 #endif /* EFSYS_OPT_VPD */ 308 309 /* Support Wake on LAN */ 310 #if EFSYS_OPT_WOL 311 # if !EFSYS_OPT_SIENA 312 # error "WOL requires SIENA" 313 # endif 314 #endif /* EFSYS_OPT_WOL */ 315 316 #ifdef EFSYS_OPT_MCAST_FILTER_LIST 317 # error "MCAST_FILTER_LIST is obsolete and is not supported" 318 #endif 319 320 /* Support BIST */ 321 #if EFSYS_OPT_BIST 322 # if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 323 # error "BIST requires SIENA or HUNTINGTON or MEDFORD" 324 # endif 325 #endif /* EFSYS_OPT_BIST */ 326 327 /* Support MCDI licensing API */ 328 #if EFSYS_OPT_LICENSING 329 # if !EFSYS_OPT_MCDI 330 # error "LICENSING requires MCDI" 331 # endif 332 # if !EFSYS_HAS_UINT64 333 # error "LICENSING requires UINT64" 334 # endif 335 #endif /* EFSYS_OPT_LICENSING */ 336 337 /* Support adapters with missing static config (for factory use only) */ 338 #if EFSYS_OPT_ALLOW_UNCONFIGURED_NIC 339 # if !EFSYS_OPT_MEDFORD 340 # error "ALLOW_UNCONFIGURED_NIC requires MEDFORD" 341 # endif 342 #endif /* EFSYS_OPT_ALLOW_UNCONFIGURED_NIC */ 343 344 345 #endif /* _SYS_EFX_CHECK_H */ 346