[lkml]   [2021]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH 5.4 13/33] netxen_nic: fix MSI/MSI-x interrupts
    From: Manish Chopra <>

    [ Upstream commit a2bc221b972db91e4be1970e776e98f16aa87904 ]

    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 <>
    Signed-off-by: Igor Russkikh <>
    Signed-off-by: Jakub Kicinski <>
    Signed-off-by: Greg Kroah-Hartman <>
    drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | 7 +------
    1 file changed, 1 insertion(+), 6 deletions(-)

    --- 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 const struct net_device_ops netxe
    .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 netx
    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);

     \ /
      Last update: 2021-01-22 19:48    [W:2.204 / U:2.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site