Lines Matching refs:entry

296 	struct bcm_vk_ctx *entry;
317 list_for_each_entry(entry, &vk->pid_ht[hash_idx].head, node) {
318 if (entry->pid == pid)
328 static void bcm_vk_free_wkent(struct device *dev, struct bcm_vk_wkent *entry)
332 bcm_vk_sg_free(dev, entry->dma, VK_DMA_MAX_ADDRS, &proc_cnt);
334 atomic_dec(&entry->ctx->dma_cnt);
336 kfree(entry->to_h_msg);
337 kfree(entry);
345 struct bcm_vk_wkent *entry, *tmp;
355 list_for_each_entry_safe(entry, tmp, &chan->pendq[num], node) {
356 if ((!ctx) || (entry->ctx->idx == ctx->idx)) {
357 list_move_tail(&entry->node, &del_q);
365 list_for_each_entry_safe(entry, tmp, &del_q, node) {
366 list_del(&entry->node);
375 msg = entry->to_v_msg;
378 responded = entry->to_h_msg ? true : false;
383 msg_id, entry->seq_num,
384 msg->context_id, entry->ctx->idx,
392 bcm_vk_free_wkent(dev, entry);
522 struct bcm_vk_wkent *entry)
527 list_add_tail(&entry->node, &chan->pendq[q_num]);
528 if (entry->to_h_msg) {
529 ctx = entry->ctx;
537 struct bcm_vk_wkent *entry,
545 struct vk_msg_blk *msg = &entry->to_v_msg[0];
549 u8 *buf = (u8 *)&entry->to_v_msg[entry->to_v_blks];
568 memcpy(buf, entry->dma[i].sglist, data[i].size);
592 static int bcm_to_v_msg_enqueue(struct bcm_vk *vk, struct bcm_vk_wkent *entry)
597 struct vk_msg_blk *src = &entry->to_v_msg[0];
608 if (entry->to_v_blks != src->size + 1) {
610 entry->to_v_blks,
627 while ((avail < entry->to_v_blks) &&
641 entry->seq_num = seq_num++; /* update debug seq number */
653 for (i = 0; i < entry->to_v_blks; i++) {
670 entry->to_v_blks,
689 struct bcm_vk_wkent *entry;
703 entry = kzalloc(struct_size(entry, to_v_msg, 1), GFP_KERNEL);
704 if (!entry)
708 entry->to_v_msg[0].function_id = VK_FID_SHUTDOWN;
709 set_q_num(&entry->to_v_msg[0], q_num);
710 set_msg_id(&entry->to_v_msg[0], VK_SIMPLEX_MSG_ID);
711 entry->to_v_blks = 1; /* always 1 block */
713 entry->to_v_msg[0].cmd = shut_type;
714 entry->to_v_msg[0].arg = pid;
716 rc = bcm_to_v_msg_enqueue(vk, entry);
720 get_q_num(&entry->to_v_msg[0]), pid);
722 kfree(entry);
760 struct bcm_vk_wkent *entry = NULL, *iter;
766 entry = iter;
772 return entry;
784 struct bcm_vk_wkent *entry;
796 * entry in the to_v queue, based on msg_id & q_num, and move the
797 * entry to the to_h pending queue, waiting for user space
886 entry = bcm_vk_dequeue_pending(vk,
895 if (entry) {
896 entry->to_h_blks = num_blks;
897 entry->to_h_msg = data;
899 q_num, entry);
1012 struct bcm_vk_wkent *entry = NULL, *iter;
1034 entry = iter;
1046 if (entry) {
1048 set_msg_id(&entry->to_h_msg[0], entry->usr_msg_id);
1049 rsp_length = entry->to_h_blks * VK_MSGQ_BLK_SIZE;
1050 if (copy_to_user(buf, entry->to_h_msg, rsp_length) == 0)
1053 bcm_vk_free_wkent(dev, entry);
1055 struct vk_msg_blk tmp_msg = entry->to_h_msg[0];
1061 set_msg_id(&tmp_msg, entry->usr_msg_id);
1062 tmp_msg.size = entry->to_h_blks - 1;
1082 struct bcm_vk_wkent *entry;
1101 /* allocate the work entry + buffer for size count and inband sgl */
1102 entry = kzalloc(sizeof(*entry) + count + vk->ib_sgl_size,
1104 if (!entry) {
1109 /* now copy msg from user space, and then formulate the work entry */
1110 if (copy_from_user(&entry->to_v_msg[0], buf, count)) {
1115 entry->to_v_blks = count >> VK_MSGQ_BLK_SZ_SHIFT;
1116 entry->ctx = ctx;
1119 q_num = get_q_num(&entry->to_v_msg[0]);
1122 if (entry->to_v_blks + (vk->ib_sgl_size >> VK_MSGQ_BLK_SZ_SHIFT)
1125 entry->to_v_blks, msgq_size - 1);
1131 entry->usr_msg_id = get_msg_id(&entry->to_v_msg[0]);
1138 set_msg_id(&entry->to_v_msg[0], rc);
1143 ctx->q_num, ctx->idx, entry->usr_msg_id,
1144 get_msg_id(&entry->to_v_msg[0]));
1146 if (entry->to_v_msg[0].function_id == VK_FID_TRANS_BUF) {
1163 num_planes = entry->to_v_msg[0].cmd & VK_CMD_PLANES_MASK;
1164 if ((entry->to_v_msg[0].cmd & VK_CMD_MASK) == VK_CMD_DOWNLOAD)
1171 msg_size = entry->to_v_msg[0].size;
1172 if (msg_size > entry->to_v_blks) {
1177 data = (struct _vk_data *)&entry->to_v_msg[msg_size + 1];
1183 rc = bcm_vk_sg_alloc(dev, entry->dma, dir, data, num_planes);
1189 sgl_extra_blks = bcm_vk_append_ib_sgl(vk, entry, data,
1191 entry->to_v_blks += sgl_extra_blks;
1192 entry->to_v_msg[0].size += sgl_extra_blks;
1193 } else if (entry->to_v_msg[0].function_id == VK_FID_INIT &&
1194 entry->to_v_msg[0].context_id == VK_NEW_CTX) {
1208 org_pid = (entry->to_v_msg[0].arg & VK_MSG_PID_MASK)
1212 entry->to_v_msg[0].arg =
1213 (entry->to_v_msg[0].arg & ~VK_MSG_PID_MASK) |
1221 * store work entry to pending queue until a response is received.
1224 bcm_vk_append_pendq(&vk->to_v_msg_chan, q_num, entry);
1226 rc = bcm_to_v_msg_enqueue(vk, entry);
1231 entry = bcm_vk_dequeue_pending
1235 get_msg_id(&entry->to_v_msg[0]));
1242 bcm_vk_msgid_bitmap_clear(vk, get_msg_id(&entry->to_v_msg[0]), 1);
1244 kfree(entry);