|
@@ -553,6 +553,7 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc)
|
|
|
{
|
|
|
struct ath10k *ar = htc->ar;
|
|
|
int i, status = 0;
|
|
|
+ unsigned long time_left;
|
|
|
struct ath10k_htc_svc_conn_req conn_req;
|
|
|
struct ath10k_htc_svc_conn_resp conn_resp;
|
|
|
struct ath10k_htc_msg *msg;
|
|
@@ -560,9 +561,9 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc)
|
|
|
u16 credit_count;
|
|
|
u16 credit_size;
|
|
|
|
|
|
- status = wait_for_completion_timeout(&htc->ctl_resp,
|
|
|
- ATH10K_HTC_WAIT_TIMEOUT_HZ);
|
|
|
- if (status == 0) {
|
|
|
+ time_left = wait_for_completion_timeout(&htc->ctl_resp,
|
|
|
+ ATH10K_HTC_WAIT_TIMEOUT_HZ);
|
|
|
+ if (!time_left) {
|
|
|
/* Workaround: In some cases the PCI HIF doesn't
|
|
|
* receive interrupt for the control response message
|
|
|
* even if the buffer was completed. It is suspected
|
|
@@ -574,10 +575,11 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc)
|
|
|
for (i = 0; i < CE_COUNT; i++)
|
|
|
ath10k_hif_send_complete_check(htc->ar, i, 1);
|
|
|
|
|
|
- status = wait_for_completion_timeout(&htc->ctl_resp,
|
|
|
- ATH10K_HTC_WAIT_TIMEOUT_HZ);
|
|
|
+ time_left =
|
|
|
+ wait_for_completion_timeout(&htc->ctl_resp,
|
|
|
+ ATH10K_HTC_WAIT_TIMEOUT_HZ);
|
|
|
|
|
|
- if (status == 0)
|
|
|
+ if (!time_left)
|
|
|
status = -ETIMEDOUT;
|
|
|
}
|
|
|
|
|
@@ -651,6 +653,7 @@ int ath10k_htc_connect_service(struct ath10k_htc *htc,
|
|
|
struct sk_buff *skb;
|
|
|
unsigned int max_msg_size = 0;
|
|
|
int length, status;
|
|
|
+ unsigned long time_left;
|
|
|
bool disable_credit_flow_ctrl = false;
|
|
|
u16 message_id, service_id, flags = 0;
|
|
|
u8 tx_alloc = 0;
|
|
@@ -706,10 +709,10 @@ int ath10k_htc_connect_service(struct ath10k_htc *htc,
|
|
|
}
|
|
|
|
|
|
/* wait for response */
|
|
|
- status = wait_for_completion_timeout(&htc->ctl_resp,
|
|
|
- ATH10K_HTC_CONN_SVC_TIMEOUT_HZ);
|
|
|
- if (status == 0) {
|
|
|
- ath10k_err(ar, "Service connect timeout: %d\n", status);
|
|
|
+ time_left = wait_for_completion_timeout(&htc->ctl_resp,
|
|
|
+ ATH10K_HTC_CONN_SVC_TIMEOUT_HZ);
|
|
|
+ if (!time_left) {
|
|
|
+ ath10k_err(ar, "Service connect timeout\n");
|
|
|
return -ETIMEDOUT;
|
|
|
}
|
|
|
|