Lines Matching refs:notif_wait
70 void iwl_notification_wait_init(struct iwl_notif_wait_data *notif_wait) in iwl_notification_wait_init() argument
72 spin_lock_init(¬if_wait->notif_wait_lock); in iwl_notification_wait_init()
73 INIT_LIST_HEAD(¬if_wait->notif_waits); in iwl_notification_wait_init()
74 init_waitqueue_head(¬if_wait->notif_waitq); in iwl_notification_wait_init()
78 void iwl_notification_wait_notify(struct iwl_notif_wait_data *notif_wait, in iwl_notification_wait_notify() argument
83 if (!list_empty(¬if_wait->notif_waits)) { in iwl_notification_wait_notify()
86 spin_lock(¬if_wait->notif_wait_lock); in iwl_notification_wait_notify()
87 list_for_each_entry(w, ¬if_wait->notif_waits, list) { in iwl_notification_wait_notify()
109 if (!w->fn || w->fn(notif_wait, pkt, w->fn_data)) { in iwl_notification_wait_notify()
114 spin_unlock(¬if_wait->notif_wait_lock); in iwl_notification_wait_notify()
119 wake_up_all(¬if_wait->notif_waitq); in iwl_notification_wait_notify()
123 void iwl_abort_notification_waits(struct iwl_notif_wait_data *notif_wait) in iwl_abort_notification_waits() argument
127 spin_lock(¬if_wait->notif_wait_lock); in iwl_abort_notification_waits()
128 list_for_each_entry(wait_entry, ¬if_wait->notif_waits, list) in iwl_abort_notification_waits()
130 spin_unlock(¬if_wait->notif_wait_lock); in iwl_abort_notification_waits()
132 wake_up_all(¬if_wait->notif_waitq); in iwl_abort_notification_waits()
137 iwl_init_notification_wait(struct iwl_notif_wait_data *notif_wait, in iwl_init_notification_wait() argument
140 bool (*fn)(struct iwl_notif_wait_data *notif_wait, in iwl_init_notification_wait() argument
154 spin_lock_bh(¬if_wait->notif_wait_lock); in iwl_init_notification_wait()
155 list_add(&wait_entry->list, ¬if_wait->notif_waits); in iwl_init_notification_wait()
156 spin_unlock_bh(¬if_wait->notif_wait_lock); in iwl_init_notification_wait()
160 int iwl_wait_notification(struct iwl_notif_wait_data *notif_wait, in iwl_wait_notification() argument
166 ret = wait_event_timeout(notif_wait->notif_waitq, in iwl_wait_notification()
170 spin_lock_bh(¬if_wait->notif_wait_lock); in iwl_wait_notification()
172 spin_unlock_bh(¬if_wait->notif_wait_lock); in iwl_wait_notification()
184 void iwl_remove_notification(struct iwl_notif_wait_data *notif_wait, in iwl_remove_notification() argument
187 spin_lock_bh(¬if_wait->notif_wait_lock); in iwl_remove_notification()
189 spin_unlock_bh(¬if_wait->notif_wait_lock); in iwl_remove_notification()