Lines Matching refs:event_params

89 wl_ext_event_lock_eq(struct wl_event_params *event_params)  in wl_ext_event_lock_eq()  argument
93 spin_lock_irqsave(&event_params->eq_lock, flags); in wl_ext_event_lock_eq()
98 wl_ext_event_unlock_eq(struct wl_event_params *event_params, unsigned long flags) in wl_ext_event_unlock_eq() argument
100 spin_unlock_irqrestore(&event_params->eq_lock, flags); in wl_ext_event_unlock_eq()
104 wl_ext_event_init_eq_lock(struct wl_event_params *event_params) in wl_ext_event_init_eq_lock() argument
106 spin_lock_init(&event_params->eq_lock); in wl_ext_event_init_eq_lock()
110 wl_ext_event_init_eq(struct wl_event_params *event_params) in wl_ext_event_init_eq() argument
112 wl_ext_event_init_eq_lock(event_params); in wl_ext_event_init_eq()
113 INIT_LIST_HEAD(&event_params->eq_list); in wl_ext_event_init_eq()
117 wl_ext_event_flush_eq(struct wl_event_params *event_params) in wl_ext_event_flush_eq() argument
122 flags = wl_ext_event_lock_eq(event_params); in wl_ext_event_flush_eq()
123 while (!list_empty_careful(&event_params->eq_list)) { in wl_ext_event_flush_eq()
124 BCM_SET_LIST_FIRST_ENTRY(e, &event_params->eq_list, struct wl_event_q, eq_list); in wl_ext_event_flush_eq()
128 wl_ext_event_unlock_eq(event_params, flags); in wl_ext_event_flush_eq()
136 wl_ext_event_deq_event(struct wl_event_params *event_params) in wl_ext_event_deq_event() argument
141 flags = wl_ext_event_lock_eq(event_params); in wl_ext_event_deq_event()
142 if (likely(!list_empty(&event_params->eq_list))) { in wl_ext_event_deq_event()
143 BCM_SET_LIST_FIRST_ENTRY(e, &event_params->eq_list, struct wl_event_q, eq_list); in wl_ext_event_deq_event()
146 wl_ext_event_unlock_eq(event_params, flags); in wl_ext_event_deq_event()
156 wl_ext_event_enq_event(struct wl_event_params *event_params, u32 event, in wl_ext_event_enq_event() argument
180 flags = wl_ext_event_lock_eq(event_params); in wl_ext_event_enq_event()
181 list_add_tail(&e->eq_list, &event_params->eq_list); in wl_ext_event_enq_event()
182 wl_ext_event_unlock_eq(event_params, flags); in wl_ext_event_enq_event()
203 struct wl_event_params *event_params = NULL; in WL_EXT_EVENT_HANDLER() local
211 event_params = (struct wl_event_params *)tsk->parent; in WL_EXT_EVENT_HANDLER()
213 BCM_SET_CONTAINER_OF(event_params, data, struct wl_event_params, event_work); in WL_EXT_EVENT_HANDLER()
224 DHD_EVENT_WAKE_LOCK(event_params->pub); in WL_EXT_EVENT_HANDLER()
225 while ((e = wl_ext_event_deq_event(event_params))) { in WL_EXT_EVENT_HANDLER()
230 dev = event_params->dev[e->emsg.ifidx]; in WL_EXT_EVENT_HANDLER()
248 mutex_lock(&event_params->event_sync); in WL_EXT_EVENT_HANDLER()
249 evt_node = event_params->evt_head.evt_head; in WL_EXT_EVENT_HANDLER()
256 mutex_unlock(&event_params->event_sync); in WL_EXT_EVENT_HANDLER()
260 DHD_EVENT_WAKE_UNLOCK(event_params->pub); in WL_EXT_EVENT_HANDLER()
273 struct wl_event_params *event_params = params; in wl_ext_event_send() local
276 if (event_params == NULL) { in wl_ext_event_send()
283 if (event_params->event_workq == NULL) { in wl_ext_event_send()
290 if (likely(!wl_ext_event_enq_event(event_params, event_type, e, data))) { in wl_ext_event_send()
292 if (event_params->thr_event_ctl.thr_pid >= 0) { in wl_ext_event_send()
293 up(&event_params->thr_event_ctl.sema); in wl_ext_event_send()
296 queue_work(event_params->event_workq, &event_params->event_work); in wl_ext_event_send()
302 wl_ext_event_create_handler(struct wl_event_params *event_params) in wl_ext_event_create_handler() argument
308 PROC_START(wl_ext_event_handler, event_params, &event_params->thr_event_ctl, 0, "ext_eventd"); in wl_ext_event_create_handler()
309 if (event_params->thr_event_ctl.thr_pid < 0) { in wl_ext_event_create_handler()
314 if (!event_params->event_workq) { in wl_ext_event_create_handler()
315 event_params->event_workq = alloc_workqueue("ext_eventd", in wl_ext_event_create_handler()
319 if (!event_params->event_workq) { in wl_ext_event_create_handler()
323 INIT_WORK(&event_params->event_work, wl_ext_event_handler); in wl_ext_event_create_handler()
331 wl_ext_event_free(struct wl_event_params *event_params) in wl_ext_event_free() argument
335 evt_head = &event_params->evt_head.evt_head; in wl_ext_event_free()
348 wl_ext_event_destroy_handler(struct wl_event_params *event_params) in wl_ext_event_destroy_handler() argument
351 if (event_params->thr_event_ctl.thr_pid >= 0) { in wl_ext_event_destroy_handler()
352 PROC_STOP(&event_params->thr_event_ctl); in wl_ext_event_destroy_handler()
355 if (event_params && event_params->event_workq) { in wl_ext_event_destroy_handler()
356 cancel_work_sync(&event_params->event_work); in wl_ext_event_destroy_handler()
357 destroy_workqueue(event_params->event_workq); in wl_ext_event_destroy_handler()
358 event_params->event_workq = NULL; in wl_ext_event_destroy_handler()
367 struct wl_event_params *event_params = dhd->event_params; in wl_ext_event_register() local
371 if (event_params) { in wl_ext_event_register()
372 mutex_lock(&event_params->event_sync); in wl_ext_event_register()
373 evt_head = &event_params->evt_head.evt_head; in wl_ext_event_register()
378 mutex_unlock(&event_params->event_sync); in wl_ext_event_register()
387 mutex_unlock(&event_params->event_sync); in wl_ext_event_register()
419 mutex_unlock(&event_params->event_sync); in wl_ext_event_register()
432 struct wl_event_params *event_params = dhd->event_params; in wl_ext_event_deregister() local
436 if (event_params) { in wl_ext_event_deregister()
437 mutex_lock(&event_params->event_sync); in wl_ext_event_deregister()
438 evt_head = &event_params->evt_head.evt_head; in wl_ext_event_deregister()
463 mutex_unlock(&event_params->event_sync); in wl_ext_event_deregister()
470 wl_ext_event_init_priv(struct wl_event_params *event_params) in wl_ext_event_init_priv() argument
474 mutex_init(&event_params->event_sync); in wl_ext_event_init_priv()
475 wl_ext_event_init_eq(event_params); in wl_ext_event_init_priv()
476 if (wl_ext_event_create_handler(event_params)) in wl_ext_event_init_priv()
483 wl_ext_event_deinit_priv(struct wl_event_params *event_params) in wl_ext_event_deinit_priv() argument
485 wl_ext_event_destroy_handler(event_params); in wl_ext_event_deinit_priv()
486 wl_ext_event_flush_eq(event_params); in wl_ext_event_deinit_priv()
487 wl_ext_event_free(event_params); in wl_ext_event_deinit_priv()
494 struct wl_event_params *event_params = dhd->event_params; in wl_ext_event_attach_netdev() local
496 if (event_params && ifidx < DHD_MAX_IFS) { in wl_ext_event_attach_netdev()
498 event_params->dev[ifidx] = net; in wl_ext_event_attach_netdev()
508 struct wl_event_params *event_params = dhd->event_params; in wl_ext_event_dettach_netdev() local
510 if (event_params && ifidx < DHD_MAX_IFS) { in wl_ext_event_dettach_netdev()
512 event_params->dev[ifidx] = NULL; in wl_ext_event_dettach_netdev()
522 struct wl_event_params *event_params = NULL; in wl_ext_event_attach() local
525 event_params = kmalloc(sizeof(wl_event_params_t), GFP_KERNEL); in wl_ext_event_attach()
526 if (!event_params) { in wl_ext_event_attach()
531 dhdp->event_params = event_params; in wl_ext_event_attach()
532 memset(event_params, 0, sizeof(wl_event_params_t)); in wl_ext_event_attach()
533 event_params->pub = dhdp; in wl_ext_event_attach()
535 err = wl_ext_event_init_priv(event_params); in wl_ext_event_attach()
550 struct wl_event_params *event_params = dhdp->event_params; in wl_ext_event_dettach() local
552 if (event_params) { in wl_ext_event_dettach()
553 wl_ext_event_deinit_priv(event_params); in wl_ext_event_dettach()
554 kfree(event_params); in wl_ext_event_dettach()
555 dhdp->event_params = NULL; in wl_ext_event_dettach()