Lines Matching refs:qp_flow

196 	struct usnic_ib_qp_grp_flow *qp_flow;
223 qp_flow = kzalloc(sizeof(*qp_flow), GFP_ATOMIC);
224 if (IS_ERR_OR_NULL(qp_flow)) {
225 err = qp_flow ? PTR_ERR(qp_flow) : -ENOMEM;
228 qp_flow->flow = flow;
229 qp_flow->trans_type = trans_type;
230 qp_flow->usnic_roce.port_num = port_num;
231 qp_flow->qp_grp = qp_grp;
232 return qp_flow;
241 static void release_roce_custom_flow(struct usnic_ib_qp_grp_flow *qp_flow)
243 usnic_fwd_dealloc_flow(qp_flow->flow);
244 usnic_transport_unrsrv_port(qp_flow->trans_type,
245 qp_flow->usnic_roce.port_num);
246 kfree(qp_flow);
258 struct usnic_ib_qp_grp_flow *qp_flow;
297 /* Create qp_flow */
298 qp_flow = kzalloc(sizeof(*qp_flow), GFP_ATOMIC);
299 if (IS_ERR_OR_NULL(qp_flow)) {
300 err = qp_flow ? PTR_ERR(qp_flow) : -ENOMEM;
303 qp_flow->flow = flow;
304 qp_flow->trans_type = trans_type;
305 qp_flow->udp.sock = sock;
306 qp_flow->qp_grp = qp_grp;
307 return qp_flow;
316 static void release_udp_flow(struct usnic_ib_qp_grp_flow *qp_flow)
318 usnic_fwd_dealloc_flow(qp_flow->flow);
319 usnic_transport_put_socket(qp_flow->udp.sock);
320 kfree(qp_flow);
327 struct usnic_ib_qp_grp_flow *qp_flow;
333 qp_flow = create_roce_custom_flow(qp_grp, trans_spec);
336 qp_flow = create_udp_flow(qp_grp, trans_spec);
344 if (!IS_ERR_OR_NULL(qp_flow)) {
345 list_add_tail(&qp_flow->link, &qp_grp->flows_lst);
346 usnic_debugfs_flow_add(qp_flow);
350 return qp_flow;
353 static void release_and_remove_flow(struct usnic_ib_qp_grp_flow *qp_flow)
355 usnic_debugfs_flow_remove(qp_flow);
356 list_del(&qp_flow->link);
358 switch (qp_flow->trans_type) {
360 release_roce_custom_flow(qp_flow);
363 release_udp_flow(qp_flow);
367 qp_flow->trans_type);
374 struct usnic_ib_qp_grp_flow *qp_flow, *tmp;
375 list_for_each_entry_safe(qp_flow, tmp, &qp_grp->flows_lst, link)
376 release_and_remove_flow(qp_flow);
388 struct usnic_ib_qp_grp_flow *qp_flow;
419 qp_flow = create_and_add_flow(qp_grp,
421 if (IS_ERR_OR_NULL(qp_flow)) {
422 status = qp_flow ? PTR_ERR(qp_flow) : -EFAULT;
434 qp_flow = create_and_add_flow(qp_grp,
436 if (IS_ERR_OR_NULL(qp_flow)) {
437 status = qp_flow ? PTR_ERR(qp_flow) : -EFAULT;
627 static int qp_grp_id_from_flow(struct usnic_ib_qp_grp_flow *qp_flow,
630 enum usnic_transport_type trans_type = qp_flow->trans_type;
636 *id = qp_flow->usnic_roce.port_num;
639 err = usnic_transport_sock_get_addr(qp_flow->udp.sock,
668 struct usnic_ib_qp_grp_flow *qp_flow;
707 qp_flow = create_and_add_flow(qp_grp, transport_spec);
708 if (IS_ERR_OR_NULL(qp_flow)) {
710 PTR_ERR(qp_flow));
711 err = qp_flow ? PTR_ERR(qp_flow) : -EFAULT;
715 err = qp_grp_id_from_flow(qp_flow, &qp_grp->grp_id);
725 release_and_remove_flow(qp_flow);