The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/net/sff8472.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2013 George V. Neville-Neil
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   26  * SUCH DAMAGE.
   27  *
   28  * $FreeBSD$
   29  */
   30 
   31 /*
   32  * The following set of constants are from Document SFF-8472
   33  * "Diagnostic Monitoring Interface for Optical Transceivers" revision
   34  * 11.3 published by the SFF Committee on June 11, 2013
   35  *
   36  * The SFF standard defines two ranges of addresses, each 255 bytes
   37  * long for the storage of data and diagnostics on cables, such as
   38  * SFP+ optics and TwinAx cables.  The ranges are defined in the
   39  * following way:
   40  *
   41  * Base Address 0xa0 (Identification Data)
   42  * 0-95    Serial ID Defined by SFP MSA
   43  * 96-127  Vendor Specific Data
   44  * 128-255 Reserved
   45  *
   46  * Base Address 0xa2 (Diagnostic Data)
   47  * 0-55    Alarm and Warning Thresholds
   48  * 56-95   Cal Constants
   49  * 96-119  Real Time Diagnostic Interface
   50  * 120-127 Vendor Specific
   51  * 128-247 User Writable EEPROM
   52  * 248-255 Vendor Specific
   53  *
   54  * Note that not all addresses are supported.  Where support is
   55  * optional this is noted and instructions for checking for the
   56  * support are supplied.
   57  *
   58  * All these values are read across an I2C (i squared C) bus.  Any
   59  * device wishing to read these addresses must first have support for
   60  * i2c calls.  The Chelsio T4/T5 driver (dev/cxgbe) is one such
   61  * driver.
   62  */
   63 
   64 
   65 /* Table 3.1 Two-wire interface ID: Data Fields */
   66 
   67 enum {
   68         SFF_8472_BASE           = 0xa0,   /* Base address for all our queries. */
   69         SFF_8472_ID             = 0,  /* Transceiver Type (Table 3.2) */
   70         SFF_8472_EXT_ID         = 1,  /* Extended transceiver type (Table 3.3) */
   71         SFF_8472_CONNECTOR      = 2,  /* Connector type (Table 3.4) */
   72         SFF_8472_TRANS_START    = 3,  /* Elec or Optical Compatibility
   73                                     * (Table 3.5) */
   74         SFF_8472_TRANS_END      = 10,
   75         SFF_8472_ENCODING       = 11, /* Encoding Code for high speed
   76                                      * serial encoding algorithm (see
   77                                      * Table 3.6) */
   78         SFF_8472_BITRATE        = 12, /* Nominal signaling rate, units
   79                                      * of 100MBd.  (see details for
   80                                      * rates > 25.0Gb/s) */
   81         SFF_8472_RATEID         = 13, /* Type of rate select
   82                                      * functionality (see Table
   83                                      * 3.6a) */
   84         SFF_8472_LEN_SMF_KM     = 14, /* Link length supported for single
   85                                     * mode fiber, units of km */
   86         SFF_8472_LEN_SMF        = 15, /* Link length supported for single
   87                                     * mode fiber, units of 100 m */
   88         SFF_8472_LEN_50UM       = 16, /* Link length supported for 50 um
   89                                     * OM2 fiber, units of 10 m */
   90         SFF_8472_LEN_625UM      = 17, /* Link length supported for 62.5
   91                                     * um OM1 fiber, units of 10 m */
   92         SFF_8472_LEN_OM4        = 18, /* Link length supported for 50um
   93                                     * OM4 fiber, units of 10m.
   94                                     * Alternatively copper or direct
   95                                     * attach cable, units of m */
   96         SFF_8472_LEN_OM3        = 19, /* Link length supported for 50 um OM3 fiber, units of 10 m */
   97         SFF_8472_VENDOR_START   = 20, /* Vendor name [Address A0h, Bytes
   98                                     * 20-35] */
   99         SFF_8472_VENDOR_END     = 35,
  100         SFF_8472_TRANS          = 36, /* Transceiver Code for electronic
  101                                     * or optical compatibility (see
  102                                     * Table 3.5) */
  103         SFF_8472_VENDOR_OUI_START       = 37, /* Vendor OUI SFP vendor IEEE
  104                                     * company ID */
  105         SFF_8472_VENDOR_OUI_END = 39,
  106         SFF_8472_PN_START       = 40, /* Vendor PN */
  107         SFF_8472_PN_END         = 55,
  108         SFF_8472_REV_START      = 56, /* Vendor Revision */
  109         SFF_8472_REV_END        = 59,
  110         SFF_8472_WAVELEN_START  = 60, /* Wavelength Laser wavelength
  111                                     * (Passive/Active Cable
  112                                     * Specification Compliance) */
  113         SFF_8472_WAVELEN_END    = 61,
  114         SFF_8472_CC_BASE        = 63, /* CC_BASE Check code for Base ID
  115                                     * Fields (addresses 0 to 62) */
  116 
  117 /*
  118  * Extension Fields (optional) check the options before reading other
  119  * addresses.
  120  */
  121         SFF_8472_OPTIONS_MSB    = 64, /* Options Indicates which optional
  122                                     * transceiver signals are
  123                                     * implemented */
  124         SFF_8472_OPTIONS_LSB    = 65, /* (see Table 3.7) */
  125         SFF_8472_BR_MAX         = 66, /* BR max Upper bit rate margin,
  126                                     * units of % (see details for
  127                                     * rates > 25.0Gb/s) */
  128         SFF_8472_BR_MIN         = 67, /* Lower bit rate margin, units of
  129                                     * % (see details for rates >
  130                                     * 25.0Gb/s) */
  131         SFF_8472_SN_START       = 68, /* Vendor SN [Address A0h, Bytes 68-83] */
  132         SFF_8472_SN_END         = 83,
  133         SFF_8472_DATE_START     = 84, /* Date code Vendor’s manufacturing
  134                                     * date code (see Table 3.8) */
  135         SFF_8472_DATE_END       = 91,
  136         SFF_8472_DIAG_TYPE      = 92, /* Diagnostic Monitoring Type
  137                                     * Indicates which type of
  138                                     * diagnostic monitoring is
  139                                     * implemented (if any) in the
  140                                     * transceiver (see Table 3.9)
  141                                     */
  142 
  143         SFF_8472_ENHANCED       = 93, /* Enhanced Options Indicates which
  144                                     * optional enhanced features are
  145                                     * implemented (if any) in the
  146                                     * transceiver (see Table 3.10) */
  147         SFF_8472_COMPLIANCE     = 94, /* SFF-8472 Compliance Indicates
  148                                     * which revision of SFF-8472 the
  149                                     * transceiver complies with.  (see
  150                                     * Table 3.12)*/
  151         SFF_8472_CC_EXT         = 95, /* Check code for the Extended ID
  152                                     * Fields (addresses 64 to 94)
  153                                     */
  154 
  155         SFF_8472_VENDOR_RSRVD_START     = 96,
  156         SFF_8472_VENDOR_RSRVD_END       = 127,
  157 
  158         SFF_8472_RESERVED_START = 128,
  159         SFF_8472_RESERVED_END   = 255
  160 };
  161 
  162 #define SFF_8472_DIAG_IMPL      (1 << 6) /* Required to be 1 */
  163 #define SFF_8472_DIAG_INTERNAL  (1 << 5) /* Internal measurements. */
  164 #define SFF_8472_DIAG_EXTERNAL  (1 << 4) /* External measurements. */
  165 #define SFF_8472_DIAG_POWER     (1 << 3) /* Power measurement type */
  166 #define SFF_8472_DIAG_ADDR_CHG  (1 << 2) /* Address change required.
  167                                           * See SFF-8472 doc. */
  168 
  169  /*
  170   * Diagnostics are available at the two wire address 0xa2.  All
  171   * diagnostics are OPTIONAL so you should check 0xa0 registers 92 to
  172   * see which, if any are supported.
  173   */
  174 
  175 enum {SFF_8472_DIAG = 0xa2};  /* Base address for diagnostics. */
  176 
  177  /*
  178   *  Table 3.15 Alarm and Warning Thresholds All values are 2 bytes
  179   * and MUST be read in a single read operation starting at the MSB
  180   */
  181 
  182 enum {
  183         SFF_8472_TEMP_HIGH_ALM          = 0, /* Temp High Alarm  */
  184         SFF_8472_TEMP_LOW_ALM           = 2, /* Temp Low Alarm */
  185         SFF_8472_TEMP_HIGH_WARN         = 4, /* Temp High Warning */
  186         SFF_8472_TEMP_LOW_WARN          = 6, /* Temp Low Warning */
  187         SFF_8472_VOLTAGE_HIGH_ALM       = 8, /* Voltage High Alarm */
  188         SFF_8472_VOLTAGE_LOW_ALM        = 10, /* Voltage Low Alarm */
  189         SFF_8472_VOLTAGE_HIGH_WARN      = 12, /* Voltage High Warning */
  190         SFF_8472_VOLTAGE_LOW_WARN       = 14, /* Voltage Low Warning */
  191         SFF_8472_BIAS_HIGH_ALM          = 16, /* Bias High Alarm */
  192         SFF_8472_BIAS_LOW_ALM           = 18, /* Bias Low Alarm */
  193         SFF_8472_BIAS_HIGH_WARN         = 20, /* Bias High Warning */
  194         SFF_8472_BIAS_LOW_WARN          = 22, /* Bias Low Warning */
  195         SFF_8472_TX_POWER_HIGH_ALM      = 24, /* TX Power High Alarm */
  196         SFF_8472_TX_POWER_LOW_ALM       = 26, /* TX Power Low Alarm */
  197         SFF_8472_TX_POWER_HIGH_WARN     = 28, /* TX Power High Warning */
  198         SFF_8472_TX_POWER_LOW_WARN      = 30, /* TX Power Low Warning */
  199         SFF_8472_RX_POWER_HIGH_ALM      = 32, /* RX Power High Alarm */
  200         SFF_8472_RX_POWER_LOW_ALM       = 34, /* RX Power Low Alarm */
  201         SFF_8472_RX_POWER_HIGH_WARN     = 36, /* RX Power High Warning */
  202         SFF_8472_RX_POWER_LOW_WARN      = 38, /* RX Power Low Warning */
  203 
  204         SFF_8472_RX_POWER4      = 56, /* Rx_PWR(4) Single precision
  205                                     *  floating point calibration data
  206                                     *  - Rx optical power. Bit 7 of
  207                                     *  byte 56 is MSB. Bit 0 of byte
  208                                     *  59 is LSB. Rx_PWR(4) should be
  209                                     *  set to zero for “internally
  210                                     *  calibrated” devices. */
  211         SFF_8472_RX_POWER3      = 60, /* Rx_PWR(3) Single precision
  212                                     * floating point calibration data
  213                                     * - Rx optical power.  Bit 7 of
  214                                     * byte 60 is MSB. Bit 0 of byte 63
  215                                     * is LSB. Rx_PWR(3) should be set
  216                                     * to zero for “internally
  217                                     * calibrated” devices.*/
  218         SFF_8472_RX_POWER2      = 64, /* Rx_PWR(2) Single precision
  219                                     * floating point calibration data,
  220                                     * Rx optical power.  Bit 7 of byte
  221                                     * 64 is MSB, bit 0 of byte 67 is
  222                                     * LSB. Rx_PWR(2) should be set to
  223                                     * zero for “internally calibrated”
  224                                     * devices. */
  225         SFF_8472_RX_POWER1      = 68, /* Rx_PWR(1) Single precision
  226                                     * floating point calibration data,
  227                                     * Rx optical power. Bit 7 of byte
  228                                     * 68 is MSB, bit 0 of byte 71 is
  229                                     * LSB. Rx_PWR(1) should be set to
  230                                     * 1 for “internally calibrated”
  231                                     * devices. */
  232         SFF_8472_RX_POWER0      = 72, /* Rx_PWR(0) Single precision
  233                                     * floating point calibration data,
  234                                     * Rx optical power. Bit 7 of byte
  235                                     * 72 is MSB, bit 0 of byte 75 is
  236                                     * LSB. Rx_PWR(0) should be set to
  237                                     * zero for “internally calibrated”
  238                                     * devices. */
  239         SFF_8472_TX_I_SLOPE     = 76, /* Tx_I(Slope) Fixed decimal
  240                                     * (unsigned) calibration data,
  241                                     * laser bias current. Bit 7 of
  242                                     * byte 76 is MSB, bit 0 of byte 77
  243                                     * is LSB. Tx_I(Slope) should be
  244                                     * set to 1 for “internally
  245                                     * calibrated” devices. */
  246         SFF_8472_TX_I_OFFSET    = 78, /* Tx_I(Offset) Fixed decimal
  247                                     * (signed two’s complement)
  248                                     * calibration data, laser bias
  249                                     * current. Bit 7 of byte 78 is
  250                                     * MSB, bit 0 of byte 79 is
  251                                     * LSB. Tx_I(Offset) should be set
  252                                     * to zero for “internally
  253                                     * calibrated” devices. */
  254         SFF_8472_TX_POWER_SLOPE = 80, /* Tx_PWR(Slope) Fixed decimal
  255                                     * (unsigned) calibration data,
  256                                     * transmitter coupled output
  257                                     * power. Bit 7 of byte 80 is MSB,
  258                                     * bit 0 of byte 81 is LSB.
  259                                     * Tx_PWR(Slope) should be set to 1
  260                                     * for “internally calibrated”
  261                                     * devices. */
  262         SFF_8472_TX_POWER_OFFSET        = 82, /* Tx_PWR(Offset) Fixed decimal
  263                                             * (signed two’s complement)
  264                                             * calibration data, transmitter
  265                                             * coupled output power. Bit 7 of
  266                                             * byte 82 is MSB, bit 0 of byte 83
  267                                             * is LSB. Tx_PWR(Offset) should be
  268                                             * set to zero for “internally
  269                                             * calibrated” devices. */
  270         SFF_8472_T_SLOPE        = 84, /* T (Slope) Fixed decimal
  271                                     * (unsigned) calibration data,
  272                                     * internal module temperature. Bit
  273                                     * 7 of byte 84 is MSB, bit 0 of
  274                                     * byte 85 is LSB.  T(Slope) should
  275                                     * be set to 1 for “internally
  276                                     * calibrated” devices. */
  277         SFF_8472_T_OFFSET       = 86, /* T (Offset) Fixed decimal (signed
  278                                     * two’s complement) calibration
  279                                     * data, internal module
  280                                     * temperature. Bit 7 of byte 86 is
  281                                     * MSB, bit 0 of byte 87 is LSB.
  282                                     * T(Offset) should be set to zero
  283                                     * for “internally calibrated”
  284                                     * devices. */
  285         SFF_8472_V_SLOPE        = 88, /* V (Slope) Fixed decimal
  286                                     * (unsigned) calibration data,
  287                                     * internal module supply
  288                                     * voltage. Bit 7 of byte 88 is
  289                                     * MSB, bit 0 of byte 89 is
  290                                     * LSB. V(Slope) should be set to 1
  291                                     * for “internally calibrated”
  292                                     * devices. */
  293         SFF_8472_V_OFFSET       = 90, /* V (Offset) Fixed decimal (signed
  294                                     * two’s complement) calibration
  295                                     * data, internal module supply
  296                                     * voltage. Bit 7 of byte 90 is
  297                                     * MSB. Bit 0 of byte 91 is
  298                                     * LSB. V(Offset) should be set to
  299                                     * zero for “internally calibrated”
  300                                     * devices. */
  301         SFF_8472_CHECKSUM       = 95, /* Checksum Byte 95 contains the
  302                                     * low order 8 bits of the sum of
  303                                     * bytes 0 – 94. */
  304         /* Internal measurements. */
  305 
  306         SFF_8472_TEMP           = 96, /* Internally measured module temperature. */
  307         SFF_8472_VCC            = 98, /* Internally measured supply
  308                                     * voltage in transceiver.
  309                                     */
  310         SFF_8472_TX_BIAS        = 100, /* Internally measured TX Bias Current. */
  311         SFF_8472_TX_POWER       = 102, /* Measured TX output power. */
  312         SFF_8472_RX_POWER       = 104, /* Measured RX input power. */
  313 
  314         SFF_8472_STATUS         = 110 /* See below */
  315 };
  316  /* Status Bits Described */
  317 
  318 /*
  319  * TX Disable State Digital state of the TX Disable Input Pin. Updated
  320  * within 100ms of change on pin.
  321  */
  322 #define SFF_8472_STATUS_TX_DISABLE  (1 << 7) 
  323 
  324 /*
  325  * Select Read/write bit that allows software disable of
  326  * laser. Writing ‘1’ disables laser. See Table 3.11 for
  327  * enable/disable timing requirements. This bit is “OR”d with the hard
  328  * TX_DISABLE pin value. Note, per SFP MSA TX_DISABLE pin is default
  329  * enabled unless pulled low by hardware. If Soft TX Disable is not
  330  * implemented, the transceiver ignores the value of this bit. Default
  331  * power up value is zero/low.
  332  */
  333 #define SFF_8472_STATUS_SOFT_TX_DISABLE (1 << 6) 
  334 
  335 /*
  336  * RS(1) State Digital state of SFP input pin AS(1) per SFF-8079 or
  337  * RS(1) per SFF-8431. Updated within 100ms of change on pin. See A2h
  338  * Byte 118, Bit 3 for Soft RS(1) Select control information.
  339  */
  340 #define SFF_8472_RS_STATE (1 << 5) 
  341 
  342 /*
  343  * Rate_Select State [aka. “RS(0)”] Digital state of the SFP
  344  * Rate_Select Input Pin. Updated within 100ms of change on pin. Note:
  345  * This pin is also known as AS(0) in SFF-8079 and RS(0) in SFF-8431.
  346  */ 
  347 #define SFF_8472_STATUS_SELECT_STATE (1 << 4)
  348      
  349 /*
  350  * Read/write bit that allows software rate select control. Writing
  351  * ‘1’ selects full bandwidth operation. This bit is “OR’d with the
  352  * hard Rate_Select, AS(0) or RS(0) pin value. See Table 3.11 for
  353  * timing requirements. Default at power up is logic zero/low. If Soft
  354  * Rate Select is not implemented, the transceiver ignores the value
  355  * of this bit. Note: Specific transceiver behaviors of this bit are
  356  * identified in Table 3.6a and referenced documents. See Table 3.18a,
  357  * byte 118, bit 3 for Soft RS(1) Select.
  358  */
  359 #define SFF_8472_STATUS_SOFT_RATE_SELECT (1 << 3)
  360 
  361 /*
  362  * TX Fault State Digital state of the TX Fault Output Pin. Updated
  363  * within 100ms of change on pin.
  364  */
  365 #define SFF_8472_STATUS_TX_FAULT_STATE (1 << 2)
  366 
  367 /*
  368  * Digital state of the RX_LOS Output Pin. Updated within 100ms of
  369  * change on pin.
  370  */
  371 #define SFF_8472_STATUS_RX_LOS (1 << 1)
  372 
  373 /*
  374  * Indicates transceiver has achieved power up and data is ready. Bit
  375  * remains high until data is ready to be read at which time the
  376  * device sets the bit low.
  377  */
  378 #define SFF_8472_STATUS_DATA_READY (1 << 0)
  379 
  380 /*
  381  * Table 3.2 Identifier values.
  382  * Identifier constants has taken from SFF-8024 rev 4.6 table 4.1
  383  * (as referenced by table 3.2 footer)
  384  * */
  385 enum {
  386         SFF_8024_ID_UNKNOWN     = 0x0, /* Unknown or unspecified */
  387         SFF_8024_ID_GBIC        = 0x1, /* GBIC */
  388         SFF_8024_ID_SFF         = 0x2, /* Module soldered to motherboard (ex: SFF)*/
  389         SFF_8024_ID_SFP         = 0x3, /* SFP or SFP “Plus” */
  390         SFF_8024_ID_XBI         = 0x4, /* 300 pin XBI */
  391         SFF_8024_ID_XENPAK      = 0x5, /* Xenpak */
  392         SFF_8024_ID_XFP         = 0x6, /* XFP */
  393         SFF_8024_ID_XFF         = 0x7, /* XFF */
  394         SFF_8024_ID_XFPE        = 0x8, /* XFP-E */
  395         SFF_8024_ID_XPAK        = 0x9, /* XPAk */
  396         SFF_8024_ID_X2          = 0xA, /* X2 */
  397         SFF_8024_ID_DWDM_SFP    = 0xB, /* DWDM-SFP */
  398         SFF_8024_ID_QSFP        = 0xC, /* QSFP */
  399         SFF_8024_ID_QSFPPLUS    = 0xD, /* QSFP+ or later */
  400         SFF_8024_ID_CXP         = 0xE, /* CXP */
  401         SFF_8024_ID_HD4X        = 0xF, /* Shielded Mini Multilane HD 4X */
  402         SFF_8024_ID_HD8X        = 0x10, /* Shielded Mini Multilane HD 8X */
  403         SFF_8024_ID_QSFP28      = 0x11, /* QSFP28 or later */
  404         SFF_8024_ID_CXP2        = 0x12, /* CXP2 (aka CXP28) */
  405         SFF_8024_ID_CDFP        = 0x13, /* CDFP (Style 1/Style 2) */
  406         SFF_8024_ID_SMM4        = 0x14, /* Shielded Mini Multilate HD 4X Fanout */
  407         SFF_8024_ID_SMM8        = 0x15, /* Shielded Mini Multilate HD 8X Fanout */
  408         SFF_8024_ID_CDFP3       = 0x16, /* CDFP (Style3) */
  409         SFF_8024_ID_MICROQSFP   = 0x17, /* microQSFP */
  410         SFF_8024_ID_QSFP_DD     = 0x18, /* QSFP-DD 8X Pluggable Transceiver */
  411         SFF_8024_ID_OSFP8X      = 0x19, /* OSFP 8X Pluggable Transceiver */
  412         SFF_8024_ID_SFP_DD      = 0x1A, /* SFP-DD 2X Pluggable Transceiver */
  413         SFF_8024_ID_DSFP        = 0x1B, /* DSFP Dual SFF Pluggable Transceiver */
  414         SFF_8024_ID_X4ML        = 0x1C, /* x4 MiniLink/OcuLink */
  415         SFF_8024_ID_X8ML        = 0x1D, /* x8 MiniLink */
  416         SFF_8024_ID_QSFP_CMIS   = 0x1E, /* QSFP+ or later w/ Common Management
  417                                            Interface Specification */
  418         SFF_8024_ID_LAST        = SFF_8024_ID_QSFP_CMIS
  419 };
  420 
  421 static const char *sff_8024_id[SFF_8024_ID_LAST + 1] = {
  422         "Unknown",
  423         "GBIC",
  424         "SFF",
  425         "SFP/SFP+/SFP28",
  426         "XBI",
  427         "Xenpak",
  428         "XFP",
  429         "XFF",
  430         "XFP-E",
  431         "XPAK",
  432         "X2",
  433         "DWDM-SFP/SFP+",
  434         "QSFP",
  435         "QSFP+",
  436         "CXP",
  437         "HD4X",
  438         "HD8X",
  439         "QSFP28",
  440         "CXP2",
  441         "CDFP",
  442         "SMM4",
  443         "SMM8",
  444         "CDFP3",
  445         "microQSFP",
  446         "QSFP-DD",
  447         "QSFP8X",
  448         "SFP-DD",
  449         "DSFP",
  450         "x4MiniLink/OcuLink",
  451         "x8MiniLink",
  452         "QSFP+(CIMS)"
  453 };
  454 
  455 /* Keep compatibility with old definitions */
  456 #define SFF_8472_ID_UNKNOWN     SFF_8024_ID_UNKNOWN
  457 #define SFF_8472_ID_GBIC        SFF_8024_ID_GBIC
  458 #define SFF_8472_ID_SFF         SFF_8024_ID_SFF
  459 #define SFF_8472_ID_SFP         SFF_8024_ID_SFP
  460 #define SFF_8472_ID_XBI         SFF_8024_ID_XBI
  461 #define SFF_8472_ID_XENPAK      SFF_8024_ID_XENPAK
  462 #define SFF_8472_ID_XFP         SFF_8024_ID_XFP
  463 #define SFF_8472_ID_XFF         SFF_8024_ID_XFF
  464 #define SFF_8472_ID_XFPE        SFF_8024_ID_XFPE
  465 #define SFF_8472_ID_XPAK        SFF_8024_ID_XPAK
  466 #define SFF_8472_ID_X2          SFF_8024_ID_X2
  467 #define SFF_8472_ID_DWDM_SFP    SFF_8024_ID_DWDM_SFP
  468 #define SFF_8472_ID_QSFP        SFF_8024_ID_QSFP
  469 #define SFF_8472_ID_LAST        SFF_8024_ID_LAST
  470 
  471 #define sff_8472_id             sff_8024_id
  472 
  473 /*
  474  * Table 3.9 Diagnostic Monitoring Type (byte 92)
  475  * bits described.
  476  */
  477 
  478 /*
  479  * Digital diagnostic monitoring implemented.
  480  * Set to 1 for transceivers implementing DDM.
  481  */
  482 #define SFF_8472_DDM_DONE       (1 << 6)
  483 
  484 /*
  485  * Measurements are internally calibrated.
  486  */
  487 #define SFF_8472_DDM_INTERNAL   (1 << 5)
  488 
  489 /*
  490  * Measurements are externally calibrated.
  491  */
  492 #define SFF_8472_DDM_EXTERNAL   (1 << 4)
  493 
  494 /*
  495  * Received power measurement type
  496  * 0 = OMA, 1 = average power
  497  */
  498 #define SFF_8472_DDM_PMTYPE     (1 << 3)
  499 
  500 /* Table 3.13 and 3.14 Temperature Conversion Values */
  501 #define SFF_8472_TEMP_SIGN (1 << 15)
  502 #define SFF_8472_TEMP_SHIFT  8
  503 #define SFF_8472_TEMP_MSK  0xEF00
  504 #define SFF_8472_TEMP_FRAC 0x00FF
  505 
  506 /* Internal Callibration Conversion factors */
  507 
  508 /*
  509  * Represented as a 16 bit unsigned integer with the voltage defined
  510  * as the full 16 bit value (0 – 65535) with LSB equal to 100 uVolt,
  511  * yielding a total range of 0 to +6.55 Volts.
  512  */
  513 #define SFF_8472_VCC_FACTOR 10000.0 
  514 
  515 /*
  516  * Represented as a 16 bit unsigned integer with the current defined
  517  * as the full 16 bit value (0 – 65535) with LSB equal to 2 uA,
  518  * yielding a total range of 0 to 131 mA.
  519  */
  520 
  521 #define SFF_8472_BIAS_FACTOR 2000.0 
  522 
  523 /*
  524  * Represented as a 16 bit unsigned integer with the power defined as
  525  * the full 16 bit value (0 – 65535) with LSB equal to 0.1 uW,
  526  * yielding a total range of 0 to 6.5535 mW (~ -40 to +8.2 dBm).
  527  */
  528 
  529 #define SFF_8472_POWER_FACTOR 10000.0

Cache object: df67e70a497a4e0014f162210f47a46d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.