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;
115 cb = list_first_entry_or_null(&cl->rd_pending, struct mei_cl_cb, list);
116 if (!cb) {
118 cl_err(dev, cl, "pending read cb not found\n");
121 cb = mei_cl_alloc_cb(cl, mei_cl_mtu(cl), MEI_FOP_READ, cl->fp);
122 if (!cb)
124 list_add_tail(&cb->list, &cl->rd_pending);
136 cb->ext_hdr = kzalloc(sizeof(*gsc_f2h), GFP_KERNEL);
137 if (!cb->ext_hdr) {
138 cb->status = -ENOMEM;
146 cb->status = -EPROTO;
155 cb->status = -EPROTO;
162 if (cb->vtag && cb->vtag != vtag_hdr->vtag) {
164 cb->vtag, vtag_hdr->vtag);
165 cb->status = -EPROTO;
168 cb->vtag = vtag_hdr->vtag;
176 cb->status = -EPROTO;
181 cl_err(dev, cl, "no data allowed in cb with gsc\n");
182 cb->status = -EPROTO;
187 cb->status = -EPROTO;
190 memcpy(cb->ext_hdr, gsc_f2h, ext_hdr_len);
195 cb->status = -ENODEV;
202 buf_sz = length + cb->buf_idx;
204 if (buf_sz < cb->buf_idx) {
206 length, cb->buf_idx);
207 cb->status = -EMSGSIZE;
211 if (cb->buf.size < buf_sz) {
213 cb->buf.size, length, cb->buf_idx);
214 cb->status = -EMSGSIZE;
219 mei_dma_ring_read(dev, cb->buf.data + cb->buf_idx, length);
221 mei_read_slots(dev, cb->buf.data + cb->buf_idx, 0);
223 mei_read_slots(dev, cb->buf.data + cb->buf_idx, length);
226 cb->buf_idx += length;
229 cl_dbg(dev, cl, "completed read length = %zu\n", cb->buf_idx);
230 list_move_tail(&cb->list, cmpl_list);
239 if (cb)
240 list_move_tail(&cb->list, cmpl_list);
249 * @cb: callback block.
254 static int mei_cl_irq_disconnect_rsp(struct mei_cl *cl, struct mei_cl_cb *cb,
271 list_move_tail(&cb->list, cmpl_list);
281 * @cb: callback block.
286 static int mei_cl_irq_read(struct mei_cl *cl, struct mei_cl_cb *cb,
308 cb->buf_idx = 0;
309 list_move_tail(&cb->list, cmpl_list);
316 list_move_tail(&cb->list, &cl->rd_pending);
512 struct mei_cl_cb *cb, *next;
528 dev_dbg(dev->dev, "complete all waiting for write cb.\n");
530 list_for_each_entry_safe(cb, next, &dev->write_waiting_list, list) {
531 cl = cb->cl;
536 list_move_tail(&cb->list, cmpl_list);
540 dev_dbg(dev->dev, "complete control write list cb.\n");
541 list_for_each_entry_safe(cb, next, &dev->ctrl_wr_list, list) {
542 cl = cb->cl;
543 switch (cb->fop_type) {
546 ret = mei_cl_irq_disconnect(cl, cb, cmpl_list);
553 ret = mei_cl_irq_read(cl, cb, cmpl_list);
560 ret = mei_cl_irq_connect(cl, cb, cmpl_list);
567 ret = mei_cl_irq_disconnect_rsp(cl, cb, cmpl_list);
574 ret = mei_cl_irq_notify(cl, cb, cmpl_list);
579 ret = mei_cl_irq_dma_map(cl, cb, cmpl_list);
584 ret = mei_cl_irq_dma_unmap(cl, cb, cmpl_list);
594 dev_dbg(dev->dev, "complete write list cb.\n");
595 list_for_each_entry_safe(cb, next, &dev->write_list, list) {
596 cl = cb->cl;
597 ret = mei_cl_irq_write(cl, cb, cmpl_list);