[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Thu, 7 Jul 2016 14:31:00 -0500
From: John Allen <jallen@...ux.vnet.ibm.com>
To: Thomas Falcon <tlfalcon@...ux.vnet.ibm.com>, netdev@...r.kernel.org
Cc: nfont@...ux.vnet.ibm.com
Subject: Re: [PATCH net 3/4] ibmvnic: simplify and improve driver probe
function
On 07/06/2016 03:35 PM, Thomas Falcon wrote:
> @@ -3560,6 +3608,7 @@ static const struct file_operations ibmvnic_dump_ops = {
>
> static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
> {
> + unsigned long timeout = msecs_to_jiffies(30000);
> struct ibmvnic_adapter *adapter;
> struct net_device *netdev;
> unsigned char *mac_addr_p;
> @@ -3638,30 +3687,26 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
> ibmvnic_send_crq_init(adapter);
>
> init_completion(&adapter->init_done);
> - wait_for_completion(&adapter->init_done);
> + if (!wait_for_completion_timeout(&adapter->init_done, timeout))
> + return 0;
>
> do {
> - adapter->renegotiate = false;
> -
> - init_sub_crqs(adapter, 0);
> - reinit_completion(&adapter->init_done);
> - wait_for_completion(&adapter->init_done);
> -
> if (adapter->renegotiate) {
> - release_sub_crqs(adapter);
> + adapter->renegotiate = false;
> + release_sub_crqs_no_irqs(adapter);
> send_cap_queries(adapter);
>
> reinit_completion(&adapter->init_done);
> - wait_for_completion(&adapter->init_done);
> + if (!wait_for_completion_timeout(&adapter->init_done,
> + timeout))
> + return 0;
> }
> } while (adapter->renegotiate);
Instead of a do-while here, this should just be simplified to a while loop.
while (adapter->renegotiate) {
...
}
will serve the same purpose as
do {
if (adapter->renegotiate) {
...
}
} while (adapter->renegotiate);
Same goes for the similar loop in patch 4/4.
Powered by blists - more mailing lists