159596c01SRobert Mustacchi.\" 259596c01SRobert Mustacchi.\" This file and its contents are supplied under the terms of the 359596c01SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 459596c01SRobert Mustacchi.\" You may only use this file in accordance with the terms of version 559596c01SRobert Mustacchi.\" 1.0 of the CDDL. 659596c01SRobert Mustacchi.\" 759596c01SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 859596c01SRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 959596c01SRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 1059596c01SRobert Mustacchi.\" 1159596c01SRobert Mustacchi.\" 1259596c01SRobert Mustacchi.\" Copyright (c) 2017, Joyent, Inc. 1359596c01SRobert Mustacchi.\" 1459596c01SRobert Mustacchi.Dd Mar 24, 2017 1559596c01SRobert Mustacchi.Dt MAC_CAPAB_TRANSCEIVER 9E 1659596c01SRobert Mustacchi.Os 1759596c01SRobert Mustacchi.Sh NAME 1859596c01SRobert Mustacchi.Nm mac_capab_transciever , 1959596c01SRobert Mustacchi.Nm mct_info , 2059596c01SRobert Mustacchi.Nm mct_read 2159596c01SRobert Mustacchi.Nd MAC capability for networking transceivers 2259596c01SRobert Mustacchi.Sh SYNOPSIS 2359596c01SRobert Mustacchi.In sys/mac_provider.h 2459596c01SRobert Mustacchi.Vt typedef struct mac_capab_transceiver mac_capab_transceiver_t; 2559596c01SRobert Mustacchi.Ft int 2659596c01SRobert Mustacchi.Fo "mct_info" 2759596c01SRobert Mustacchi.Fa "void *driver" 2859596c01SRobert Mustacchi.Fa "uint_t id" 2959596c01SRobert Mustacchi.Fa "mac_transceiver_info_t *infop" 3059596c01SRobert Mustacchi.Fc 3159596c01SRobert Mustacchi.Ft int 3259596c01SRobert Mustacchi.Fo mct_read 3359596c01SRobert Mustacchi.Fa "void *driver" 3459596c01SRobert Mustacchi.Fa "uint_t id" 3559596c01SRobert Mustacchi.Fa "uint_t page" 3659596c01SRobert Mustacchi.Fa "void *buf" 3759596c01SRobert Mustacchi.Fa "size_t nbytes" 3859596c01SRobert Mustacchi.Fa "off_t offset" 3959596c01SRobert Mustacchi.Fa "size_t *nread" 4059596c01SRobert Mustacchi.Fc 4159596c01SRobert Mustacchi.Sh INTERFACE LEVEL 4259596c01SRobert Mustacchi.Sy Volatile - 4359596c01SRobert MustacchiThis interface is still evolving in illumos. 4459596c01SRobert MustacchiAPI and ABI stability is 4559596c01SRobert Mustacchinot guaranteed. 4659596c01SRobert Mustacchi.Sh PARAMETERS 4759596c01SRobert Mustacchi.Bl -tag -width Fa 4859596c01SRobert Mustacchi.It Fa driver 4959596c01SRobert MustacchiA pointer to the driver's private data that was passed in via the 5059596c01SRobert Mustacchi.Sy m_pdata 5159596c01SRobert Mustacchimember of the 5259596c01SRobert Mustacchi.Xr mac_register 9S 5359596c01SRobert Mustacchistructure to the 5459596c01SRobert Mustacchi.Xr mac_register 9F 5559596c01SRobert Mustacchifunction. 5659596c01SRobert Mustacchi.It Fa id 5759596c01SRobert MustacchiAn integer value indicating which transceiver is being inquired about. 5859596c01SRobert Mustacchi.It Fa infop 5959596c01SRobert MustacchiAn opaque structure which is used to set information about the 6059596c01SRobert Mustacchitransceiver. 6159596c01SRobert Mustacchi.It Fa page 6259596c01SRobert MustacchiA value that indicates which page from the i2c bus is being requested. 6359596c01SRobert Mustacchi.It Fa buf 6459596c01SRobert MustacchiA pointer to which data should be written to when reading from the 6559596c01SRobert Mustacchidevice. 6659596c01SRobert Mustacchi.It Fa nbytes 6759596c01SRobert MustacchiA value indicating the number of bytes being asked to read into 6859596c01SRobert Mustacchi.Fa buf . 6959596c01SRobert Mustacchi.It Fa offset 7059596c01SRobert MustacchiA value indicating the offset into the page to start reading data. 7159596c01SRobert Mustacchi.It Fa nread 7259596c01SRobert MustacchiA value to be updated by the driver with the number of successfully read 7359596c01SRobert Mustacchibytes. 7459596c01SRobert Mustacchi.El 7559596c01SRobert Mustacchi.Sh DESCRIPTION 7659596c01SRobert MustacchiThe 7759596c01SRobert Mustacchi.Sy MAC_CAPAB_TRANSCEIVER 7859596c01SRobert Mustacchicapability allows for GLDv3 networking device drivers to provide 7959596c01SRobert Mustacchiinformation to the system about their transceiver. 8059596c01SRobert MustacchiImplementing this capability is optional. 8159596c01SRobert MustacchiFor more information on how to handle capabilities and how to indicate 8259596c01SRobert Mustacchithat a capability is not supported, see 8359596c01SRobert Mustacchi.Xr mc_getcapab 9E . 8459596c01SRobert Mustacchi.Pp 8559596c01SRobert MustacchiThis capability should be implemented if the device in question supports 8659596c01SRobert Mustacchia Small Form Factor (SFF) transceiver. 8759596c01SRobert MustacchiThese are more commonly known by names such as SFP, SFP+, SFP28, QSFP+, 8859596c01SRobert Mustacchiand QSFP28. 8959596c01SRobert MustacchiThis interface does not apply to traditional copper Ethernet phys. 9059596c01SRobert MustacchiThese transceivers provide standardized information over the i2c bus at 9159596c01SRobert Mustacchispecific pages. 9259596c01SRobert Mustacchi.Ss Supported Standards 9359596c01SRobert Mustacchi.Bl -tag -width Sy 9459596c01SRobert Mustacchi.It Sy INF-8074 9559596c01SRobert MustacchiThe 9659596c01SRobert Mustacchi.Sy INF-8084 9759596c01SRobert Mustacchistandard was the original multiple source agreement (MSA) for SFP 9859596c01SRobert Mustacchidevices. 9959596c01SRobert MustacchiIt proposed the original series of management pages at i2c page 0xa0. 10059596c01SRobert MustacchiThis page contained up to 512 bytes, however, only the first 10159596c01SRobert Mustacchi96 bytes are standardized. 10259596c01SRobert MustacchiBytes 97 to 127 are reserved for the vendor. 10359596c01SRobert MustacchiThe remaining bytes are reserved by the specification. 10459596c01SRobert MustacchiThe management page was subsequently adopted by SFP+ devices. 10559596c01SRobert Mustacchi.It Sy SFF-8472 10659596c01SRobert MustacchiThe 10759596c01SRobert Mustacchi.Sy SFF-8472 10859596c01SRobert Mustacchistandard extended the original SFP MSA. 10959596c01SRobert MustacchiThis standard added a second i2c page at 0xa2, while maintaining the 11059596c01SRobert Mustacchioriginal page at 0xa0. 11159596c01SRobert MustacchiThe page at 0xa0 is now explicitly 256 bytes. 11259596c01SRobert MustacchiThe page at 0xa2 is also 256 bytes. 11359596c01SRobert MustacchiThis standard was also adopted for all SFP28 parts, which are commonly 11459596c01SRobert Mustacchiused in transceivers for 25 Gb/s Ethernet. 11559596c01SRobert Mustacchi.It Sy SFF-8436 11659596c01SRobert MustacchiThe 11759596c01SRobert Mustacchi.Sy SFF-8436 11859596c01SRobert Mustacchistandard was developed for QSFP+ transceivers, which involve the 11959596c01SRobert Mustacchibonding of 4 SFP+ links. 12059596c01SRobert MustacchiQSFP+ is commonly used in the transceivers for 40 Gb/s Ethernet. 12159596c01SRobert MustacchiThis standard uses i2c page 0xa0 for read-only identification purposes. 12259596c01SRobert MustacchiThe lower half of the page is used for control, while the upper 128 12359596c01SRobert Mustacchibytes is similar to the 12459596c01SRobert Mustacchi.Sy INF-8084 12559596c01SRobert Mustacchiand 12659596c01SRobert Mustacchi.Sy SFF-8472 12759596c01SRobert Mustacchistandards. 12859596c01SRobert Mustacchi.It Sy SFF-8636 12959596c01SRobert MustacchiThe 13059596c01SRobert Mustacchi.Sy SFF-8636 13159596c01SRobert Mustacchistandard is a common management standard which is shared between both 13259596c01SRobert MustacchiSAS and QSFP+ 28 Gb/s transceivers. 13359596c01SRobert MustacchiThe latter transceiver is commonly found in 100 Gb/s Ethernet. 13459596c01SRobert MustacchiThe transceiver's memory map is similar to that found in the 13559596c01SRobert Mustacchi.Sy SFF-8436 13659596c01SRobert Mustacchispecification. 13759596c01SRobert MustacchiThe identification information is found in the upper 128 13859596c01SRobert Mustacchibytes of page 0xa0, while the lower part of the page is used for 13959596c01SRobert Mustacchicontrol, among other purposes. 14059596c01SRobert Mustacchi.El 14159596c01SRobert Mustacchi.Pp 14259596c01SRobert MustacchiThe following table summarizes the above information. 14359596c01SRobert Mustacchi.Bl -column "Sy SFF-8636" "1 Gb/s, 10 Gb/s, 25 Gb/s" "256 bytes" "0xa0, 0xa2" -offset indent 14459596c01SRobert Mustacchi.Em "Standard" Ta Em Speeds Ta Em Size Ta Em i2c pages 14559596c01SRobert Mustacchi.It INF-8074 Ta 1 Gb/s, 10 Gb/s Ta 128 bytes Ta 0xa0 14659596c01SRobert Mustacchi.It SFF-8472 Ta 1 Gb/s, 10 Gb/s, 25 GB/s Ta 512 bytes Ta 0xa0, 0xa2 14759596c01SRobert Mustacchi.It SFF-8436 Ta 40 Gb/s Ta 256 bytes Ta 0xa0 14859596c01SRobert Mustacchi.It SFF-8636 Ta 100 Gb/s Ta 256 bytes Ta 0xa0 14959596c01SRobert Mustacchi.El 15059596c01SRobert Mustacchi.Ss MAC Capability Structure 15159596c01SRobert MustacchiWhen the device driver's 15259596c01SRobert Mustacchi.Xr mc_getcapab 9E 15359596c01SRobert Mustacchifunction entry point is called with the capability requested set to 15459596c01SRobert Mustacchi.Sy MAC_CAPAB_TRANSCEIVER , 15559596c01SRobert Mustacchithen the value of the capability structure is the following structure: 15659596c01SRobert Mustacchi.Bd -literal -offset indent 15759596c01SRobert Mustacchitypedef struct mac_capab_transceiver { 15859596c01SRobert Mustacchi uint_t mct_flags; 15959596c01SRobert Mustacchi uint_t mct_ntransceiveres; 16059596c01SRobert Mustacchi int (*mct_info)(void *driver, uint_t id, 16159596c01SRobert Mustacchi mac_transceiver_info_t *infop), 16259596c01SRobert Mustacchi int (*mct_read)(void *driver, uint_t id, uint_t page, 16359596c01SRobert Mustacchi void *buf, size_t nbytes, off_t offset, 16459596c01SRobert Mustacchi size_t *nread) 16559596c01SRobert Mustacchi} mac_capab_transceiver_t; 16659596c01SRobert Mustacchi.Ed 16759596c01SRobert Mustacchi.Pp 16859596c01SRobert MustacchiIf the device driver supports the 16959596c01SRobert Mustacchi.Sy MAC_CAPAB_TRANSCEIVER 17059596c01SRobert Mustacchicapability, it should fill in this structure, based on the following 17159596c01SRobert Mustacchirules: 17259596c01SRobert Mustacchi.Bl -tag -width Sy 17359596c01SRobert Mustacchi.It Sy mct_flags 17459596c01SRobert MustacchiThe 17559596c01SRobert Mustacchi.Vt mct_flags 17659596c01SRobert Mustacchimember is used to negotiate extensions with the driver. 17759596c01SRobert MustacchiMAC will set the value of 17859596c01SRobert Mustacchi.Vt mct_flags 17959596c01SRobert Mustacchito include all of the currently known extensions. 18059596c01SRobert MustacchiThe driver should intersect this list with the set that they actually 18159596c01SRobert Mustacchisupport. 18259596c01SRobert MustacchiAt this time, no such features are defined and the driver should set the 18359596c01SRobert Mustacchimember to 18459596c01SRobert Mustacchi.Sy 0 . 18559596c01SRobert Mustacchi.It Sy mct_ntransceivers 18659596c01SRobert MustacchiThe value of 18759596c01SRobert Mustacchi.Sy mct_ntransceivers 18859596c01SRobert Mustacchiindicates that the number of transceivers present in the device. 18959596c01SRobert MustacchiFor most devices, it is expected that this value will be set to one. 19059596c01SRobert MustacchiHowever, some devices do support multiple transceivers and PHYs that 19159596c01SRobert Mustacchishow up behind a single logical MAC. 19259596c01SRobert Mustacchi.Pp 19359596c01SRobert MustacchiIt is expected that this value will not change across the lifetime of 19459596c01SRobert Mustacchithe device being attached. 19559596c01SRobert MustacchiIt is important to remember that this represents the total possible 19659596c01SRobert Mustacchinumber of transceivers in the device, not how many are currently present 19759596c01SRobert Mustacchiand powered on. 19859596c01SRobert Mustacchi.Pp 19959596c01SRobert MustacchiThe number of transceivers will influence the 20059596c01SRobert Mustacchi.Fa id 20159596c01SRobert Mustacchiargument used in the 20259596c01SRobert Mustacchi.Fn mct_info 20359596c01SRobert Mustacchiand 20459596c01SRobert Mustacchi.Fn mct_read 20559596c01SRobert Mustacchientry points. 20659596c01SRobert MustacchiThe transceiver IDs will start at zero and go to the value of 20759596c01SRobert Mustacchi.Fa mct_ntransceivers - 1 . 20859596c01SRobert MustacchiIt is up to the driver to keep the mapping between actual transceivers 20959596c01SRobert Mustacchiand the transceiver identifiers consistent. 21059596c01SRobert Mustacchi.It Sy mct_info 21159596c01SRobert MustacchiThe 21259596c01SRobert Mustacchi.Fn mct_info 21359596c01SRobert Mustacchientry point is used to set basic information about the transceiver. 21459596c01SRobert MustacchiThis entry point is 21559596c01SRobert Mustacchi.Em required . 21659596c01SRobert MustacchiIf the device driver cannot implement this entry point, then it should 21759596c01SRobert Mustacchinot indicate that it supports the capability. 21859596c01SRobert Mustacchi.Pp 21959596c01SRobert MustacchiThe 22059596c01SRobert Mustacchi.Fn mct_info 22159596c01SRobert Mustacchientry point should fill in information about the transceiver with an 22259596c01SRobert Mustacchiidentifier of 22359596c01SRobert Mustacchi.Fa id . 22459596c01SRobert MustacchiSee the description above of 22559596c01SRobert Mustacchi.Sy mct_ntransceivers 22659596c01SRobert Mustacchifor more information on how the IDs are determined. 22759596c01SRobert Mustacchi.Pp 22859596c01SRobert MustacchiThe driver should then proceed to fill in basic information by calling 22959596c01SRobert Mustacchithe functions described in the section 23059596c01SRobert Mustacchi.Sx Information Functions . 23159596c01SRobert MustacchiAfter successfully calling all of the functions, the driver should 23259596c01SRobert Mustacchireturn 23359596c01SRobert Mustacchi.Sy 0 . 23459596c01SRobert MustacchiOthewrise, it should return the appropriate error number. 23559596c01SRobert MustacchiFor a full list of error numbers, see 23659596c01SRobert Mustacchi.Xr Intro 2 . 23759596c01SRobert MustacchiCommon values are: 23859596c01SRobert Mustacchi.Bl -tag -width Er -offset width 23959596c01SRobert Mustacchi.It Er EINVAL 24059596c01SRobert MustacchiThe transceiver identifier 24159596c01SRobert Mustacchi.Fa id 24259596c01SRobert Mustacchiwas invalid. 24359596c01SRobert Mustacchi.It Er ENOTSUP 24459596c01SRobert MustacchiThis instance of the devices does not support a transceiver. 24559596c01SRobert MustacchiFor example, a device which sometimes has copper PHYs and therefore this 24659596c01SRobert Mustacchiinstance does not have any PHYs. 24759596c01SRobert Mustacchi.It Er EIO 24859596c01SRobert MustacchiAn error occurred while trying to read device registers. 24959596c01SRobert MustacchiFor example, an FM-aware device had an error. 25059596c01SRobert Mustacchi.El 25159596c01SRobert Mustacchi.It Sy mct_read 25259596c01SRobert MustacchiThe 25359596c01SRobert Mustacchi.Fn mct_read 25459596c01SRobert Mustacchifunction is used to read information from a transceiver's i2c bus. 25559596c01SRobert MustacchiThe 25659596c01SRobert Mustacchi.Fn mct_read 25759596c01SRobert Mustacchientry point is an 25859596c01SRobert Mustacchi.Em optional 25959596c01SRobert Mustacchientry point. 26059596c01SRobert Mustacchi.Pp 26159596c01SRobert MustacchiThe transceiver should first check the value of 26259596c01SRobert Mustacchi.Fa id , 26359596c01SRobert Mustacchiwhich indicates which transceiver information is being requested. 26459596c01SRobert MustacchiSee the description above of 26559596c01SRobert Mustacchi.Sy mct_ntransceivers 26659596c01SRobert Mustacchifor more information on how the IDs are determined. 26759596c01SRobert Mustacchi.Pp 26859596c01SRobert MustacchiThe driver should try to read up to 26959596c01SRobert Mustacchi.Fa nbytes 27059596c01SRobert Mustacchiof data from the i2c bus at page 27159596c01SRobert Mustacchi.Fa page . 27259596c01SRobert MustacchiThe driver should start reading at offset 27359596c01SRobert Mustacchi.Fa offset . 27459596c01SRobert MustacchiFinally, it should update the value in 27559596c01SRobert Mustacchi.Fa nread 27659596c01SRobert Mustacchiwith the number of bytes written to the buffer 27759596c01SRobert Mustacchi.Fa buf . 27859596c01SRobert Mustacchi.Pp 27959596c01SRobert MustacchiIf for some reason the driver cannot read all of the requested bytes, 28059596c01SRobert Mustacchithat is acceptable. 28159596c01SRobert MustacchiInstead it should perform a short read. 28259596c01SRobert MustacchiThis may occur because the transceiver does not allow reads at a 28359596c01SRobert Mustacchirequested region or the region is shorter than is common for most 28459596c01SRobert Mustacchidevices. 28559596c01SRobert Mustacchi.Pp 28659596c01SRobert MustacchiUpon successful completion, the driver should ensure that 28759596c01SRobert Mustacchi.Fa nread 28859596c01SRobert Mustacchihas been updated and then return 28959596c01SRobert Mustacchi.Sy 0 . 29059596c01SRobert MustacchiOtherwise, the driver should return the appropriate error number. 29159596c01SRobert MustacchiFor 29259596c01SRobert Mustacchia full list of error numbers, see 29359596c01SRobert Mustacchi.Xr Intro 2 . 29459596c01SRobert MustacchiCommon values are: 29559596c01SRobert Mustacchi.Bl -tag -width Er -offset width 29659596c01SRobert Mustacchi.It Er EINVAL 29759596c01SRobert MustacchiThe value of 29859596c01SRobert Mustacchi.Fa id 29959596c01SRobert Mustacchirepresented an invalid transceiver identifier. 30059596c01SRobert MustacchiThe transceiver i2c page 30159596c01SRobert Mustacchi.Fa page 30259596c01SRobert Mustacchiis not valid for this type of device. 30359596c01SRobert MustacchiThe value of 30459596c01SRobert Mustacchi.Fa offset 30559596c01SRobert Mustacchiis beyond the range supported for this 30659596c01SRobert Mustacchi.Fa page . 30759596c01SRobert Mustacchi.It Er EIO 30859596c01SRobert MustacchiAn error occurred while trying to read the device i2c pages. 30959596c01SRobert Mustacchi.El 31059596c01SRobert Mustacchi.El 31159596c01SRobert Mustacchi.Ss Transceiver Information Functions 31259596c01SRobert MustacchiThe 31359596c01SRobert Mustacchi.Fn mct_info 31459596c01SRobert Mustacchientry point is the primary required entry point for a device driver 31559596c01SRobert Mustacchiwhich supports this capability. 31659596c01SRobert MustacchiThe information structure is opaque to the device driver. 31759596c01SRobert MustacchiInstead, a series of informational functions is 31859596c01SRobert Mustacchiavailable to the device driver to call on the transceiver. 31959596c01SRobert MustacchiThe device drivers should try to call and fill in as many of these as 32059596c01SRobert Mustacchipossible. 32159596c01SRobert MustacchiThere are two different properties that a driver can set: 32259596c01SRobert Mustacchi.Bl -enum -offset indent 32359596c01SRobert Mustacchi.It 32459596c01SRobert MustacchiWhether the transceiver is present. 32559596c01SRobert Mustacchi.It 32659596c01SRobert MustacchiWhether the transceiver is usable. 32759596c01SRobert Mustacchi.El 32859596c01SRobert Mustacchi.Pp 32959596c01SRobert MustacchiTo set whether or not the transceiver is present, the driver should call 33059596c01SRobert Mustacchi.Xr mac_transceiver_info_set_present 9F . 33159596c01SRobert MustacchiThis is used to indicate whether the transceiver is plugged in or not. 33259596c01SRobert MustacchiIf the transceiver is a part of the NIC, then this function should 33359596c01SRobert Mustacchialways be called with the value set to 33459596c01SRobert Mustacchi.Dv B_TRUE . 33559596c01SRobert Mustacchi.Pp 33659596c01SRobert MustacchiFinally, the driver has the ability to provide information about whether 33759596c01SRobert Mustacchior not the transceiver is usable or not. 33859596c01SRobert MustacchiA transceiver may be present, but not usable, if the hardware and 33959596c01SRobert Mustacchifirmware support a limited number of transceivers. 34059596c01SRobert MustacchiTo set this information, the driver should call 34159596c01SRobert Mustacchi.Xr mac_transceiver_info_set_usable 9F . 34259596c01SRobert MustacchiIf the transceiver is not present, then the driver should not call this 34359596c01SRobert Mustacchifunction. 34459596c01SRobert Mustacchi.Ss Opaque Transceivers 34559596c01SRobert MustacchiSome devices abstract the nature of the transceiver and do not allow 34659596c01SRobert Mustacchidirect access to the transceiver. 34759596c01SRobert MustacchiIn this case, if the device driver still has access to enough 34859596c01SRobert Mustacchiinformation to know if the transceiver is at least present, then it 34959596c01SRobert Mustacchishould still implement the 35059596c01SRobert Mustacchi.Fn mct_info 35159596c01SRobert Mustacchientry point. 35259596c01SRobert Mustacchi.Ss Locking and Data Access 35359596c01SRobert MustacchiCalls to get information about the transceivers may come at the same 35459596c01SRobert Mustacchitime as general I/O requests to the device to send or receive data. 35559596c01SRobert MustacchiThe driver should make sure that reading data from the i2c bus of the 35659596c01SRobert Mustacchitransceiver does not interfere with the device's functionality in this 35759596c01SRobert Mustacchiregard. 35859596c01SRobert MustacchiDifferent locks should be used. 35959596c01SRobert Mustacchi.Pp 36059596c01SRobert MustacchiOn some devices, reading from the transceiver's i2c bus might cause a 36159596c01SRobert Mustacchidisruption of service to the device. 36259596c01SRobert MustacchiFor example, on some devices a phy reset may be required or come about 36359596c01SRobert Mustacchias a side effect of trying to read the device. 36459596c01SRobert MustacchiIf any kind of disruption would be caused, then the driver 36559596c01SRobert Mustacchimust not implement the 36659596c01SRobert Mustacchi.Ft mct_read 36759596c01SRobert Mustacchientry point. 36859596c01SRobert Mustacchi.Sh CONTEXT 36959596c01SRobert MustacchiThe various callback functions will be called from 37059596c01SRobert Mustacchi.Sy kernel 37159596c01SRobert Mustacchicontext. 37259596c01SRobert MustacchiThese functions will never be called from 37359596c01SRobert Mustacchi.Sy interrupt 37459596c01SRobert Mustacchicontext. 37559596c01SRobert Mustacchi.Sh SEE ALSO 37659596c01SRobert Mustacchi.Xr Intro 2 , 37759596c01SRobert Mustacchi.Xr mac 9E , 37859596c01SRobert Mustacchi.Xr mc_getcapab 9E , 37959596c01SRobert Mustacchi.Xr mac_register 9F , 38059596c01SRobert Mustacchi.Xr mac_transceiver_info_set_present 9F , 38159596c01SRobert Mustacchi.Xr mac_transceiver_info_set_usable 9F , 38259596c01SRobert Mustacchi.Xr mac_register 9S 38359596c01SRobert Mustacchi.Rs 38459596c01SRobert Mustacchi.%N INF-8074i 38559596c01SRobert Mustacchi.%T SFP (Small Formfactor Pluggable) Interface 38659596c01SRobert Mustacchi.%Q SFF Committee 38759596c01SRobert Mustacchi.%O Revision 1.0 38859596c01SRobert Mustacchi.%D May 12, 2001 38959596c01SRobert Mustacchi.Re 39059596c01SRobert Mustacchi.Rs 39159596c01SRobert Mustacchi.%N SFF-8472 39259596c01SRobert Mustacchi.%T Diagnostic Monitoring Interface for Optical Transceivers 39359596c01SRobert Mustacchi.%O Revision 12.2 39459596c01SRobert Mustacchi.%D November 21, 2014 39559596c01SRobert Mustacchi.Re 39659596c01SRobert Mustacchi.Rs 39759596c01SRobert Mustacchi.%N SFF-8436 39859596c01SRobert Mustacchi.%T QSFP+ 10 Gbs 4X PLUGGABLE TRANSCEIVER 39959596c01SRobert Mustacchi.%O Revision 4.8 40059596c01SRobert Mustacchi.%D October 31, 2013 40159596c01SRobert Mustacchi.Re 40259596c01SRobert Mustacchi.Rs 40359596c01SRobert Mustacchi.%N SFF-8636 40459596c01SRobert Mustacchi.%T Management Interface for Cabled Environments 40559596c01SRobert Mustacchi.%O Revision 2.7 40659596c01SRobert Mustacchi.%D January 26, 2016 40759596c01SRobert Mustacchi.Re 408