Print this page
12309 errors in section 9e of the manual


  92              transceiver's memory map is similar to that found in the SFF-8436
  93              specification.  The identification information is found in the
  94              upper 128 bytes of page 0xa0, while the lower part of the page is
  95              used for control, among other purposes.
  96 
  97      The following table summarizes the above information.
  98 
  99            Standard       Speeds                      Size         i2c pages
 100            INF-8074       1 Gb/s, 10 Gb/s             128 bytes    0xa0
 101            SFF-8472       1 Gb/s, 10 Gb/s, 25 GB/s    512 bytes    0xa0, 0xa2
 102            SFF-8436       40 Gb/s                     256 bytes    0xa0
 103            SFF-8636       100 Gb/s                    256 bytes    0xa0
 104 
 105    MAC Capability Structure
 106      When the device driver's mc_getcapab(9E) function entry point is called
 107      with the capability requested set to MAC_CAPAB_TRANSCEIVER, then the
 108      value of the capability structure is the following structure:
 109 
 110            typedef struct mac_capab_transceiver {
 111                    uint_t  mct_flags;
 112                    uint_t  mct_ntransceiveres;
 113                    int     (*mct_info)(void *driver, uint_t id,
 114                                mac_transceiver_info_t *infop),
 115                    int     (*mct_read)(void *driver, uint_t id, uint_t page,
 116                                void *buf, size_t nbytes, off_t offset,
 117                                size_t *nread)
 118            } mac_capab_transceiver_t;
 119 
 120      If the device driver supports the MAC_CAPAB_TRANSCEIVER capability, it
 121      should fill in this structure, based on the following rules:
 122 
 123      mct_flags
 124              The mct_flags member is used to negotiate extensions with the
 125              driver.  MAC will set the value of mct_flags to include all of
 126              the currently known extensions.  The driver should intersect this
 127              list with the set that they actually support.  At this time, no
 128              such features are defined and the driver should set the member to
 129              0.
 130 
 131      mct_ntransceivers
 132              The value of mct_ntransceivers indicates that the number of
 133              transceivers present in the device.  For most devices, it is
 134              expected that this value will be set to one.  However, some
 135              devices do support multiple transceivers and PHYs that show up
 136              behind a single logical MAC.
 137 
 138              It is expected that this value will not change across the
 139              lifetime of the device being attached.  It is important to
 140              remember that this represents the total possible number of
 141              transceivers in the device, not how many are currently present
 142              and powered on.
 143 
 144              The number of transceivers will influence the id argument used in
 145              the mct_info() and mct_read() entry points.  The transceiver IDs
 146              will start at zero and go to the value of mct_ntransceivers - 1.
 147              It is up to the driver to keep the mapping between actual
 148              transceivers and the transceiver identifiers consistent.
 149 
 150      mct_info
 151              The mct_info() entry point is used to set basic information about
 152              the transceiver.  This entry point is required.  If the device
 153              driver cannot implement this entry point, then it should not
 154              indicate that it supports the capability.
 155 
 156              The mct_info() entry point should fill in information about the
 157              transceiver with an identifier of id.  See the description above
 158              of mct_ntransceivers for more information on how the IDs are
 159              determined.
 160 
 161              The driver should then proceed to fill in basic information by
 162              calling the functions described in the section Information
 163              Functions.  After successfully calling all of the functions, the
 164              driver should return 0.  Othewrise, it should return the
 165              appropriate error number.  For a full list of error numbers, see
 166              Intro(2).  Common values are:
 167 
 168                   EINVAL             The transceiver identifier id was
 169                                      invalid.
 170 
 171                   ENOTSUP            This instance of the devices does not
 172                                      support a transceiver.  For example, a
 173                                      device which sometimes has copper PHYs
 174                                      and therefore this instance does not have
 175                                      any PHYs.
 176 
 177                   EIO                An error occurred while trying to read
 178                                      device registers.  For example, an FM-
 179                                      aware device had an error.
 180 
 181      mct_read
 182              The mct_read() function is used to read information from a
 183              transceiver's i2c bus.  The mct_read() entry point is an optional
 184              entry point.


 261      The various callback functions will be called from kernel context.  These
 262      functions will never be called from interrupt context.
 263 
 264 SEE ALSO
 265      Intro(2), mac(9E), mc_getcapab(9E), mac_register(9F),
 266      mac_transceiver_info_set_present(9F),
 267      mac_transceiver_info_set_usable(9F), mac_register(9S)
 268 
 269      SFP (Small Formfactor Pluggable) Interface, INF-8074i, SFF Committee, May
 270      12, 2001, Revision 1.0.
 271 
 272      Diagnostic Monitoring Interface for Optical Transceivers, SFF-8472,
 273      November 21, 2014, Revision 12.2.
 274 
 275      QSFP+ 10 Gbs 4X PLUGGABLE TRANSCEIVER, SFF-8436, October 31, 2013,
 276      Revision 4.8.
 277 
 278      Management Interface for Cabled Environments, SFF-8636, January 26, 2016,
 279      Revision 2.7.
 280 
 281 illumos                        November 26, 2017                       illumos


  92              transceiver's memory map is similar to that found in the SFF-8436
  93              specification.  The identification information is found in the
  94              upper 128 bytes of page 0xa0, while the lower part of the page is
  95              used for control, among other purposes.
  96 
  97      The following table summarizes the above information.
  98 
  99            Standard       Speeds                      Size         i2c pages
 100            INF-8074       1 Gb/s, 10 Gb/s             128 bytes    0xa0
 101            SFF-8472       1 Gb/s, 10 Gb/s, 25 GB/s    512 bytes    0xa0, 0xa2
 102            SFF-8436       40 Gb/s                     256 bytes    0xa0
 103            SFF-8636       100 Gb/s                    256 bytes    0xa0
 104 
 105    MAC Capability Structure
 106      When the device driver's mc_getcapab(9E) function entry point is called
 107      with the capability requested set to MAC_CAPAB_TRANSCEIVER, then the
 108      value of the capability structure is the following structure:
 109 
 110            typedef struct mac_capab_transceiver {
 111                    uint_t  mct_flags;
 112                    uint_t  mct_ntransceivers;
 113                    int     (*mct_info)(void *driver, uint_t id,
 114                                mac_transceiver_info_t *infop),
 115                    int     (*mct_read)(void *driver, uint_t id, uint_t page,
 116                                void *buf, size_t nbytes, off_t offset,
 117                                size_t *nread)
 118            } mac_capab_transceiver_t;
 119 
 120      If the device driver supports the MAC_CAPAB_TRANSCEIVER capability, it
 121      should fill in this structure, based on the following rules:
 122 
 123      mct_flags
 124              The mct_flags member is used to negotiate extensions with the
 125              driver.  MAC will set the value of mct_flags to include all of
 126              the currently known extensions.  The driver should intersect this
 127              list with the set that they actually support.  At this time, no
 128              such features are defined and the driver should set the member to
 129              0.
 130 
 131      mct_ntransceivers
 132              The value of mct_ntransceivers indicates the number of
 133              transceivers present in the device.  For most devices, it is
 134              expected that this value will be set to one.  However, some
 135              devices do support multiple transceivers and PHYs that show up
 136              behind a single logical MAC.
 137 
 138              It is expected that this value will not change across the
 139              lifetime of the device being attached.  It is important to
 140              remember that this represents the total possible number of
 141              transceivers in the device, not how many are currently present
 142              and powered on.
 143 
 144              The number of transceivers will influence the id argument used in
 145              the mct_info() and mct_read() entry points.  The transceiver IDs
 146              will start at zero and go to the value of mct_ntransceivers - 1.
 147              It is up to the driver to keep the mapping between actual
 148              transceivers and the transceiver identifiers consistent.
 149 
 150      mct_info
 151              The mct_info() entry point is used to set basic information about
 152              the transceiver.  This entry point is required.  If the device
 153              driver cannot implement this entry point, then it should not
 154              indicate that it supports the capability.
 155 
 156              The mct_info() entry point should fill in information about the
 157              transceiver with an identifier of id.  See the description above
 158              of mct_ntransceivers for more information on how the IDs are
 159              determined.
 160 
 161              The driver should then proceed to fill in basic information by
 162              calling the functions described in the section Information
 163              Functions.  After successfully calling all of the functions, the
 164              driver should return 0.  Otherwise, it should return the
 165              appropriate error number.  For a full list of error numbers, see
 166              Intro(2).  Common values are:
 167 
 168                   EINVAL             The transceiver identifier id was
 169                                      invalid.
 170 
 171                   ENOTSUP            This instance of the devices does not
 172                                      support a transceiver.  For example, a
 173                                      device which sometimes has copper PHYs
 174                                      and therefore this instance does not have
 175                                      any PHYs.
 176 
 177                   EIO                An error occurred while trying to read
 178                                      device registers.  For example, an FM-
 179                                      aware device had an error.
 180 
 181      mct_read
 182              The mct_read() function is used to read information from a
 183              transceiver's i2c bus.  The mct_read() entry point is an optional
 184              entry point.


 261      The various callback functions will be called from kernel context.  These
 262      functions will never be called from interrupt context.
 263 
 264 SEE ALSO
 265      Intro(2), mac(9E), mc_getcapab(9E), mac_register(9F),
 266      mac_transceiver_info_set_present(9F),
 267      mac_transceiver_info_set_usable(9F), mac_register(9S)
 268 
 269      SFP (Small Formfactor Pluggable) Interface, INF-8074i, SFF Committee, May
 270      12, 2001, Revision 1.0.
 271 
 272      Diagnostic Monitoring Interface for Optical Transceivers, SFF-8472,
 273      November 21, 2014, Revision 12.2.
 274 
 275      QSFP+ 10 Gbs 4X PLUGGABLE TRANSCEIVER, SFF-8436, October 31, 2013,
 276      Revision 4.8.
 277 
 278      Management Interface for Cabled Environments, SFF-8636, January 26, 2016,
 279      Revision 2.7.
 280 
 281 illumos                        February 15, 2020                       illumos