Lines Matching refs:flow
140 struct rte_flow *flow; member
190 struct rte_flow *flow);
194 struct rte_flow *flow,
206 static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
523 struct rte_flow *flow = info->flow; in tap_flow_create_eth() local
537 if (!flow) in tap_flow_create_eth()
539 msg = &flow->msg; in tap_flow_create_eth()
577 struct rte_flow *flow = info->flow; in tap_flow_create_vlan() local
596 if (!flow) in tap_flow_create_vlan()
598 msg = &flow->msg; in tap_flow_create_vlan()
637 struct rte_flow *flow = info->flow; in tap_flow_create_ipv4() local
649 if (!flow) in tap_flow_create_ipv4()
651 msg = &flow->msg; in tap_flow_create_ipv4()
692 struct rte_flow *flow = info->flow; in tap_flow_create_ipv6() local
705 if (!flow) in tap_flow_create_ipv6()
707 msg = &flow->msg; in tap_flow_create_ipv6()
748 struct rte_flow *flow = info->flow; in tap_flow_create_udp() local
761 if (!flow) in tap_flow_create_udp()
763 msg = &flow->msg; in tap_flow_create_udp()
794 struct rte_flow *flow = info->flow; in tap_flow_create_tcp() local
807 if (!flow) in tap_flow_create_tcp()
809 msg = &flow->msg; in tap_flow_create_tcp()
919 add_action(struct rte_flow *flow, size_t *act_index, struct action_data *adata) in add_action() argument
921 struct nlmsg *msg = &flow->msg; in add_action()
982 add_actions(struct rte_flow *flow, int nb_actions, struct action_data *data, in add_actions() argument
985 struct nlmsg *msg = &flow->msg; in add_actions()
992 if (add_action(flow, &act_index, data + i) < 0) in add_actions()
1033 struct rte_flow *flow, in priv_flow_process() argument
1040 .flow = flow, in priv_flow_process()
1061 } else if (flow) { in priv_flow_process()
1065 flow->msg.t.tcm_info = TC_H_MAKE(prio << 16, in priv_flow_process()
1066 flow->msg.t.tcm_info); in priv_flow_process()
1068 if (flow) { in priv_flow_process()
1077 flow->msg.t.tcm_parent = TC_H_MAKE(TC_H_INGRESS, 0); in priv_flow_process()
1080 flow->msg.t.tcm_parent = in priv_flow_process()
1084 tap_nlattr_add(&flow->msg.nh, TCA_KIND, sizeof("flower"), "flower"); in priv_flow_process()
1085 if (tap_nlattr_nested_start(&flow->msg, TCA_OPTIONS) < 0) in priv_flow_process()
1113 if (flow && cur_item->convert) { in priv_flow_process()
1119 if (flow) { in priv_flow_process()
1121 tap_nlattr_add16(&flow->msg.nh, TCA_FLOWER_KEY_ETH_TYPE, in priv_flow_process()
1123 tap_nlattr_add16(&flow->msg.nh, in priv_flow_process()
1128 tap_nlattr_add16(&flow->msg.nh, TCA_FLOWER_KEY_ETH_TYPE, in priv_flow_process()
1132 if (mirred && flow) { in priv_flow_process()
1152 if (add_actions(flow, 1, &adata, TCA_FLOWER_ACT) < 0) in priv_flow_process()
1167 if (flow) { in priv_flow_process()
1175 err = add_actions(flow, 1, &adata, in priv_flow_process()
1182 if (flow) { in priv_flow_process()
1191 err = add_actions(flow, 1, &adata, in priv_flow_process()
1205 if (flow) { in priv_flow_process()
1216 err = add_actions(flow, 1, &adata, in priv_flow_process()
1232 if (flow) in priv_flow_process()
1233 err = rss_add_actions(flow, pmd, rss, error); in priv_flow_process()
1251 if (flow) in priv_flow_process()
1252 tap_nlattr_nested_finish(&flow->msg); /* nested TCA_OPTIONS */ in priv_flow_process()
1301 tap_flow_set_handle(struct rte_flow *flow) in tap_flow_set_handle() argument
1305 if (sizeof(flow) > 4) in tap_flow_set_handle()
1306 handle = rte_jhash(&flow, sizeof(flow), 1); in tap_flow_set_handle()
1308 handle = (uintptr_t)flow; in tap_flow_set_handle()
1312 flow->msg.t.tcm_handle = handle; in tap_flow_set_handle()
1323 tap_flow_free(struct pmd_internals *pmd, struct rte_flow *flow) in tap_flow_free() argument
1327 if (!flow) in tap_flow_free()
1333 if (flow->bpf_fd[i] != 0) { in tap_flow_free()
1334 close(flow->bpf_fd[i]); in tap_flow_free()
1335 flow->bpf_fd[i] = 0; in tap_flow_free()
1339 bpf_rss_key(KEY_CMD_RELEASE, &flow->key_idx); in tap_flow_free()
1340 flow->key_idx = 0; in tap_flow_free()
1344 rte_free(flow); in tap_flow_free()
1362 struct rte_flow *flow = NULL; in tap_flow_create() local
1383 flow = rte_zmalloc(__func__, sizeof(struct rte_flow), 0); in tap_flow_create()
1384 if (!flow) { in tap_flow_create()
1389 msg = &flow->msg; in tap_flow_create()
1393 tap_flow_set_handle(flow); in tap_flow_create()
1394 if (priv_flow_process(pmd, attr, items, actions, error, flow, 0)) in tap_flow_create()
1412 LIST_INSERT_HEAD(&pmd->flows, flow, next); in tap_flow_create()
1458 flow->remote_flow = remote_flow; in tap_flow_create()
1460 return flow; in tap_flow_create()
1464 if (flow) in tap_flow_create()
1465 tap_flow_free(pmd, flow); in tap_flow_create()
1483 struct rte_flow *flow, in tap_flow_destroy_pmd() argument
1486 struct rte_flow *remote_flow = flow->remote_flow; in tap_flow_destroy_pmd()
1489 LIST_REMOVE(flow, next); in tap_flow_destroy_pmd()
1490 flow->msg.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in tap_flow_destroy_pmd()
1491 flow->msg.nh.nlmsg_type = RTM_DELTFILTER; in tap_flow_destroy_pmd()
1493 ret = tap_nl_send(pmd->nlsk_fd, &flow->msg.nh); in tap_flow_destroy_pmd()
1540 tap_flow_free(pmd, flow); in tap_flow_destroy_pmd()
1552 struct rte_flow *flow, in tap_flow_destroy() argument
1557 return tap_flow_destroy_pmd(pmd, flow, error); in tap_flow_destroy()
1647 struct rte_flow *flow; in tap_flow_flush() local
1650 flow = LIST_FIRST(&pmd->flows); in tap_flow_flush()
1651 if (tap_flow_destroy(dev, flow, error) < 0) in tap_flow_flush()
2067 static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd, in rss_add_actions() argument
2088 err = bpf_rss_key(KEY_CMD_GET, &flow->key_idx); in rss_add_actions()
2106 &flow->key_idx, &rss_entry); in rss_add_actions()
2111 flow->key_idx, errno, strerror(errno)); in rss_add_actions()
2125 flow->bpf_fd[SEC_L3_L4] = in rss_add_actions()
2126 tap_flow_bpf_calc_l3_l4_hash(flow->key_idx, pmd->map_fd); in rss_add_actions()
2127 if (flow->bpf_fd[SEC_L3_L4] < 0) { in rss_add_actions()
2145 .bpf_fd = flow->bpf_fd[SEC_L3_L4], in rss_add_actions()
2154 if (add_actions(flow, RTE_DIM(adata), adata, in rss_add_actions()