Implement support for selecting SGMII or SerDes mode depending on the
authorpatrick <patrick@openbsd.org>
Tue, 14 Dec 2021 10:48:10 +0000 (10:48 +0000)
committerpatrick <patrick@openbsd.org>
Tue, 14 Dec 2021 10:48:10 +0000 (10:48 +0000)
commit859a437b422bee3d8e924a88184a68f4fbd8ed6d
treef28b37d1acda0298e3325f420dc1ebf3759f9558
parent1dde9cbe0db4ff20c3d2802bf4d1dcbebdc55459
Implement support for selecting SGMII or SerDes mode depending on the
plugged-in SFP transceiver and for reading out transceiver information
via ifconfig(8).  To read from the SFP, we need to let the card issue
I2C transfers.  Additionally we need I2C to read/write to the PHY when
MDIO is not available.  Depending on the SFP's supported media types
we can decide which mode to use.

This fixes hardware-initialization and link-up problems with some em(4)
Fiber NIC and SFP combinations.

Tested by dlg@ and been in snaps for quite a while
ok dlg@ jmatthew@
sys/dev/pci/if_em.c
sys/dev/pci/if_em.h
sys/dev/pci/if_em_hw.c
sys/dev/pci/if_em_hw.h