Message ID | 20210107101520.6735-1-manishc@marvell.com |
---|---|
State | Accepted |
Commit | a2bc221b972db91e4be1970e776e98f16aa87904 |
Headers | show |
Series | [net,1/1] netxen_nic: fix MSI/MSI-x interrupts | expand |
On Thu, 7 Jan 2021 02:15:20 -0800 Manish Chopra wrote: > For all PCI functions on the netxen_nic adapter, interrupt > mode (INTx or MSI) configuration is dependent on what has > been configured by the PCI function zero in the shared > interrupt register, as these adapters do not support mixed > mode interrupts among the functions of a given adapter. > > Logic for setting MSI/MSI-x interrupt mode in the shared interrupt > register based on PCI function id zero check is not appropriate for > all family of netxen adapters, as for some of the netxen family > adapters PCI function zero is not really meant to be probed/loaded > in the host but rather just act as a management function on the device, > which caused all the other PCI functions on the adapter to always use > legacy interrupt (INTx) mode instead of choosing MSI/MSI-x interrupt mode. > > This patch replaces that check with port number so that for all > type of adapters driver attempts for MSI/MSI-x interrupt modes. > > Fixes: b37eb210c076 ("netxen_nic: Avoid mixed mode interrupts") > Signed-off-by: Manish Chopra <manishc@marvell.com> > Signed-off-by: Igor Russkikh <irusskikh@marvell.com> Interesting that nobody noticed this for 7 years. Applied, thanks.
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c index f218477..d258e0c 100644 --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c @@ -564,11 +564,6 @@ static int netxen_set_features(struct net_device *dev, .ndo_set_features = netxen_set_features, }; -static inline bool netxen_function_zero(struct pci_dev *pdev) -{ - return (PCI_FUNC(pdev->devfn) == 0) ? true : false; -} - static inline void netxen_set_interrupt_mode(struct netxen_adapter *adapter, u32 mode) { @@ -664,7 +659,7 @@ static int netxen_setup_intr(struct netxen_adapter *adapter) netxen_initialize_interrupt_registers(adapter); netxen_set_msix_bit(pdev, 0); - if (netxen_function_zero(pdev)) { + if (adapter->portnum == 0) { if (!netxen_setup_msi_interrupts(adapter, num_msix)) netxen_set_interrupt_mode(adapter, NETXEN_MSI_MODE); else