git: c22b297062e1 - main - cxgbe(4): Add two new transceiver types.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 18 Mar 2025 19:23:31 UTC
The branch main has been updated by np:
URL: https://cgit.FreeBSD.org/src/commit/?id=c22b297062e1440676973a8aa89cbad1571e22f9
commit c22b297062e1440676973a8aa89cbad1571e22f9
Author: Navdeep Parhar <np@FreeBSD.org>
AuthorDate: 2025-03-16 02:26:08 +0000
Commit: Navdeep Parhar <np@FreeBSD.org>
CommitDate: 2025-03-18 18:36:00 +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.
MFC after: 1 month
Sponsored by: Chelsio Communications
---
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 20df6a97aa87..9e91250cb61c 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -3537,6 +3537,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);
@@ -3593,6 +3594,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 */
@@ -12210,7 +12215,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,