|
@@ -192,6 +192,7 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
|
|
|
if (adapter->fw_done_rc) {
|
|
|
dev_err(dev, "Couldn't map long term buffer,rc = %d\n",
|
|
|
adapter->fw_done_rc);
|
|
|
+ dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
|
|
|
return -1;
|
|
|
}
|
|
|
return 0;
|
|
@@ -1821,9 +1822,8 @@ static int do_reset(struct ibmvnic_adapter *adapter,
|
|
|
if (rc)
|
|
|
return rc;
|
|
|
}
|
|
|
+ ibmvnic_disable_irqs(adapter);
|
|
|
}
|
|
|
-
|
|
|
- ibmvnic_disable_irqs(adapter);
|
|
|
adapter->state = VNIC_CLOSED;
|
|
|
|
|
|
if (reset_state == VNIC_CLOSED)
|
|
@@ -4586,14 +4586,6 @@ static int ibmvnic_init(struct ibmvnic_adapter *adapter)
|
|
|
release_crq_queue(adapter);
|
|
|
}
|
|
|
|
|
|
- rc = init_stats_buffers(adapter);
|
|
|
- if (rc)
|
|
|
- return rc;
|
|
|
-
|
|
|
- rc = init_stats_token(adapter);
|
|
|
- if (rc)
|
|
|
- return rc;
|
|
|
-
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
@@ -4662,13 +4654,21 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
|
|
|
goto ibmvnic_init_fail;
|
|
|
} while (rc == EAGAIN);
|
|
|
|
|
|
+ rc = init_stats_buffers(adapter);
|
|
|
+ if (rc)
|
|
|
+ goto ibmvnic_init_fail;
|
|
|
+
|
|
|
+ rc = init_stats_token(adapter);
|
|
|
+ if (rc)
|
|
|
+ goto ibmvnic_stats_fail;
|
|
|
+
|
|
|
netdev->mtu = adapter->req_mtu - ETH_HLEN;
|
|
|
netdev->min_mtu = adapter->min_mtu - ETH_HLEN;
|
|
|
netdev->max_mtu = adapter->max_mtu - ETH_HLEN;
|
|
|
|
|
|
rc = device_create_file(&dev->dev, &dev_attr_failover);
|
|
|
if (rc)
|
|
|
- goto ibmvnic_init_fail;
|
|
|
+ goto ibmvnic_dev_file_err;
|
|
|
|
|
|
netif_carrier_off(netdev);
|
|
|
rc = register_netdev(netdev);
|
|
@@ -4687,6 +4687,12 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
|
|
|
ibmvnic_register_fail:
|
|
|
device_remove_file(&dev->dev, &dev_attr_failover);
|
|
|
|
|
|
+ibmvnic_dev_file_err:
|
|
|
+ release_stats_token(adapter);
|
|
|
+
|
|
|
+ibmvnic_stats_fail:
|
|
|
+ release_stats_buffers(adapter);
|
|
|
+
|
|
|
ibmvnic_init_fail:
|
|
|
release_sub_crqs(adapter, 1);
|
|
|
release_crq_queue(adapter);
|