Lines Matching defs:qp_flow

210 	struct usnic_ib_qp_grp_flow *qp_flow;
235 qp_flow = kzalloc(sizeof(*qp_flow), GFP_ATOMIC);
236 if (!qp_flow) {
240 qp_flow->flow = flow;
241 qp_flow->trans_type = trans_type;
242 qp_flow->usnic_roce.port_num = port_num;
243 qp_flow->qp_grp = qp_grp;
244 return qp_flow;
253 static void release_roce_custom_flow(struct usnic_ib_qp_grp_flow *qp_flow)
255 usnic_fwd_dealloc_flow(qp_flow->flow);
256 usnic_transport_unrsrv_port(qp_flow->trans_type,
257 qp_flow->usnic_roce.port_num);
258 kfree(qp_flow);
270 struct usnic_ib_qp_grp_flow *qp_flow;
307 /* Create qp_flow */
308 qp_flow = kzalloc(sizeof(*qp_flow), GFP_ATOMIC);
309 if (!qp_flow) {
313 qp_flow->flow = flow;
314 qp_flow->trans_type = trans_type;
315 qp_flow->udp.sock = sock;
316 qp_flow->qp_grp = qp_grp;
317 return qp_flow;
326 static void release_udp_flow(struct usnic_ib_qp_grp_flow *qp_flow)
328 usnic_fwd_dealloc_flow(qp_flow->flow);
329 usnic_transport_put_socket(qp_flow->udp.sock);
330 kfree(qp_flow);
337 struct usnic_ib_qp_grp_flow *qp_flow;
343 qp_flow = create_roce_custom_flow(qp_grp, trans_spec);
346 qp_flow = create_udp_flow(qp_grp, trans_spec);
354 if (!IS_ERR_OR_NULL(qp_flow)) {
355 list_add_tail(&qp_flow->link, &qp_grp->flows_lst);
356 usnic_debugfs_flow_add(qp_flow);
360 return qp_flow;
363 static void release_and_remove_flow(struct usnic_ib_qp_grp_flow *qp_flow)
365 usnic_debugfs_flow_remove(qp_flow);
366 list_del(&qp_flow->link);
368 switch (qp_flow->trans_type) {
370 release_roce_custom_flow(qp_flow);
373 release_udp_flow(qp_flow);
377 qp_flow->trans_type);
384 struct usnic_ib_qp_grp_flow *qp_flow, *tmp;
385 list_for_each_entry_safe(qp_flow, tmp, &qp_grp->flows_lst, link)
386 release_and_remove_flow(qp_flow);
397 struct usnic_ib_qp_grp_flow *qp_flow;
427 qp_flow = create_and_add_flow(qp_grp,
429 if (IS_ERR_OR_NULL(qp_flow)) {
430 status = qp_flow ? PTR_ERR(qp_flow) : -EFAULT;
442 qp_flow = create_and_add_flow(qp_grp,
444 if (IS_ERR_OR_NULL(qp_flow)) {
445 status = qp_flow ? PTR_ERR(qp_flow) : -EFAULT;
635 static int qp_grp_id_from_flow(struct usnic_ib_qp_grp_flow *qp_flow,
638 enum usnic_transport_type trans_type = qp_flow->trans_type;
644 *id = qp_flow->usnic_roce.port_num;
647 err = usnic_transport_sock_get_addr(qp_flow->udp.sock,
675 struct usnic_ib_qp_grp_flow *qp_flow;
705 qp_flow = create_and_add_flow(qp_grp, transport_spec);
706 if (IS_ERR_OR_NULL(qp_flow)) {
708 PTR_ERR(qp_flow));
709 err = qp_flow ? PTR_ERR(qp_flow) : -EFAULT;
713 err = qp_grp_id_from_flow(qp_flow, &qp_grp->grp_id);
723 release_and_remove_flow(qp_flow);