diff options
author | Andrew Rybchenko <Andrew.Rybchenko@oktetlabs.ru> | 2017-02-13 14:57:39 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-02-14 12:43:18 -0500 |
commit | 6f9f6ec2e0acea398caf83bf750439c69068de43 (patch) | |
tree | 4a84643ad69a874dc222a1b08e7c209841a377ea /drivers/net/ethernet/sfc/efx.c | |
parent | 9b8e1056dbad7ea3f1bcd3db0ea7cf6682d077b1 (diff) | |
download | linux-6f9f6ec2e0acea398caf83bf750439c69068de43.tar.bz2 |
sfc: MSI-X is the only interrupt mode for EF10 VFs
Add min_interrupt_mode specification per NIC type.
It is a bit confusing because of "highest interrupt mode is less capable".
Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/efx.c')
-rw-r--r-- | drivers/net/ethernet/sfc/efx.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c index cb8e2c3f806a..88a9f97c0c4f 100644 --- a/drivers/net/ethernet/sfc/efx.c +++ b/drivers/net/ethernet/sfc/efx.c @@ -2935,7 +2935,7 @@ static const struct efx_phy_operations efx_dummy_phy_operations = { static int efx_init_struct(struct efx_nic *efx, struct pci_dev *pci_dev, struct net_device *net_dev) { - int i; + int rc = -ENOMEM, i; /* Initialise common structures */ INIT_LIST_HEAD(&efx->node); @@ -2976,8 +2976,15 @@ static int efx_init_struct(struct efx_nic *efx, } /* Higher numbered interrupt modes are less capable! */ + if (WARN_ON_ONCE(efx->type->max_interrupt_mode > + efx->type->min_interrupt_mode)) { + rc = -EIO; + goto fail; + } efx->interrupt_mode = max(efx->type->max_interrupt_mode, interrupt_mode); + efx->interrupt_mode = min(efx->type->min_interrupt_mode, + interrupt_mode); /* Would be good to use the net_dev name, but we're too early */ snprintf(efx->workqueue_name, sizeof(efx->workqueue_name), "sfc%s", @@ -2990,7 +2997,7 @@ static int efx_init_struct(struct efx_nic *efx, fail: efx_fini_struct(efx); - return -ENOMEM; + return rc; } static void efx_fini_struct(struct efx_nic *efx) |