git: 47cdd7a9ebc6 - stable/14 - cxgbe(4): Add two new transceiver types.

From: Navdeep Parhar <np_at_FreeBSD.org>
Date: Tue, 22 Apr 2025 11:22:53 UTC
The branch stable/14 has been updated by np:

URL: https://cgit.FreeBSD.org/src/commit/?id=47cdd7a9ebc6f8ced53c57cd6d3c322c453caad8

commit 47cdd7a9ebc6f8ced53c57cd6d3c322c453caad8
Author:     Navdeep Parhar <np@FreeBSD.org>
AuthorDate: 2025-03-16 02:26:08 +0000
Commit:     Navdeep Parhar <np@FreeBSD.org>
CommitDate: 2025-04-22 11:12:46 +0000

    cxgbe(4): Add two new transceiver types.
    
    Future firmwares will report these types to the driver.  These
    transceivers work already but are misidentified as a different type.
    
    Sponsored by:   Chelsio Communications
    
    (cherry picked from commit c22b297062e1440676973a8aa89cbad1571e22f9)
---
 sys/dev/cxgbe/firmware/t4fw_interface.h | 2 ++
 sys/dev/cxgbe/t4_main.c                 | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/sys/dev/cxgbe/firmware/t4fw_interface.h b/sys/dev/cxgbe/firmware/t4fw_interface.h
index 686bb55d658b..2794bae9474b 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 1f08a1611f1d..537249c8e5c3 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,