|
@@ -1014,6 +1014,8 @@ int qlcnic_init_pci_info(struct qlcnic_adapter *adapter)
|
|
|
|
|
|
|
|
if (pfn >= ahw->max_vnic_func) {
|
|
if (pfn >= ahw->max_vnic_func) {
|
|
|
ret = QL_STATUS_INVALID_PARAM;
|
|
ret = QL_STATUS_INVALID_PARAM;
|
|
|
|
|
+ dev_err(&adapter->pdev->dev, "%s: Invalid function 0x%x, max 0x%x\n",
|
|
|
|
|
+ __func__, pfn, ahw->max_vnic_func);
|
|
|
goto err_eswitch;
|
|
goto err_eswitch;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2052,6 +2054,7 @@ void qlcnic_diag_free_res(struct net_device *netdev, int drv_sds_rings)
|
|
|
|
|
|
|
|
static int qlcnic_alloc_adapter_resources(struct qlcnic_adapter *adapter)
|
|
static int qlcnic_alloc_adapter_resources(struct qlcnic_adapter *adapter)
|
|
|
{
|
|
{
|
|
|
|
|
+ struct qlcnic_hardware_context *ahw = adapter->ahw;
|
|
|
int err = 0;
|
|
int err = 0;
|
|
|
|
|
|
|
|
adapter->recv_ctx = kzalloc(sizeof(struct qlcnic_recv_context),
|
|
adapter->recv_ctx = kzalloc(sizeof(struct qlcnic_recv_context),
|
|
@@ -2061,6 +2064,18 @@ static int qlcnic_alloc_adapter_resources(struct qlcnic_adapter *adapter)
|
|
|
goto err_out;
|
|
goto err_out;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (qlcnic_83xx_check(adapter)) {
|
|
|
|
|
+ ahw->coal.type = QLCNIC_INTR_COAL_TYPE_RX_TX;
|
|
|
|
|
+ ahw->coal.tx_time_us = QLCNIC_DEF_INTR_COALESCE_TX_TIME_US;
|
|
|
|
|
+ ahw->coal.tx_packets = QLCNIC_DEF_INTR_COALESCE_TX_PACKETS;
|
|
|
|
|
+ ahw->coal.rx_time_us = QLCNIC_DEF_INTR_COALESCE_RX_TIME_US;
|
|
|
|
|
+ ahw->coal.rx_packets = QLCNIC_DEF_INTR_COALESCE_RX_PACKETS;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ahw->coal.type = QLCNIC_INTR_COAL_TYPE_RX;
|
|
|
|
|
+ ahw->coal.rx_time_us = QLCNIC_DEF_INTR_COALESCE_RX_TIME_US;
|
|
|
|
|
+ ahw->coal.rx_packets = QLCNIC_DEF_INTR_COALESCE_RX_PACKETS;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/* clear stats */
|
|
/* clear stats */
|
|
|
memset(&adapter->stats, 0, sizeof(adapter->stats));
|
|
memset(&adapter->stats, 0, sizeof(adapter->stats));
|
|
|
err_out:
|
|
err_out:
|
|
@@ -2517,9 +2532,11 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
case -ENOMEM:
|
|
case -ENOMEM:
|
|
|
dev_err(&pdev->dev, "Adapter initialization failed. Please reboot\n");
|
|
dev_err(&pdev->dev, "Adapter initialization failed. Please reboot\n");
|
|
|
goto err_out_free_hw;
|
|
goto err_out_free_hw;
|
|
|
|
|
+ case -EOPNOTSUPP:
|
|
|
|
|
+ dev_err(&pdev->dev, "Adapter initialization failed\n");
|
|
|
|
|
+ goto err_out_free_hw;
|
|
|
default:
|
|
default:
|
|
|
- dev_err(&pdev->dev, "Adapter initialization failed. A reboot may be required to recover from this failure\n");
|
|
|
|
|
- dev_err(&pdev->dev, "If reboot does not help to recover from this failure, try a flash update of the adapter\n");
|
|
|
|
|
|
|
+ dev_err(&pdev->dev, "Adapter initialization failed. Driver will load in maintenance mode to recover the adapter using the application\n");
|
|
|
goto err_out_maintenance_mode;
|
|
goto err_out_maintenance_mode;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -2593,7 +2610,7 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
qlcnic_alloc_lb_filters_mem(adapter);
|
|
qlcnic_alloc_lb_filters_mem(adapter);
|
|
|
|
|
|
|
|
qlcnic_add_sysfs(adapter);
|
|
qlcnic_add_sysfs(adapter);
|
|
|
-
|
|
|
|
|
|
|
+ qlcnic_register_hwmon_dev(adapter);
|
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
|
|
err_out_disable_mbx_intr:
|
|
err_out_disable_mbx_intr:
|
|
@@ -2700,6 +2717,8 @@ static void qlcnic_remove(struct pci_dev *pdev)
|
|
|
|
|
|
|
|
qlcnic_remove_sysfs(adapter);
|
|
qlcnic_remove_sysfs(adapter);
|
|
|
|
|
|
|
|
|
|
+ qlcnic_unregister_hwmon_dev(adapter);
|
|
|
|
|
+
|
|
|
qlcnic_cleanup_pci_map(adapter->ahw);
|
|
qlcnic_cleanup_pci_map(adapter->ahw);
|
|
|
|
|
|
|
|
qlcnic_release_firmware(adapter);
|
|
qlcnic_release_firmware(adapter);
|