diff --git a/sys/dev/cxgbe/firmware/t4fw_interface.h b/sys/dev/cxgbe/firmware/t4fw_interface.h index 686bb55d658..2794bae9474 100644 --- a/sys/dev/cxgbe/firmware/t4fw_interface.h +++ b/sys/dev/cxgbe/firmware/t4fw_interface.h @@ -7820,6 +7820,8 @@ enum fw_port_module_type { FW_PORT_MOD_TYPE_TWINAX_PASSIVE = 0x4, FW_PORT_MOD_TYPE_TWINAX_ACTIVE = 0x5, FW_PORT_MOD_TYPE_LRM = 0x6, + FW_PORT_MOD_TYPE_LR_SIMPLEX = 0x7, + FW_PORT_MOD_TYPE_DR = 0x8, FW_PORT_MOD_TYPE_ERROR = M_FW_PORT_CMD_MODTYPE - 3, FW_PORT_MOD_TYPE_UNKNOWN = M_FW_PORT_CMD_MODTYPE - 2, FW_PORT_MOD_TYPE_NOTSUPPORTED = M_FW_PORT_CMD_MODTYPE - 1, diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index 1f08a1611f1..537249c8e5c 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -3549,6 +3549,7 @@ port_mword(struct port_info *pi, uint32_t speed) /* Pluggable transceiver */ switch (pi->mod_type) { case FW_PORT_MOD_TYPE_LR: + case FW_PORT_MOD_TYPE_LR_SIMPLEX: switch (speed) { case FW_PORT_CAP32_SPEED_1G: return (IFM_1000_LX); @@ -3605,6 +3606,10 @@ port_mword(struct port_info *pi, uint32_t speed) if (speed == FW_PORT_CAP32_SPEED_10G) return (IFM_10G_LRM); break; + case FW_PORT_MOD_TYPE_DR: + if (speed == FW_PORT_CAP32_SPEED_100G) + return (IFM_100G_DR); + break; case FW_PORT_MOD_TYPE_NA: MPASS(0); /* Not pluggable? */ /* fall throough */ @@ -12224,7 +12229,8 @@ t4_os_portmod_changed(struct port_info *pi) struct vi_info *vi; if_t ifp; static const char *mod_str[] = { - NULL, "LR", "SR", "ER", "TWINAX", "active TWINAX", "LRM" + NULL, "LR", "SR", "ER", "TWINAX", "active TWINAX", "LRM", + "LR_SIMPLEX", "DR" }; KASSERT((pi->flags & FIXED_IFMEDIA) == 0,