scsi: fnic: Add and improve logs in FDMI and FDMI ABTS paths
authorKaran Tilak Kumar <kartilak@cisco.com>
Wed, 18 Jun 2025 00:34:30 +0000 (17:34 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 20 Jun 2025 03:06:28 +0000 (23:06 -0400)
Add logs in FDMI and FDMI ABTS paths.

Modify log text in these paths.

Reviewed-by: Sesidhar Baddela <sebaddel@cisco.com>
Reviewed-by: Arulprabhu Ponnusamy <arulponn@cisco.com>
Reviewed-by: Gian Carlo Boffa <gcboffa@cisco.com>
Reviewed-by: Arun Easi <aeasi@cisco.com>
Reviewed-by: John Meneghini <jmeneghi@redhat.com>
Signed-off-by: Karan Tilak Kumar <kartilak@cisco.com>
Link: https://lore.kernel.org/r/20250618003431.6314-3-kartilak@cisco.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/fnic/fdls_disc.c

index fa9cf0b37d72ff2cf48ff2c567213a2aa7bba9bc..ae37f85f618b593738e0b018c289d814aca7a1e3 100644 (file)
@@ -791,6 +791,7 @@ static uint8_t *fdls_alloc_init_fdmi_abts_frame(struct fnic_iport_s *iport,
 static void fdls_send_fdmi_abts(struct fnic_iport_s *iport)
 {
        uint8_t *frame;
+       struct fnic *fnic = iport->fnic;
        unsigned long fdmi_tov;
        uint16_t frame_size = FNIC_ETH_FCOE_HDRS_OFFSET +
                        sizeof(struct fc_frame_header);
@@ -801,6 +802,9 @@ static void fdls_send_fdmi_abts(struct fnic_iport_s *iport)
                if (frame == NULL)
                        return;
 
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                        "0x%x: FDLS send FDMI PLOGI abts. iport->fabric.state: %d oxid: 0x%x",
+                        iport->fcid, iport->fabric.state, iport->active_oxid_fdmi_plogi);
                fnic_send_fcoe_frame(iport, frame, frame_size);
        } else {
                if (iport->fabric.fdmi_pending & FDLS_FDMI_REG_HBA_PENDING) {
@@ -809,6 +813,9 @@ static void fdls_send_fdmi_abts(struct fnic_iport_s *iport)
                        if (frame == NULL)
                                return;
 
+                       FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                                "0x%x: FDLS send FDMI RHBA abts. iport->fabric.state: %d oxid: 0x%x",
+                                iport->fcid, iport->fabric.state, iport->active_oxid_fdmi_rhba);
                        fnic_send_fcoe_frame(iport, frame, frame_size);
                }
                if (iport->fabric.fdmi_pending & FDLS_FDMI_RPA_PENDING) {
@@ -821,6 +828,9 @@ static void fdls_send_fdmi_abts(struct fnic_iport_s *iport)
                                        return;
                        }
 
+                       FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                                "0x%x: FDLS send FDMI RPA abts. iport->fabric.state: %d oxid: 0x%x",
+                                iport->fcid, iport->fabric.state, iport->active_oxid_fdmi_rpa);
                        fnic_send_fcoe_frame(iport, frame, frame_size);
                }
        }
@@ -829,6 +839,10 @@ arm_timer:
        fdmi_tov = jiffies + msecs_to_jiffies(2 * iport->e_d_tov);
        mod_timer(&iport->fabric.fdmi_timer, round_jiffies(fdmi_tov));
        iport->fabric.fdmi_pending |= FDLS_FDMI_ABORT_PENDING;
+
+       FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                "0x%x: iport->fabric.fdmi_pending: 0x%x",
+                iport->fcid, iport->fabric.fdmi_pending);
 }
 
 static void fdls_send_fabric_flogi(struct fnic_iport_s *iport)
@@ -2294,7 +2308,7 @@ void fdls_fdmi_timer_callback(struct timer_list *t)
        spin_lock_irqsave(&fnic->fnic_lock, flags);
 
        FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
-               "fdmi timer callback : 0x%x\n", iport->fabric.fdmi_pending);
+               "iport->fabric.fdmi_pending: 0x%x\n", iport->fabric.fdmi_pending);
 
        if (!iport->fabric.fdmi_pending) {
                /* timer expired after fdmi responses received. */
@@ -2302,7 +2316,7 @@ void fdls_fdmi_timer_callback(struct timer_list *t)
                return;
        }
        FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
-               "fdmi timer callback : 0x%x\n", iport->fabric.fdmi_pending);
+               "iport->fabric.fdmi_pending: 0x%x\n", iport->fabric.fdmi_pending);
 
        /* if not abort pending, send an abort */
        if (!(iport->fabric.fdmi_pending & FDLS_FDMI_ABORT_PENDING)) {
@@ -2311,26 +2325,37 @@ void fdls_fdmi_timer_callback(struct timer_list *t)
                return;
        }
        FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
