Lines Matching refs:recvmsg

238 *smb_direct_recvmsg_payload(struct smb_direct_recvmsg *recvmsg)
240 return (void *)recvmsg->packet;
253 struct smb_direct_recvmsg *recvmsg = NULL;
257 recvmsg = list_first_entry(&t->recvmsg_queue,
260 list_del(&recvmsg->list);
263 return recvmsg;
267 struct smb_direct_recvmsg *recvmsg)
269 ib_dma_unmap_single(t->cm_id->device, recvmsg->sge.addr,
270 recvmsg->sge.length, DMA_FROM_DEVICE);
273 list_add(&recvmsg->list, &t->recvmsg_queue);
280 struct smb_direct_recvmsg *recvmsg = NULL;
284 recvmsg = list_first_entry(&t->empty_recvmsg_queue,
286 list_del(&recvmsg->list);
289 return recvmsg;
293 struct smb_direct_recvmsg *recvmsg)
295 ib_dma_unmap_single(t->cm_id->device, recvmsg->sge.addr,
296 recvmsg->sge.length, DMA_FROM_DEVICE);
299 list_add_tail(&recvmsg->list, &t->empty_recvmsg_queue);
304 struct smb_direct_recvmsg *recvmsg,
308 list_add_tail(&recvmsg->list, &t->reassembly_queue);
414 struct smb_direct_recvmsg *recvmsg;
435 recvmsg = get_first_reassembly(t);
436 if (recvmsg) {
437 list_del(&recvmsg->list);
439 put_recvmsg(t, recvmsg);
443 } while (recvmsg);
491 static int smb_direct_check_recvmsg(struct smb_direct_recvmsg *recvmsg)
493 switch (recvmsg->type) {
496 (struct smb_direct_data_transfer *)recvmsg->packet;
497 struct smb2_hdr *hdr = (struct smb2_hdr *)(recvmsg->packet
509 (struct smb_direct_negotiate_req *)recvmsg->packet;
537 struct smb_direct_recvmsg *recvmsg;
540 recvmsg = container_of(wc->wr_cqe, struct smb_direct_recvmsg, cqe);
541 t = recvmsg->transport;
550 put_empty_recvmsg(t, recvmsg);
558 ib_dma_sync_single_for_cpu(wc->qp->device, recvmsg->sge.addr,
559 recvmsg->sge.length, DMA_FROM_DEVICE);
561 switch (recvmsg->type) {
564 put_empty_recvmsg(t, recvmsg);
570 enqueue_reassembly(t, recvmsg, 0);
575 (struct smb_direct_data_transfer *)recvmsg->packet;
581 put_empty_recvmsg(t, recvmsg);
589 put_empty_recvmsg(t, recvmsg);
594 recvmsg->first_segment = true;
601 enqueue_reassembly(t, recvmsg, (int)data_length);
609 put_empty_recvmsg(t, recvmsg);
640 struct smb_direct_recvmsg *recvmsg)
645 recvmsg->sge.addr = ib_dma_map_single(t->cm_id->device,
646 recvmsg->packet, t->max_recv_size,
648 ret = ib_dma_mapping_error(t->cm_id->device, recvmsg->sge.addr);
651 recvmsg->sge.length = t->max_recv_size;
652 recvmsg->sge.lkey = t->pd->local_dma_lkey;
653 recvmsg->cqe.done = recv_done;
655 wr.wr_cqe = &recvmsg->cqe;
657 wr.sg_list = &recvmsg->sge;
664 recvmsg->sge.addr, recvmsg->sge.length,
675 struct smb_direct_recvmsg *recvmsg;
710 recvmsg = get_first_reassembly(st);
711 data_transfer = smb_direct_recvmsg_payload(recvmsg);
725 if (recvmsg->first_segment && size == 4) {
730 recvmsg->first_segment = false;
749 list_del(&recvmsg->list);
752 list_del(&recvmsg->list);
756 put_recvmsg(st, recvmsg);
804 struct smb_direct_recvmsg *recvmsg;
816 recvmsg = get_free_recvmsg(t);
818 recvmsg = get_empty_recvmsg(t);
819 if (!recvmsg) {
828 recvmsg->type = SMB_DIRECT_MSG_DATA_TRANSFER;
829 recvmsg->first_segment = false;
831 ret = smb_direct_post_recv(t, recvmsg);
834 put_recvmsg(t, recvmsg);
1674 struct smb_direct_recvmsg *recvmsg;
1676 recvmsg = get_free_recvmsg(t);
1677 if (!recvmsg)
1679 recvmsg->type = SMB_DIRECT_MSG_NEGOTIATE_REQ;
1681 ret = smb_direct_post_recv(t, recvmsg);
1697 put_recvmsg(t, recvmsg);
1798 struct smb_direct_recvmsg *recvmsg;
1800 while ((recvmsg = get_free_recvmsg(t)))
1801 mempool_free(recvmsg, t->recvmsg_mempool);
1802 while ((recvmsg = get_empty_recvmsg(t)))
1803 mempool_free(recvmsg, t->recvmsg_mempool);
1822 struct smb_direct_recvmsg *recvmsg;
1855 recvmsg = mempool_alloc(t->recvmsg_mempool, GFP_KERNEL);
1856 if (!recvmsg)
1858 recvmsg->transport = t;
1859 list_add(&recvmsg->list, &t->recvmsg_queue);
1958 struct smb_direct_recvmsg *recvmsg;
1970 recvmsg = get_first_reassembly(st);
1971 if (!recvmsg)
1974 ret = smb_direct_check_recvmsg(recvmsg);
1978 req = (struct smb_direct_negotiate_req *)recvmsg->packet;
1992 list_del(&recvmsg->list);
1994 put_recvmsg(st, recvmsg);