diff options
author | Sucheta Chakraborty <sucheta.chakraborty@qlogic.com> | 2014-04-25 17:44:00 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-04-27 23:20:53 -0400 |
commit | aaecf51cf31160262b29a6d50f364f4a76c7ed1e (patch) | |
tree | 06479eec7d9e0dbcde8007a2e1bf653039fc5249 /drivers | |
parent | c65762fc2fc8a85c3d8a2024c17815e1a0f5dff0 (diff) |
qlcnic: Limit vNIC support in legacy interrupt mode
o When the driver loads in legacy interrupt mode, only vNICs
with PCI function number 0-7 are supported.
Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 10 | ||||
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c index 4ea15bafe53f..7c125d7fb547 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | |||
@@ -33,6 +33,7 @@ static void qlcnic_83xx_get_beacon_state(struct qlcnic_adapter *); | |||
33 | #define RSS_HASHTYPE_IP_TCP 0x3 | 33 | #define RSS_HASHTYPE_IP_TCP 0x3 |
34 | #define QLC_83XX_FW_MBX_CMD 0 | 34 | #define QLC_83XX_FW_MBX_CMD 0 |
35 | #define QLC_SKIP_INACTIVE_PCI_REGS 7 | 35 | #define QLC_SKIP_INACTIVE_PCI_REGS 7 |
36 | #define QLC_MAX_LEGACY_FUNC_SUPP 8 | ||
36 | 37 | ||
37 | static const struct qlcnic_mailbox_metadata qlcnic_83xx_mbx_tbl[] = { | 38 | static const struct qlcnic_mailbox_metadata qlcnic_83xx_mbx_tbl[] = { |
38 | {QLCNIC_CMD_CONFIGURE_IP_ADDR, 6, 1}, | 39 | {QLCNIC_CMD_CONFIGURE_IP_ADDR, 6, 1}, |
@@ -357,8 +358,15 @@ int qlcnic_83xx_setup_intr(struct qlcnic_adapter *adapter) | |||
357 | if (!ahw->intr_tbl) | 358 | if (!ahw->intr_tbl) |
358 | return -ENOMEM; | 359 | return -ENOMEM; |
359 | 360 | ||
360 | if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) | 361 | if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) { |
362 | if (adapter->ahw->pci_func >= QLC_MAX_LEGACY_FUNC_SUPP) { | ||
363 | dev_err(&adapter->pdev->dev, "PCI function number 8 and higher are not supported with legacy interrupt, func 0x%x\n", | ||
364 | ahw->pci_func); | ||
365 | return -EOPNOTSUPP; | ||
366 | } | ||
367 | |||
361 | qlcnic_83xx_enable_legacy(adapter); | 368 | qlcnic_83xx_enable_legacy(adapter); |
369 | } | ||
362 | 370 | ||
363 | for (i = 0; i < num_msix; i++) { | 371 | for (i = 0; i < num_msix; i++) { |
364 | if (adapter->flags & QLCNIC_MSIX_ENABLED) | 372 | if (adapter->flags & QLCNIC_MSIX_ENABLED) |
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index f2c9a199295d..7023d358baa9 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | |||
@@ -2532,6 +2532,9 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
2532 | case -ENOMEM: | 2532 | case -ENOMEM: |
2533 | dev_err(&pdev->dev, "Adapter initialization failed. Please reboot\n"); | 2533 | dev_err(&pdev->dev, "Adapter initialization failed. Please reboot\n"); |
2534 | goto err_out_free_hw; | 2534 | goto err_out_free_hw; |
2535 | case -EOPNOTSUPP: | ||
2536 | dev_err(&pdev->dev, "Adapter initialization failed\n"); | ||
2537 | goto err_out_free_hw; | ||
2535 | default: | 2538 | default: |
2536 | dev_err(&pdev->dev, "Adapter initialization failed. Driver will load in maintenance mode to recover the adapter using the application\n"); | 2539 | dev_err(&pdev->dev, "Adapter initialization failed. Driver will load in maintenance mode to recover the adapter using the application\n"); |
2537 | goto err_out_maintenance_mode; | 2540 | goto err_out_maintenance_mode; |