From fb7adec212ee2301eef0ff287e27c73f0cccd3fa Mon Sep 17 00:00:00 2001 From: Gleb Chesnokov Date: Thu, 9 Apr 2026 19:34:01 +0300 Subject: [PATCH] qla2x00t-32gbit: Add support for 64G SFP speed Incorrect speed info is shown in driver logs for 64G SFP. Add support for 64G SFP speed as per SFF-8472 specification. Signed-off-by: Manish Rangankar Signed-off-by: Nilesh Javali Reviewed-by: Himanshu Madhani Link: https://patch.msgid.link/20251210101604.431868-3-njavali@marvell.com Signed-off-by: Martin K. Petersen [ commit 21ab087cae50 upstream ] --- qla2x00t-32gbit/qla_def.h | 6 ++++-- qla2x00t-32gbit/qla_init.c | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/qla2x00t-32gbit/qla_def.h b/qla2x00t-32gbit/qla_def.h index de9ca24e5..83ef5d32e 100644 --- a/qla2x00t-32gbit/qla_def.h +++ b/qla2x00t-32gbit/qla_def.h @@ -5431,7 +5431,7 @@ struct edif_sa_index_entry { struct list_head next; }; -/* Refer to SNIA SFF 8247 */ +/* Refer to SNIA SFF 8472 */ struct sff_8247_a0 { u8 txid; /* transceiver id */ u8 ext_txid; @@ -5475,6 +5475,7 @@ struct sff_8247_a0 { #define FC_SP_32 BIT_3 #define FC_SP_2 BIT_2 #define FC_SP_1 BIT_0 +#define FC_SPEED_2 BIT_1 u8 fc_sp_cc10; u8 encode; u8 bitrate; @@ -5493,7 +5494,8 @@ struct sff_8247_a0 { u8 vendor_pn[SFF_PART_NAME_LEN]; /* part number */ u8 vendor_rev[4]; u8 wavelength[2]; - u8 resv; +#define FC_SP_64 BIT_0 + u8 fiber_channel_speed2; u8 cc_base; u8 options[2]; /* offset 64 */ u8 br_max; diff --git a/qla2x00t-32gbit/qla_init.c b/qla2x00t-32gbit/qla_init.c index 1d2791ff3..9a3cb4110 100644 --- a/qla2x00t-32gbit/qla_init.c +++ b/qla2x00t-32gbit/qla_init.c @@ -4078,9 +4078,11 @@ static void qla2xxx_print_sfp_info(struct scsi_qla_host *vha) int leftover, len; ql_dbg(ql_dbg_init, vha, 0x015a, - "SFP: %.*s -> %.*s ->%s%s%s%s%s%s\n", + "SFP: %.*s -> %.*s ->%s%s%s%s%s%s%s\n", (int)sizeof(a0->vendor_name), a0->vendor_name, (int)sizeof(a0->vendor_pn), a0->vendor_pn, + a0->fc_sp_cc10 & FC_SP_2 ? a0->fiber_channel_speed2 & FC_SP_64 ? + " 64G" : "" : "", a0->fc_sp_cc10 & FC_SP_32 ? " 32G" : "", a0->fc_sp_cc10 & FC_SP_16 ? " 16G" : "", a0->fc_sp_cc10 & FC_SP_8 ? " 8G" : "",