Message ID | 20180110021428.1706-1-jakub.kicinski@netronome.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net] nfp: always unmask aux interrupts at init | expand |
From: Jakub Kicinski <jakub.kicinski@netronome.com> Date: Tue, 9 Jan 2018 18:14:28 -0800 > The link state and exception interrupts may be masked when we probe. > The firmware should in theory prevent sending (and automasking) those > interrupts if the device is disabled, but if my reading of the FW code > is correct there are firmwares out there with race conditions in this > area. The interrupt may also be masked if previous driver which used > the device was malfunctioning and we didn't load the FW (there is no > other good way to comprehensively reset the PF). > > Note that FW unmasks the data interrupts by itself when vNIC is > enabled, such helpful operation is not performed for LSC/EXN interrupts. > > Always unmask the auxiliary interrupts after request_irq(). On the > remove path add missing PCI write flush before free_irq(). > > Fixes: 4c3523623dc0 ("net: add driver for Netronome NFP4000/NFP6000 NIC VFs") > Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> > Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Applied and queued up for -stable, thanks.
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 1a603fdd9e80..99b0487b6d82 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -568,6 +568,7 @@ nfp_net_aux_irq_request(struct nfp_net *nn, u32 ctrl_offset, return err; } nn_writeb(nn, ctrl_offset, entry->entry); + nfp_net_irq_unmask(nn, entry->entry); return 0; } @@ -582,6 +583,7 @@ static void nfp_net_aux_irq_free(struct nfp_net *nn, u32 ctrl_offset, unsigned int vector_idx) { nn_writeb(nn, ctrl_offset, 0xff); + nn_pci_flush(nn); free_irq(nn->irq_entries[vector_idx].vector, nn); }