]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: qla2xxx: Add support for 64G SFP speed
authorManish Rangankar <mrangankar@marvell.com>
Wed, 10 Dec 2025 10:15:54 +0000 (15:45 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 17 Dec 2025 03:34:21 +0000 (22:34 -0500)
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 <mrangankar@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Reviewed-by: Himanshu Madhani <hmadhani2024@gmail.com>
Link: https://patch.msgid.link/20251210101604.431868-3-njavali@marvell.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_init.c

index b3265952c4bed90c6c1aa3710265da3968b52d52..e44b51c5a3eb865bd1533a29c649a4696b1baac2 100644 (file)
@@ -5368,7 +5368,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;
@@ -5412,6 +5412,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;
@@ -5430,7 +5431,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;
index 29dabcaada33f91577f881f164e5cfecd5cb773a..3aba4e86618fa7ae5b7d6dbf0423050b6efea6aa 100644 (file)
@@ -4075,9 +4075,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" : "",