https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=288077

            Bug ID: 288077
           Summary: ixl driver does not properly reenable interrupts for
                    msi.
           Product: Base System
           Version: 13.5-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: [email protected]
          Reporter: [email protected]

If msix is disabled or unavailable, msi interrupts are not properly reenabled.

The issue is in ixl_if_enable_intr.  It is not consistent with what is being
done in ixl_if_disable_intr.

Changing the following:

        ixl_enable_intr0(hw);
        /* Enable queue interrupts */
        for (int i = 0; i < vsi->num_rx_queues; i++, que++)
                /* TODO: Queue index parameter is probably wrong */
                ixl_enable_queue(hw, que->rxr.me);

to:
        if (vsi->shared->isc_intr == IFLIB_INTR_MSIX) {
                ixl_enable_intr0(hw);
                /* Enable queue interrupts */
                for (int i = 0; i < vsi->num_rx_queues; i++, que++)
                        /* TODO: Queue index parameter is probably wrong */
                        ixl_enable_queue(hw, que->rxr.me);
        } else {
                /*
                 * Set PFINT_LNKLST0 FIRSTQ_INDX to 0x00
                 * starts queues - allows interrupts
                 */
                wr32(hw, I40E_PFINT_LNKLST0, 0x0);
        }

will resolve the issue.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to