Lines Matching refs:rw
339 struct scmi_xfer_raw_waiter *rw = NULL; in scmi_xfer_raw_waiter_get() local
343 rw = list_first_entry(&raw->free_waiters, in scmi_xfer_raw_waiter_get()
345 list_del_init(&rw->node); in scmi_xfer_raw_waiter_get()
348 reinit_completion(&rw->async_response); in scmi_xfer_raw_waiter_get()
349 xfer->async_done = &rw->async_response; in scmi_xfer_raw_waiter_get()
352 rw->cinfo = cinfo; in scmi_xfer_raw_waiter_get()
353 rw->xfer = xfer; in scmi_xfer_raw_waiter_get()
357 return rw; in scmi_xfer_raw_waiter_get()
361 struct scmi_xfer_raw_waiter *rw) in scmi_xfer_raw_waiter_put() argument
363 if (rw->xfer) { in scmi_xfer_raw_waiter_put()
364 rw->xfer->async_done = NULL; in scmi_xfer_raw_waiter_put()
365 rw->xfer = NULL; in scmi_xfer_raw_waiter_put()
369 list_add_tail(&rw->node, &raw->free_waiters); in scmi_xfer_raw_waiter_put()
374 struct scmi_xfer_raw_waiter *rw) in scmi_xfer_raw_waiter_enqueue() argument
377 rw->start_jiffies = jiffies; in scmi_xfer_raw_waiter_enqueue()
379 trace_scmi_xfer_response_wait(rw->xfer->transfer_id, rw->xfer->hdr.id, in scmi_xfer_raw_waiter_enqueue()
380 rw->xfer->hdr.protocol_id, in scmi_xfer_raw_waiter_enqueue()
381 rw->xfer->hdr.seq, in scmi_xfer_raw_waiter_enqueue()
383 rw->xfer->hdr.poll_completion); in scmi_xfer_raw_waiter_enqueue()
386 list_add_tail(&rw->node, &raw->active_waiters); in scmi_xfer_raw_waiter_enqueue()
396 struct scmi_xfer_raw_waiter *rw = NULL; in scmi_xfer_raw_waiter_dequeue() local
400 rw = list_first_entry(&raw->active_waiters, in scmi_xfer_raw_waiter_dequeue()
402 list_del_init(&rw->node); in scmi_xfer_raw_waiter_dequeue()
406 return rw; in scmi_xfer_raw_waiter_dequeue()
447 struct scmi_xfer_raw_waiter *rw; in scmi_xfer_raw_worker() local
450 rw = scmi_xfer_raw_waiter_dequeue(raw); in scmi_xfer_raw_worker()
451 if (!rw) in scmi_xfer_raw_worker()
454 cinfo = rw->cinfo; in scmi_xfer_raw_worker()
455 xfer = rw->xfer; in scmi_xfer_raw_worker()
465 aging = jiffies - rw->start_jiffies; in scmi_xfer_raw_worker()
475 raw->desc->ops->mark_txdone(rw->cinfo, ret, xfer); in scmi_xfer_raw_worker()
492 scmi_xfer_raw_waiter_put(raw, rw); in scmi_xfer_raw_worker()
617 struct scmi_xfer_raw_waiter *rw; in scmi_do_xfer_raw_start() local
629 rw = scmi_xfer_raw_waiter_get(raw, xfer, cinfo, async); in scmi_do_xfer_raw_start()
630 if (!rw) { in scmi_do_xfer_raw_start()
647 ret = raw->desc->ops->send_message(rw->cinfo, xfer); in scmi_do_xfer_raw_start()
650 scmi_xfer_raw_waiter_put(raw, rw); in scmi_do_xfer_raw_start()
659 scmi_xfer_raw_waiter_enqueue(raw, rw); in scmi_do_xfer_raw_start()
1068 struct scmi_xfer_raw_waiter *rw; in scmi_xfer_raw_worker_init() local
1071 rw = devm_kcalloc(dev, raw->tx_max_msg, sizeof(*rw), GFP_KERNEL); in scmi_xfer_raw_worker_init()
1072 if (!rw) in scmi_xfer_raw_worker_init()
1086 for (i = 0; i < raw->tx_max_msg; i++, rw++) { in scmi_xfer_raw_worker_init()
1087 init_completion(&rw->async_response); in scmi_xfer_raw_worker_init()
1088 scmi_xfer_raw_waiter_put(raw, rw); in scmi_xfer_raw_worker_init()