1283514Sarybchik/*- 2300607Sarybchik * Copyright (c) 2012-2016 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/11.0/sys/dev/sfxge/common/efx_check.h 300607 2016-05-24 12:16:57Z 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#endif 49299253Sarybchik 50283514Sarybchik/* Support NVRAM based boot config */ 51283514Sarybchik#if EFSYS_OPT_BOOTCFG 52283514Sarybchik# if !EFSYS_OPT_NVRAM 53283514Sarybchik# error "BOOTCFG requires NVRAM" 54283514Sarybchik# endif 55283514Sarybchik#endif /* EFSYS_OPT_BOOTCFG */ 56283514Sarybchik 57283514Sarybchik/* Verify chip implements accessed registers */ 58283514Sarybchik#if EFSYS_OPT_CHECK_REG 59299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 60299320Sarybchik# error "CHECK_REG requires SIENA or HUNTINGTON or MEDFORD" 61283514Sarybchik# endif 62283514Sarybchik#endif /* EFSYS_OPT_CHECK_REG */ 63283514Sarybchik 64283514Sarybchik/* Decode fatal errors */ 65283514Sarybchik#if EFSYS_OPT_DECODE_INTR_FATAL 66299320Sarybchik# if !EFSYS_OPT_SIENA 67299320Sarybchik# error "INTR_FATAL requires SIENA" 68283514Sarybchik# endif 69283514Sarybchik#endif /* EFSYS_OPT_DECODE_INTR_FATAL */ 70283514Sarybchik 71283514Sarybchik/* Support diagnostic hardware tests */ 72283514Sarybchik#if EFSYS_OPT_DIAG 73299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 74299320Sarybchik# error "DIAG requires SIENA or HUNTINGTON or MEDFORD" 75283514Sarybchik# endif 76283514Sarybchik#endif /* EFSYS_OPT_DIAG */ 77283514Sarybchik 78283514Sarybchik/* Support optimized EVQ data access */ 79283514Sarybchik#if EFSYS_OPT_EV_PREFETCH 80299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 81299320Sarybchik# error "EV_PREFETCH requires SIENA or HUNTINGTON or MEDFORD" 82283514Sarybchik# endif 83283514Sarybchik#endif /* EFSYS_OPT_EV_PREFETCH */ 84283514Sarybchik 85299321Sarybchik#ifdef EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE 86299321Sarybchik# error "FALCON_NIC_CFG_OVERRIDE is obsolete and is not supported." 87299321Sarybchik#endif 88283514Sarybchik 89283514Sarybchik/* Support hardware packet filters */ 90283514Sarybchik#if EFSYS_OPT_FILTER 91299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 92299320Sarybchik# error "FILTER requires SIENA or HUNTINGTON or MEDFORD" 93283514Sarybchik# endif 94283514Sarybchik#endif /* EFSYS_OPT_FILTER */ 95283514Sarybchik 96293730Sarybchik#if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 97283514Sarybchik# if !EFSYS_OPT_FILTER 98293730Sarybchik# error "HUNTINGTON or MEDFORD requires FILTER" 99283514Sarybchik# endif 100283514Sarybchik#endif /* EFSYS_OPT_HUNTINGTON */ 101283514Sarybchik 102283514Sarybchik/* Support hardware loopback modes */ 103283514Sarybchik#if EFSYS_OPT_LOOPBACK 104299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 105299320Sarybchik# error "LOOPBACK requires SIENA or HUNTINGTON or MEDFORD" 106283514Sarybchik# endif 107283514Sarybchik#endif /* EFSYS_OPT_LOOPBACK */ 108283514Sarybchik 109299322Sarybchik#ifdef EFSYS_OPT_MAC_FALCON_GMAC 110299322Sarybchik# error "MAC_FALCON_GMAC is obsolete and is not supported." 111299322Sarybchik#endif 112283514Sarybchik 113299323Sarybchik#ifdef EFSYS_OPT_MAC_FALCON_XMAC 114299323Sarybchik# error "MAC_FALCON_XMAC is obsolete and is not supported." 115299323Sarybchik#endif 116283514Sarybchik 117283514Sarybchik/* Support MAC statistics */ 118283514Sarybchik#if EFSYS_OPT_MAC_STATS 119299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 120299320Sarybchik# error "MAC_STATS requires SIENA or HUNTINGTON or MEDFORD" 121283514Sarybchik# endif 122283514Sarybchik#endif /* EFSYS_OPT_MAC_STATS */ 123283514Sarybchik 124283514Sarybchik/* Support management controller messages */ 125283514Sarybchik#if EFSYS_OPT_MCDI 126293730Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 127293730Sarybchik# error "MCDI requires SIENA or HUNTINGTON or MEDFORD" 128283514Sarybchik# endif 129283514Sarybchik#endif /* EFSYS_OPT_MCDI */ 130283514Sarybchik 131293730Sarybchik#if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 132293730Sarybchik# if !EFSYS_OPT_MCDI 133293730Sarybchik# error "SIENA or HUNTINGTON or MEDFORD requires MCDI" 134293730Sarybchik# endif 135283514Sarybchik#endif 136283514Sarybchik 137291677Sarybchik/* Support MCDI logging */ 138291677Sarybchik#if EFSYS_OPT_MCDI_LOGGING 139291677Sarybchik# if !EFSYS_OPT_MCDI 140291677Sarybchik# error "MCDI_LOGGING requires MCDI" 141291677Sarybchik# endif 142291677Sarybchik#endif /* EFSYS_OPT_MCDI_LOGGING */ 143291677Sarybchik 144291927Sarybchik/* Support MCDI proxy authorization */ 145291927Sarybchik#if EFSYS_OPT_MCDI_PROXY_AUTH 146291927Sarybchik# if !EFSYS_OPT_MCDI 147291927Sarybchik# error "MCDI_PROXY_AUTH requires MCDI" 148291927Sarybchik# endif 149291927Sarybchik#endif /* EFSYS_OPT_MCDI_PROXY_AUTH */ 150291927Sarybchik 151299324Sarybchik#ifdef EFSYS_OPT_MON_LM87 152299324Sarybchik# error "MON_LM87 is obsolete and is not supported." 153299324Sarybchik#endif 154283514Sarybchik 155299325Sarybchik#ifdef EFSYS_OPT_MON_MAX6647 156299325Sarybchik# error "MON_MAX6647 is obsolete and is not supported." 157299325Sarybchik#endif 158283514Sarybchik 159299326Sarybchik#ifdef EFSYS_OPT_MON_NULL 160299326Sarybchik# error "MON_NULL is obsolete and is not supported." 161299326Sarybchik#endif 162283514Sarybchik 163283514Sarybchik#ifdef EFSYS_OPT_MON_SIENA 164293767Sarybchik# error "MON_SIENA is obsolete (replaced by MON_MCDI)." 165299337Sarybchik#endif 166283514Sarybchik 167283514Sarybchik#ifdef EFSYS_OPT_MON_HUNTINGTON 168293767Sarybchik# error "MON_HUNTINGTON is obsolete (replaced by MON_MCDI)." 169299337Sarybchik#endif 170283514Sarybchik 171283514Sarybchik/* Support monitor statistics (voltage/temperature) */ 172283514Sarybchik#if EFSYS_OPT_MON_STATS 173299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 174299320Sarybchik# error "MON_STATS requires SIENA or HUNTINGTON or MEDFORD" 175283514Sarybchik# endif 176283514Sarybchik#endif /* EFSYS_OPT_MON_STATS */ 177283514Sarybchik 178283514Sarybchik/* Support Monitor via mcdi */ 179283514Sarybchik#if EFSYS_OPT_MON_MCDI 180293730Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 181293730Sarybchik# error "MON_MCDI requires SIENA or HUNTINGTON or MEDFORD" 182283514Sarybchik# endif 183283514Sarybchik#endif /* EFSYS_OPT_MON_MCDI*/ 184283514Sarybchik 185283514Sarybchik/* Support printable names for statistics */ 186283514Sarybchik#if EFSYS_OPT_NAMES 187283514Sarybchik# if !(EFSYS_OPT_LOOPBACK || EFSYS_OPT_MAC_STATS || EFSYS_OPT_MCDI || \ 188299722Sarybchik EFSYS_MON_STATS || EFSYS_OPT_PHY_STATS || EFSYS_OPT_QSTATS) 189299722Sarybchik# error "NAMES requires LOOPBACK or xxxSTATS or MCDI" 190283514Sarybchik# endif 191283514Sarybchik#endif /* EFSYS_OPT_NAMES */ 192283514Sarybchik 193283514Sarybchik/* Support non volatile configuration */ 194283514Sarybchik#if EFSYS_OPT_NVRAM 195299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 196299320Sarybchik# error "NVRAM requires SIENA or HUNTINGTON or MEDFORD" 197283514Sarybchik# endif 198283514Sarybchik#endif /* EFSYS_OPT_NVRAM */ 199283514Sarybchik 200299327Sarybchik#ifdef EFSYS_OPT_NVRAM_FALCON_BOOTROM 201299327Sarybchik# error "NVRAM_FALCON_BOOTROM is obsolete and is not supported." 202299327Sarybchik#endif 203283514Sarybchik 204299328Sarybchik#ifdef EFSYS_OPT_NVRAM_SFT9001 205299328Sarybchik# error "NVRAM_SFT9001 is obsolete and is not supported." 206299328Sarybchik#endif 207283514Sarybchik 208299330Sarybchik#ifdef EFSYS_OPT_NVRAM_SFX7101 209299330Sarybchik# error "NVRAM_SFX7101 is obsolete and is not supported." 210299330Sarybchik#endif 211283514Sarybchik 212299254Sarybchik#ifdef EFSYS_OPT_PCIE_TUNE 213299254Sarybchik# error "PCIE_TUNE is obsolete and is not supported." 214299254Sarybchik#endif 215283514Sarybchik 216299252Sarybchik#ifdef EFSYS_OPT_PHY_BIST 217299252Sarybchik# error "PHY_BIST is obsolete (replaced by BIST)." 218299252Sarybchik#endif 219283514Sarybchik 220283514Sarybchik/* Support PHY flags */ 221283514Sarybchik#if EFSYS_OPT_PHY_FLAGS 222299320Sarybchik# if !EFSYS_OPT_SIENA 223299320Sarybchik# error "PHY_FLAGS requires SIENA" 224283514Sarybchik# endif 225283514Sarybchik#endif /* EFSYS_OPT_PHY_FLAGS */ 226283514Sarybchik 227283514Sarybchik/* Support for PHY LED control */ 228283514Sarybchik#if EFSYS_OPT_PHY_LED_CONTROL 229299320Sarybchik# if !EFSYS_OPT_SIENA 230299320Sarybchik# error "PHY_LED_CONTROL requires SIENA" 231283514Sarybchik# endif 232283514Sarybchik#endif /* EFSYS_OPT_PHY_LED_CONTROL */ 233283514Sarybchik 234299331Sarybchik#ifdef EFSYS_OPT_PHY_NULL 235299331Sarybchik# error "PHY_NULL is obsolete and is not supported." 236299331Sarybchik#endif 237283514Sarybchik 238283514Sarybchik#ifdef EFSYS_OPT_PHY_PM8358 239299722Sarybchik# error "PHY_PM8358 is obsolete and is not supported." 240283514Sarybchik#endif 241283514Sarybchik 242299722Sarybchik#ifdef EFSYS_OPT_PHY_PROPS 243299722Sarybchik# error "PHY_PROPS is obsolete and is not supported." 244299722Sarybchik#endif 245283514Sarybchik 246299332Sarybchik#ifdef EFSYS_OPT_PHY_QT2022C2 247299332Sarybchik# error "PHY_QT2022C2 is obsolete and is not supported." 248299332Sarybchik#endif 249283514Sarybchik 250299333Sarybchik#ifdef EFSYS_OPT_PHY_QT2025C 251299333Sarybchik# error "PHY_QT2025C is obsolete and is not supported." 252299333Sarybchik#endif 253283514Sarybchik 254299334Sarybchik#ifdef EFSYS_OPT_PHY_SFT9001 255299334Sarybchik# error "PHY_SFT9001 is obsolete and is not supported." 256299334Sarybchik#endif 257283514Sarybchik 258299335Sarybchik#ifdef EFSYS_OPT_PHY_SFX7101 259299335Sarybchik# error "PHY_SFX7101 is obsolete and is not supported." 260299335Sarybchik#endif 261283514Sarybchik 262283514Sarybchik/* Support PHY statistics */ 263283514Sarybchik#if EFSYS_OPT_PHY_STATS 264299320Sarybchik# if !EFSYS_OPT_SIENA 265299320Sarybchik# error "PHY_STATS requires SIENA" 266283514Sarybchik# endif 267283514Sarybchik#endif /* EFSYS_OPT_PHY_STATS */ 268283514Sarybchik 269299336Sarybchik#ifdef EFSYS_OPT_PHY_TXC43128 270299336Sarybchik# error "PHY_TXC43128 is obsolete and is not supported." 271299336Sarybchik#endif 272283514Sarybchik 273283514Sarybchik/* Support EVQ/RXQ/TXQ statistics */ 274283514Sarybchik#if EFSYS_OPT_QSTATS 275299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 276299320Sarybchik# error "QSTATS requires SIENA or HUNTINGTON or MEDFORD" 277283514Sarybchik# endif 278283514Sarybchik#endif /* EFSYS_OPT_QSTATS */ 279283514Sarybchik 280293806Sarybchik#ifdef EFSYS_OPT_RX_HDR_SPLIT 281293806Sarybchik# error "RX_HDR_SPLIT is obsolete and is not supported" 282299337Sarybchik#endif 283283514Sarybchik 284283514Sarybchik/* Support receive scaling (RSS) */ 285283514Sarybchik#if EFSYS_OPT_RX_SCALE 286299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 287299320Sarybchik# error "RX_SCALE requires SIENA or HUNTINGTON or MEDFORD" 288283514Sarybchik# endif 289283514Sarybchik#endif /* EFSYS_OPT_RX_SCALE */ 290283514Sarybchik 291283514Sarybchik/* Support receive scatter DMA */ 292283514Sarybchik#if EFSYS_OPT_RX_SCATTER 293299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 294299320Sarybchik# error "RX_SCATTER requires SIENA or HUNTINGTON or MEDFORD" 295283514Sarybchik# endif 296283514Sarybchik#endif /* EFSYS_OPT_RX_SCATTER */ 297283514Sarybchik 298283514Sarybchik#ifdef EFSYS_OPT_STAT_NAME 299293767Sarybchik# error "STAT_NAME is obsolete (replaced by NAMES)." 300283514Sarybchik#endif 301283514Sarybchik 302283514Sarybchik/* Support PCI Vital Product Data (VPD) */ 303283514Sarybchik#if EFSYS_OPT_VPD 304299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 305299320Sarybchik# error "VPD requires SIENA or HUNTINGTON or MEDFORD" 306283514Sarybchik# endif 307283514Sarybchik#endif /* EFSYS_OPT_VPD */ 308283514Sarybchik 309283514Sarybchik/* Support Wake on LAN */ 310283514Sarybchik#if EFSYS_OPT_WOL 311283514Sarybchik# if !EFSYS_OPT_SIENA 312283514Sarybchik# error "WOL requires SIENA" 313283514Sarybchik# endif 314283514Sarybchik#endif /* EFSYS_OPT_WOL */ 315283514Sarybchik 316293758Sarybchik#ifdef EFSYS_OPT_MCAST_FILTER_LIST 317293767Sarybchik# error "MCAST_FILTER_LIST is obsolete and is not supported" 318299337Sarybchik#endif 319283514Sarybchik 320283514Sarybchik/* Support BIST */ 321283514Sarybchik#if EFSYS_OPT_BIST 322299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD) 323299320Sarybchik# error "BIST requires SIENA or HUNTINGTON or MEDFORD" 324283514Sarybchik# endif 325283514Sarybchik#endif /* EFSYS_OPT_BIST */ 326283514Sarybchik 327293901Sarybchik/* Support MCDI licensing API */ 328293901Sarybchik#if EFSYS_OPT_LICENSING 329293901Sarybchik# if !EFSYS_OPT_MCDI 330293901Sarybchik# error "LICENSING requires MCDI" 331293901Sarybchik# endif 332293901Sarybchik# if !EFSYS_HAS_UINT64 333293901Sarybchik# error "LICENSING requires UINT64" 334293901Sarybchik# endif 335293901Sarybchik#endif /* EFSYS_OPT_LICENSING */ 336293901Sarybchik 337300606Sarybchik/* Support adapters with missing static config (for factory use only) */ 338300606Sarybchik#if EFSYS_OPT_ALLOW_UNCONFIGURED_NIC 339300606Sarybchik# if !EFSYS_OPT_MEDFORD 340300606Sarybchik# error "ALLOW_UNCONFIGURED_NIC requires MEDFORD" 341300606Sarybchik# endif 342300606Sarybchik#endif /* EFSYS_OPT_ALLOW_UNCONFIGURED_NIC */ 343293901Sarybchik 344300606Sarybchik 345283514Sarybchik#endif /* _SYS_EFX_CHECK_H */ 346