-               "fdmi timer callback : 0x%x\n", iport->fabric.fdmi_pending);
+               "iport->fabric.fdmi_pending: 0x%x\n", iport->fabric.fdmi_pending);
 
        /* ABTS pending for an active fdmi request that is pending.
         * That means FDMI ABTS timed out
         * Schedule to free the OXID after 2*r_a_tov and proceed
         */
        if (iport->fabric.fdmi_pending & FDLS_FDMI_PLOGI_PENDING) {
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                       "FDMI PLOGI ABTS timed out. Schedule oxid free: 0x%x\n",
+                       iport->active_oxid_fdmi_plogi);
                fdls_schedule_oxid_free(iport, &iport->active_oxid_fdmi_plogi);
        } else {
-               if (iport->fabric.fdmi_pending & FDLS_FDMI_REG_HBA_PENDING)
+               if (iport->fabric.fdmi_pending & FDLS_FDMI_REG_HBA_PENDING) {
+                       FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                                               "FDMI RHBA ABTS timed out. Schedule oxid free: 0x%x\n",
+                                               iport->active_oxid_fdmi_rhba);
                        fdls_schedule_oxid_free(iport, &iport->active_oxid_fdmi_rhba);
-               if (iport->fabric.fdmi_pending & FDLS_FDMI_RPA_PENDING)
+               }
+               if (iport->fabric.fdmi_pending & FDLS_FDMI_RPA_PENDING) {
+                       FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                                               "FDMI RPA ABTS timed out. Schedule oxid free: 0x%x\n",
+                                               iport->active_oxid_fdmi_rpa);
                        fdls_schedule_oxid_free(iport, &iport->active_oxid_fdmi_rpa);
+               }
        }
        FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
-               "fdmi timer callback : 0x%x\n", iport->fabric.fdmi_pending);
+               "iport->fabric.fdmi_pending: 0x%x\n", iport->fabric.fdmi_pending);
 
        fdls_fdmi_retry_plogi(iport);
        FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
-               "fdmi timer callback : 0x%x\n", iport->fabric.fdmi_pending);
+               "iport->fabric.fdmi_pending: 0x%x\n", iport->fabric.fdmi_pending);
        spin_unlock_irqrestore(&fnic->fnic_lock, flags);
 }
 
@@ -3745,12 +3770,26 @@ static void fdls_process_fdmi_abts_rsp(struct fnic_iport_s *iport,
 
        switch (FNIC_FRAME_TYPE(oxid)) {
        case FNIC_FRAME_TYPE_FDMI_PLOGI:
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                       "Received FDMI PLOGI ABTS rsp with oxid: 0x%x", oxid);
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                        "0x%x: iport->fabric.fdmi_pending: 0x%x",
+                        iport->fcid, iport->fabric.fdmi_pending);
                fdls_free_oxid(iport, oxid, &iport->active_oxid_fdmi_plogi);
 
                iport->fabric.fdmi_pending &= ~FDLS_FDMI_PLOGI_PENDING;
                iport->fabric.fdmi_pending &= ~FDLS_FDMI_ABORT_PENDING;
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                        "0x%x: iport->fabric.fdmi_pending: 0x%x",
+                        iport->fcid, iport->fabric.fdmi_pending);
                break;
        case FNIC_FRAME_TYPE_FDMI_RHBA:
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                       "Received FDMI RHBA ABTS rsp with oxid: 0x%x", oxid);
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                        "0x%x: iport->fabric.fdmi_pending: 0x%x",
+                        iport->fcid, iport->fabric.fdmi_pending);
+
                iport->fabric.fdmi_pending &= ~FDLS_FDMI_REG_HBA_PENDING;
 
                /* If RPA is still pending, don't turn off ABORT PENDING.
@@ -3761,8 +3800,17 @@ static void fdls_process_fdmi_abts_rsp(struct fnic_iport_s *iport,
                        iport->fabric.fdmi_pending &= ~FDLS_FDMI_ABORT_PENDING;
 
                fdls_free_oxid(iport, oxid, &iport->active_oxid_fdmi_rhba);
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                        "0x%x: iport->fabric.fdmi_pending: 0x%x",
+                        iport->fcid, iport->fabric.fdmi_pending);
                break;
        case FNIC_FRAME_TYPE_FDMI_RPA:
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                       "Received FDMI RPA ABTS rsp with oxid: 0x%x", oxid);
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                        "0x%x: iport->fabric.fdmi_pending: 0x%x",
+                        iport->fcid, iport->fabric.fdmi_pending);
+
                iport->fabric.fdmi_pending &= ~FDLS_FDMI_RPA_PENDING;
 
                /* If RHBA is still pending, don't turn off ABORT PENDING.
@@ -3773,6 +3821,9 @@ static void fdls_process_fdmi_abts_rsp(struct fnic_iport_s *iport,
                        iport->fabric.fdmi_pending &= ~FDLS_FDMI_ABORT_PENDING;
 
                fdls_free_oxid(iport, oxid, &iport->active_oxid_fdmi_rpa);
+               FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
+                        "0x%x: iport->fabric.fdmi_pending: 0x%x",
+                        iport->fcid, iport->fabric.fdmi_pending);
                break;
        default:
                FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,