fm10k: Cleanup exception handling for mailbox interrupt
This patch addresses two issues. First is the fact that the fm10k_mbx_free_irq was assuming msix_entries was valid and that will not always be the case. As such we need to add a check for if it is NULL. Second is the fact that we weren't freeing the IRQ if the mailbox API returned an error on trying to connect. Signed-off-by: Alexander Duyck <aduyck@mirantis.com> Reviewed-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Krishneil Singh <Krishneil.k.singh@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
587731e684
commit
e00e23bceb
|
@ -1124,6 +1124,10 @@ void fm10k_mbx_free_irq(struct fm10k_intfc *interface)
|
|||
struct fm10k_hw *hw = &interface->hw;
|
||||
int itr_reg;
|
||||
|
||||
/* no mailbox IRQ to free if MSI-X is not enabled */
|
||||
if (!interface->msix_entries)
|
||||
return;
|
||||
|
||||
/* disconnect the mailbox */
|
||||
hw->mbx.ops.disconnect(hw, &hw->mbx);
|
||||
|
||||
|
@ -1446,10 +1450,15 @@ int fm10k_mbx_request_irq(struct fm10k_intfc *interface)
|
|||
err = fm10k_mbx_request_irq_pf(interface);
|
||||
else
|
||||
err = fm10k_mbx_request_irq_vf(interface);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* connect mailbox */
|
||||
if (!err)
|
||||
err = hw->mbx.ops.connect(hw, &hw->mbx);
|
||||
err = hw->mbx.ops.connect(hw, &hw->mbx);
|
||||
|
||||
/* if the mailbox failed to connect, then free IRQ */
|
||||
if (err)
|
||||
fm10k_mbx_free_irq(interface);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue