mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
qcacmn: Not set "force_set" if event completed
"qdf_complete_wait_events" set force_set flag for all event in "qdf_wait_event_list". This cause qdf_wait_for_event_completion return QDF_STATUS_E_FAULT, even if event have completed Add new flag "done" to record event completed. Use this flag to detect event have completed or not. Change-Id: I31f947169153ccbeb8435c539faab1059c055c04
This commit is contained in:
parent
76013e1056
commit
ca3412698e
2 changed files with 10 additions and 4 deletions
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014-2017,2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -30,11 +30,13 @@
|
|||
* qdf_event_t - manages events
|
||||
* @complete: instance to completion
|
||||
* @cookie: unsigned int
|
||||
* @done: indicate completion
|
||||
* @force_set: indicate forceful completion
|
||||
*/
|
||||
typedef struct qdf_evt {
|
||||
struct completion complete;
|
||||
uint32_t cookie;
|
||||
bool done;
|
||||
bool force_set;
|
||||
} __qdf_event_t;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014-2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -102,6 +102,7 @@ QDF_STATUS qdf_event_set(qdf_event_t *event)
|
|||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
complete(&event->complete);
|
||||
event->done = true;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -134,6 +135,7 @@ QDF_STATUS qdf_event_reset(qdf_event_t *event)
|
|||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
/* (re)initialize event */
|
||||
event->done = false;
|
||||
event->force_set = false;
|
||||
INIT_COMPLETION(event->complete);
|
||||
|
||||
|
|
@ -252,8 +254,10 @@ void qdf_complete_wait_events(void)
|
|||
event_node = qdf_container_of(list_node,
|
||||
struct qdf_evt_node, node);
|
||||
|
||||
event_node->pevent->force_set = true;
|
||||
qdf_event_set(event_node->pevent);
|
||||
if (!event_node->pevent->done) {
|
||||
event_node->pevent->force_set = true;
|
||||
qdf_event_set(event_node->pevent);
|
||||
}
|
||||
|
||||
status = qdf_list_peek_next(&qdf_wait_event_list,
|
||||
&event_node->node, &list_node);
|
||||
|
|
|
|||
Loading…
Reference in a new issue