|
@@ -101,6 +101,7 @@ QDF_STATUS qdf_event_set(qdf_event_t *event)
|
|
if (event->cookie != LINUX_EVENT_COOKIE)
|
|
if (event->cookie != LINUX_EVENT_COOKIE)
|
|
return QDF_STATUS_E_INVAL;
|
|
return QDF_STATUS_E_INVAL;
|
|
|
|
|
|
|
|
+ event->done = true;
|
|
complete(&event->complete);
|
|
complete(&event->complete);
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
@@ -134,6 +135,7 @@ QDF_STATUS qdf_event_reset(qdf_event_t *event)
|
|
return QDF_STATUS_E_INVAL;
|
|
return QDF_STATUS_E_INVAL;
|
|
|
|
|
|
/* (re)initialize event */
|
|
/* (re)initialize event */
|
|
|
|
+ event->done = false;
|
|
event->force_set = false;
|
|
event->force_set = false;
|
|
INIT_COMPLETION(event->complete);
|
|
INIT_COMPLETION(event->complete);
|
|
|
|
|
|
@@ -252,8 +254,10 @@ void qdf_complete_wait_events(void)
|
|
event_node = qdf_container_of(list_node,
|
|
event_node = qdf_container_of(list_node,
|
|
struct qdf_evt_node, 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,
|
|
status = qdf_list_peek_next(&qdf_wait_event_list,
|
|
&event_node->node, &list_node);
|
|
&event_node->node, &list_node);
|