Lines Matching refs:cb
31 struct mei_cl_cb *cb, *next;
34 list_for_each_entry_safe(cb, next, cmpl_list, list) {
35 cl = cb->cl;
36 list_del_init(&cb->list);
39 mei_cl_complete(cl, cb);
99 struct mei_cl_cb *cb;
112 cb = list_first_entry_or_null(&cl->rd_pending, struct mei_cl_cb, list);
113 if (!cb) {
115 cl_err(dev, cl, "pending read cb not found\n");
118 cb = mei_cl_alloc_cb(cl, mei_cl_mtu(cl), MEI_FOP_READ, cl->fp);
119 if (!cb)
121 list_add_tail(&cb->list, &cl->rd_pending);
137 cb->status = -EPROTO;
146 cb->status = -EPROTO;
151 if (cb->vtag && cb->vtag != vtag->ext_payload[0]) {
153 cb->vtag, vtag->ext_payload[0]);
154 cb->status = -EPROTO;
157 cb->vtag = vtag->ext_payload[0];
162 cb->status = -ENODEV;
169 buf_sz = length + cb->buf_idx;
171 if (buf_sz < cb->buf_idx) {
173 length, cb->buf_idx);
174 cb->status = -EMSGSIZE;
178 if (cb->buf.size < buf_sz) {
180 cb->buf.size, length, cb->buf_idx);
181 cb->status = -EMSGSIZE;
186 mei_dma_ring_read(dev, cb->buf.data + cb->buf_idx, length);
188 mei_read_slots(dev, cb->buf.data + cb->buf_idx, 0);
190 mei_read_slots(dev, cb->buf.data + cb->buf_idx, length);
193 cb->buf_idx += length;
196 cl_dbg(dev, cl, "completed read length = %zu\n", cb->buf_idx);
197 list_move_tail(&cb->list, cmpl_list);
206 if (cb)
207 list_move_tail(&cb->list, cmpl_list);
216 * @cb: callback block.
221 static int mei_cl_irq_disconnect_rsp(struct mei_cl *cl, struct mei_cl_cb *cb,
238 list_move_tail(&cb->list, cmpl_list);
248 * @cb: callback block.
253 static int mei_cl_irq_read(struct mei_cl *cl, struct mei_cl_cb *cb,
275 cb->buf_idx = 0;
276 list_move_tail(&cb->list, cmpl_list);
283 list_move_tail(&cb->list, &cl->rd_pending);
482 struct mei_cl_cb *cb, *next;
498 dev_dbg(dev->dev, "complete all waiting for write cb.\n");
500 list_for_each_entry_safe(cb, next, &dev->write_waiting_list, list) {
501 cl = cb->cl;
506 list_move_tail(&cb->list, cmpl_list);
510 dev_dbg(dev->dev, "complete control write list cb.\n");
511 list_for_each_entry_safe(cb, next, &dev->ctrl_wr_list, list) {
512 cl = cb->cl;
513 switch (cb->fop_type) {
516 ret = mei_cl_irq_disconnect(cl, cb, cmpl_list);
523 ret = mei_cl_irq_read(cl, cb, cmpl_list);
530 ret = mei_cl_irq_connect(cl, cb, cmpl_list);
537 ret = mei_cl_irq_disconnect_rsp(cl, cb, cmpl_list);
544 ret = mei_cl_irq_notify(cl, cb, cmpl_list);
554 dev_dbg(dev->dev, "complete write list cb.\n");
555 list_for_each_entry_safe(cb, next, &dev->write_list, list) {
556 cl = cb->cl;
557 ret = mei_cl_irq_write(cl, cb, cmpl_list);