When the the fiber transceiver of the ixgbe NIC is external, sometimes it is necessary to get the present/absent status of the fiber transceiver of the ixgbe NIC.
The steps to get the present/absent status: The NIC enp1s0f0 is an external ixgbe fiber NIC. ethtool enp1s0f0 ... Port: FIBRE PHYAD: 0 Transceiver: external(present) <---The transceiver is present. Auto-negotiation: on Supports Wake-on: d ... Or ... Port: FIBRE PHYAD: 0 Transceiver: external(absent) <---The transceiver is absent Auto-negotiation: on Supports Wake-on: d ... Signed-off-by: Zhu Yanjun <yanjun....@oracle.com> --- ethtool-copy.h | 2 ++ ethtool.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/ethtool-copy.h b/ethtool-copy.h index 3d299e3..1c6db9a 100644 --- a/ethtool-copy.h +++ b/ethtool-copy.h @@ -1536,6 +1536,8 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex) #define XCVR_DUMMY1 0x02 #define XCVR_DUMMY2 0x03 #define XCVR_DUMMY3 0x04 +#define XCVR_EXTERNAL_ABSENT 0x05 +#define XCVR_EXTERNAL_PRESENT 0x06 /* Enable or disable autonegotiation. */ #define AUTONEG_DISABLE 0x00 diff --git a/ethtool.c b/ethtool.c index 7af039e..85cf5a2 100644 --- a/ethtool.c +++ b/ethtool.c @@ -811,6 +811,12 @@ dump_link_usettings(const struct ethtool_link_usettings *link_usettings) case XCVR_EXTERNAL: fprintf(stdout, "external\n"); break; + case XCVR_EXTERNAL_PRESENT: + fprintf(stdout, "external(present)\n"); + break; + case XCVR_EXTERNAL_ABSENT: + fprintf(stdout, "external(absent)\n"); + break; default: fprintf(stdout, "Unknown!\n"); break; -- 2.7.4