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