Lines Matching refs:flow
284 const char *log_info, const struct rte_flow *flow, int qos_index) in dpaa2_flow_qos_entry_log() argument
293 log_info, qos_index, flow->tc_id, flow->qos_real_key_size); in dpaa2_flow_qos_entry_log()
295 key = (uint8_t *)(size_t)flow->qos_rule.key_iova; in dpaa2_flow_qos_entry_log()
296 mask = (uint8_t *)(size_t)flow->qos_rule.mask_iova; in dpaa2_flow_qos_entry_log()
299 for (idx = 0; idx < flow->qos_real_key_size; idx++) in dpaa2_flow_qos_entry_log()
303 for (idx = 0; idx < flow->qos_real_key_size; idx++) in dpaa2_flow_qos_entry_log()
307 flow->ipaddr_rule.qos_ipsrc_offset, in dpaa2_flow_qos_entry_log()
308 flow->ipaddr_rule.qos_ipdst_offset); in dpaa2_flow_qos_entry_log()
312 const char *log_info, const struct rte_flow *flow) in dpaa2_flow_fs_entry_log() argument
321 log_info, flow->tc_index, flow->tc_id, flow->fs_real_key_size); in dpaa2_flow_fs_entry_log()
323 key = (uint8_t *)(size_t)flow->fs_rule.key_iova; in dpaa2_flow_fs_entry_log()
324 mask = (uint8_t *)(size_t)flow->fs_rule.mask_iova; in dpaa2_flow_fs_entry_log()
327 for (idx = 0; idx < flow->fs_real_key_size; idx++) in dpaa2_flow_fs_entry_log()
331 for (idx = 0; idx < flow->fs_real_key_size; idx++) in dpaa2_flow_fs_entry_log()
335 flow->ipaddr_rule.fs_ipsrc_offset, in dpaa2_flow_fs_entry_log()
336 flow->ipaddr_rule.fs_ipdst_offset); in dpaa2_flow_fs_entry_log()
613 struct dpaa2_dev_priv *priv, struct rte_flow *flow, in dpaa2_flow_proto_discrimination_rule() argument
643 key_iova = flow->qos_rule.key_iova + offset; in dpaa2_flow_proto_discrimination_rule()
644 mask_iova = flow->qos_rule.mask_iova + offset; in dpaa2_flow_proto_discrimination_rule()
669 key_iova = flow->fs_rule.key_iova + offset; in dpaa2_flow_proto_discrimination_rule()
670 mask_iova = flow->fs_rule.mask_iova + offset; in dpaa2_flow_proto_discrimination_rule()
776 struct rte_flow *flow, struct dpaa2_dev_priv *priv, in dpaa2_flow_rule_move_ipaddr_tail() argument
782 if (flow->ipaddr_rule.ipaddr_type == FLOW_NONE_IPADDR) in dpaa2_flow_rule_move_ipaddr_tail()
785 if (flow->ipaddr_rule.ipaddr_type == FLOW_IPV4_ADDR) in dpaa2_flow_rule_move_ipaddr_tail()
790 if (flow->ipaddr_rule.qos_ipsrc_offset >= 0) { in dpaa2_flow_rule_move_ipaddr_tail()
793 &flow->qos_rule, in dpaa2_flow_rule_move_ipaddr_tail()
794 flow->ipaddr_rule.qos_ipsrc_offset, in dpaa2_flow_rule_move_ipaddr_tail()
800 flow->ipaddr_rule.qos_ipsrc_offset = in dpaa2_flow_rule_move_ipaddr_tail()
806 if (flow->ipaddr_rule.qos_ipdst_offset >= 0) { in dpaa2_flow_rule_move_ipaddr_tail()
809 &flow->qos_rule, in dpaa2_flow_rule_move_ipaddr_tail()
810 flow->ipaddr_rule.qos_ipdst_offset, in dpaa2_flow_rule_move_ipaddr_tail()
816 flow->ipaddr_rule.qos_ipdst_offset = in dpaa2_flow_rule_move_ipaddr_tail()
822 if (flow->ipaddr_rule.fs_ipsrc_offset >= 0) { in dpaa2_flow_rule_move_ipaddr_tail()
825 &flow->fs_rule, in dpaa2_flow_rule_move_ipaddr_tail()
826 flow->ipaddr_rule.fs_ipsrc_offset, in dpaa2_flow_rule_move_ipaddr_tail()
832 flow->ipaddr_rule.fs_ipsrc_offset = in dpaa2_flow_rule_move_ipaddr_tail()
837 if (flow->ipaddr_rule.fs_ipdst_offset >= 0) { in dpaa2_flow_rule_move_ipaddr_tail()
840 &flow->fs_rule, in dpaa2_flow_rule_move_ipaddr_tail()
841 flow->ipaddr_rule.fs_ipdst_offset, in dpaa2_flow_rule_move_ipaddr_tail()
847 flow->ipaddr_rule.fs_ipdst_offset = in dpaa2_flow_rule_move_ipaddr_tail()
918 dpaa2_configure_flow_eth(struct rte_flow *flow, in dpaa2_configure_flow_eth() argument
952 flow->tc_id = group; in dpaa2_configure_flow_eth()
953 flow->tc_index = attr->priority; in dpaa2_configure_flow_eth()
993 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_eth()
1002 &flow->qos_rule, in dpaa2_configure_flow_eth()
1015 &flow->fs_rule, in dpaa2_configure_flow_eth()
1060 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_eth()
1069 &flow->qos_rule, in dpaa2_configure_flow_eth()
1082 &flow->fs_rule, in dpaa2_configure_flow_eth()
1126 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_eth()
1135 &flow->qos_rule, in dpaa2_configure_flow_eth()
1148 &flow->fs_rule, in dpaa2_configure_flow_eth()
1166 dpaa2_configure_flow_vlan(struct rte_flow *flow, in dpaa2_configure_flow_vlan() argument
1191 flow->tc_id = group; in dpaa2_configure_flow_vlan()
1192 flow->tc_index = attr->priority; in dpaa2_configure_flow_vlan()
1234 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_vlan()
1243 ret = dpaa2_flow_proto_discrimination_rule(priv, flow, in dpaa2_configure_flow_vlan()
1299 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_vlan()
1307 &flow->qos_rule, in dpaa2_configure_flow_vlan()
1320 &flow->fs_rule, in dpaa2_configure_flow_vlan()
1338 struct dpaa2_dev_priv *priv, struct rte_flow *flow, in dpaa2_configure_flow_ip_discrimation() argument
1376 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_ip_discrimation()
1388 ret = dpaa2_flow_proto_discrimination_rule(priv, flow, proto, group); in dpaa2_configure_flow_ip_discrimation()
1402 struct rte_flow *flow, in dpaa2_configure_flow_generic_ip() argument
1440 flow->tc_id = group; in dpaa2_configure_flow_generic_ip()
1441 flow->tc_index = attr->priority; in dpaa2_configure_flow_generic_ip()
1444 flow, pattern, &local_cfg, in dpaa2_configure_flow_generic_ip()
1474 flow->ipaddr_rule.ipaddr_type = FLOW_IPV4_ADDR; in dpaa2_configure_flow_generic_ip()
1480 flow->ipaddr_rule.ipaddr_type = FLOW_IPV6_ADDR; in dpaa2_configure_flow_generic_ip()
1537 &flow->qos_rule, in dpaa2_configure_flow_generic_ip()
1547 &flow->fs_rule, in dpaa2_configure_flow_generic_ip()
1555 flow->ipaddr_rule.qos_ipsrc_offset = in dpaa2_configure_flow_generic_ip()
1559 flow->ipaddr_rule.fs_ipsrc_offset = in dpaa2_configure_flow_generic_ip()
1627 &flow->qos_rule, in dpaa2_configure_flow_generic_ip()
1637 &flow->fs_rule, in dpaa2_configure_flow_generic_ip()
1644 flow->ipaddr_rule.qos_ipdst_offset = in dpaa2_configure_flow_generic_ip()
1648 flow->ipaddr_rule.fs_ipdst_offset = in dpaa2_configure_flow_generic_ip()
1690 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_generic_ip()
1708 &flow->qos_rule, in dpaa2_configure_flow_generic_ip()
1719 &flow->fs_rule, in dpaa2_configure_flow_generic_ip()
1735 dpaa2_configure_flow_icmp(struct rte_flow *flow, in dpaa2_configure_flow_icmp() argument
1760 flow->tc_id = group; in dpaa2_configure_flow_icmp()
1761 flow->tc_index = attr->priority; in dpaa2_configure_flow_icmp()
1805 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_icmp()
1814 ret = dpaa2_flow_proto_discrimination_rule(priv, flow, in dpaa2_configure_flow_icmp()
1868 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_icmp()
1877 &flow->qos_rule, in dpaa2_configure_flow_icmp()
1890 &flow->fs_rule, in dpaa2_configure_flow_icmp()
1937 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_icmp()
1946 &flow->qos_rule, in dpaa2_configure_flow_icmp()
1959 &flow->fs_rule, in dpaa2_configure_flow_icmp()
1977 dpaa2_configure_flow_udp(struct rte_flow *flow, in dpaa2_configure_flow_udp() argument
2002 flow->tc_id = group; in dpaa2_configure_flow_udp()
2003 flow->tc_index = attr->priority; in dpaa2_configure_flow_udp()
2040 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_udp()
2049 ret = dpaa2_flow_proto_discrimination_rule(priv, flow, in dpaa2_configure_flow_udp()
2104 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_udp()
2112 &flow->qos_rule, in dpaa2_configure_flow_udp()
2126 &flow->fs_rule, in dpaa2_configure_flow_udp()
2174 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_udp()
2183 &flow->qos_rule, in dpaa2_configure_flow_udp()
2197 &flow->fs_rule, in dpaa2_configure_flow_udp()
2216 dpaa2_configure_flow_tcp(struct rte_flow *flow, in dpaa2_configure_flow_tcp() argument
2241 flow->tc_id = group; in dpaa2_configure_flow_tcp()
2242 flow->tc_index = attr->priority; in dpaa2_configure_flow_tcp()
2279 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_tcp()
2288 ret = dpaa2_flow_proto_discrimination_rule(priv, flow, in dpaa2_configure_flow_tcp()
2343 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_tcp()
2352 &flow->qos_rule, in dpaa2_configure_flow_tcp()
2366 &flow->fs_rule, in dpaa2_configure_flow_tcp()
2414 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_tcp()
2423 &flow->qos_rule, in dpaa2_configure_flow_tcp()
2437 &flow->fs_rule, in dpaa2_configure_flow_tcp()
2456 dpaa2_configure_flow_sctp(struct rte_flow *flow, in dpaa2_configure_flow_sctp() argument
2482 flow->tc_id = group; in dpaa2_configure_flow_sctp()
2483 flow->tc_index = attr->priority; in dpaa2_configure_flow_sctp()
2520 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_sctp()
2529 ret = dpaa2_flow_proto_discrimination_rule(priv, flow, in dpaa2_configure_flow_sctp()
2584 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_sctp()
2593 &flow->qos_rule, in dpaa2_configure_flow_sctp()
2607 &flow->fs_rule, in dpaa2_configure_flow_sctp()
2655 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_sctp()
2664 &flow->qos_rule, in dpaa2_configure_flow_sctp()
2678 &flow->fs_rule, in dpaa2_configure_flow_sctp()
2697 dpaa2_configure_flow_gre(struct rte_flow *flow, in dpaa2_configure_flow_gre() argument
2722 flow->tc_id = group; in dpaa2_configure_flow_gre()
2723 flow->tc_index = attr->priority; in dpaa2_configure_flow_gre()
2760 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_gre()
2769 ret = dpaa2_flow_proto_discrimination_rule(priv, flow, in dpaa2_configure_flow_gre()
2825 ret = dpaa2_flow_rule_move_ipaddr_tail(flow, priv, group); in dpaa2_configure_flow_gre()
2834 &flow->qos_rule, in dpaa2_configure_flow_gre()
2848 &flow->fs_rule, in dpaa2_configure_flow_gre()
2866 dpaa2_configure_flow_raw(struct rte_flow *flow, in dpaa2_configure_flow_raw() argument
2901 flow->tc_id = group; in dpaa2_configure_flow_raw()
2902 flow->tc_index = attr->priority; in dpaa2_configure_flow_raw()
2923 ret = dpaa2_flow_rule_data_set_raw(&flow->qos_rule, spec->pattern, in dpaa2_configure_flow_raw()
2930 ret = dpaa2_flow_rule_data_set_raw(&flow->fs_rule, spec->pattern, in dpaa2_configure_flow_raw()
3320 dpaa2_generic_flow_set(struct rte_flow *flow, in dpaa2_generic_flow_set() argument
3353 ret = dpaa2_configure_flow_eth(flow, in dpaa2_generic_flow_set()
3362 ret = dpaa2_configure_flow_vlan(flow, in dpaa2_generic_flow_set()
3372 ret = dpaa2_configure_flow_generic_ip(flow, in dpaa2_generic_flow_set()
3381 ret = dpaa2_configure_flow_icmp(flow, in dpaa2_generic_flow_set()
3390 ret = dpaa2_configure_flow_udp(flow, in dpaa2_generic_flow_set()
3399 ret = dpaa2_configure_flow_tcp(flow, in dpaa2_generic_flow_set()
3408 ret = dpaa2_configure_flow_sctp(flow, in dpaa2_generic_flow_set()
3417 ret = dpaa2_configure_flow_gre(flow, in dpaa2_generic_flow_set()
3426 ret = dpaa2_configure_flow_raw(flow, in dpaa2_generic_flow_set()
3454 flow->action = RTE_FLOW_ACTION_TYPE_QUEUE; in dpaa2_generic_flow_set()
3460 dpaa2_flow_fs_table_extracts_log(priv, flow->tc_id); in dpaa2_generic_flow_set()
3462 &priv->extract.tc_key_extract[flow->tc_id].dpkg, in dpaa2_generic_flow_set()
3464 .tc_extract_param[flow->tc_id]) < 0) { in dpaa2_generic_flow_set()
3474 (uint64_t)priv->extract.tc_extract_param[flow->tc_id]; in dpaa2_generic_flow_set()
3475 tc_cfg.tc = flow->tc_id; in dpaa2_generic_flow_set()
3528 flow->qos_real_key_size = priv->extract in dpaa2_generic_flow_set()
3530 if (flow->ipaddr_rule.ipaddr_type == FLOW_IPV4_ADDR) { in dpaa2_generic_flow_set()
3531 if (flow->ipaddr_rule.qos_ipdst_offset >= in dpaa2_generic_flow_set()
3532 flow->ipaddr_rule.qos_ipsrc_offset) { in dpaa2_generic_flow_set()
3533 flow->qos_real_key_size = in dpaa2_generic_flow_set()
3534 flow->ipaddr_rule.qos_ipdst_offset + in dpaa2_generic_flow_set()
3537 flow->qos_real_key_size = in dpaa2_generic_flow_set()
3538 flow->ipaddr_rule.qos_ipsrc_offset + in dpaa2_generic_flow_set()
3541 } else if (flow->ipaddr_rule.ipaddr_type == in dpaa2_generic_flow_set()
3543 if (flow->ipaddr_rule.qos_ipdst_offset >= in dpaa2_generic_flow_set()
3544 flow->ipaddr_rule.qos_ipsrc_offset) { in dpaa2_generic_flow_set()
3545 flow->qos_real_key_size = in dpaa2_generic_flow_set()
3546 flow->ipaddr_rule.qos_ipdst_offset + in dpaa2_generic_flow_set()
3549 flow->qos_real_key_size = in dpaa2_generic_flow_set()
3550 flow->ipaddr_rule.qos_ipsrc_offset + in dpaa2_generic_flow_set()
3557 qos_index = flow->tc_id * priv->fs_entries + in dpaa2_generic_flow_set()
3558 flow->tc_index; in dpaa2_generic_flow_set()
3564 flow->qos_rule.key_size = FIXED_ENTRY_SIZE; in dpaa2_generic_flow_set()
3566 dpaa2_flow_qos_entry_log("Start add", flow, qos_index); in dpaa2_generic_flow_set()
3569 priv->token, &flow->qos_rule, in dpaa2_generic_flow_set()
3570 flow->tc_id, qos_index, in dpaa2_generic_flow_set()
3579 if (flow->tc_index >= priv->fs_entries) { in dpaa2_generic_flow_set()
3585 flow->fs_real_key_size = in dpaa2_generic_flow_set()
3586 priv->extract.tc_key_extract[flow->tc_id] in dpaa2_generic_flow_set()
3589 if (flow->ipaddr_rule.ipaddr_type == in dpaa2_generic_flow_set()
3591 if (flow->ipaddr_rule.fs_ipdst_offset >= in dpaa2_generic_flow_set()
3592 flow->ipaddr_rule.fs_ipsrc_offset) { in dpaa2_generic_flow_set()
3593 flow->fs_real_key_size = in dpaa2_generic_flow_set()
3594 flow->ipaddr_rule.fs_ipdst_offset + in dpaa2_generic_flow_set()
3597 flow->fs_real_key_size = in dpaa2_generic_flow_set()
3598 flow->ipaddr_rule.fs_ipsrc_offset + in dpaa2_generic_flow_set()
3601 } else if (flow->ipaddr_rule.ipaddr_type == in dpaa2_generic_flow_set()
3603 if (flow->ipaddr_rule.fs_ipdst_offset >= in dpaa2_generic_flow_set()
3604 flow->ipaddr_rule.fs_ipsrc_offset) { in dpaa2_generic_flow_set()
3605 flow->fs_real_key_size = in dpaa2_generic_flow_set()
3606 flow->ipaddr_rule.fs_ipdst_offset + in dpaa2_generic_flow_set()
3609 flow->fs_real_key_size = in dpaa2_generic_flow_set()
3610 flow->ipaddr_rule.fs_ipsrc_offset + in dpaa2_generic_flow_set()
3615 flow->fs_rule.key_size = FIXED_ENTRY_SIZE; in dpaa2_generic_flow_set()
3617 dpaa2_flow_fs_entry_log("Start add", flow); in dpaa2_generic_flow_set()
3620 flow->tc_id, flow->tc_index, in dpaa2_generic_flow_set()
3621 &flow->fs_rule, &action); in dpaa2_generic_flow_set()
3627 memcpy(&flow->action_cfg, &action, in dpaa2_generic_flow_set()
3633 flow->action = RTE_FLOW_ACTION_TYPE_RSS; in dpaa2_generic_flow_set()
3635 &priv->extract.tc_key_extract[flow->tc_id].dpkg); in dpaa2_generic_flow_set()
3650 &priv->extract.tc_key_extract[flow->tc_id].dpkg, in dpaa2_generic_flow_set()
3662 tc_cfg.tc = flow->tc_id; in dpaa2_generic_flow_set()
3699 qos_index = flow->tc_id * priv->fs_entries + in dpaa2_generic_flow_set()
3700 flow->tc_index; in dpaa2_generic_flow_set()
3707 flow->qos_real_key_size = in dpaa2_generic_flow_set()
3709 flow->qos_rule.key_size = FIXED_ENTRY_SIZE; in dpaa2_generic_flow_set()
3711 &flow->qos_rule, flow->tc_id, in dpaa2_generic_flow_set()
3735 ret = dpaa2_flow_entry_update(priv, flow->tc_id); in dpaa2_generic_flow_set()
3744 LIST_INSERT_HEAD(&priv->flows, flow, next); in dpaa2_generic_flow_set()
3748 LIST_INSERT_AFTER(curr, flow, next); in dpaa2_generic_flow_set()
3902 struct rte_flow *flow = NULL; in dpaa2_flow_create() local
3923 flow = rte_zmalloc(NULL, sizeof(struct rte_flow), RTE_CACHE_LINE_SIZE); in dpaa2_flow_create()
3924 if (!flow) { in dpaa2_flow_create()
3942 flow->qos_rule.key_iova = key_iova; in dpaa2_flow_create()
3943 flow->qos_rule.mask_iova = mask_iova; in dpaa2_flow_create()
3959 flow->fs_rule.key_iova = key_iova; in dpaa2_flow_create()
3960 flow->fs_rule.mask_iova = mask_iova; in dpaa2_flow_create()
3962 flow->ipaddr_rule.ipaddr_type = FLOW_NONE_IPADDR; in dpaa2_flow_create()
3963 flow->ipaddr_rule.qos_ipsrc_offset = in dpaa2_flow_create()
3965 flow->ipaddr_rule.qos_ipdst_offset = in dpaa2_flow_create()
3967 flow->ipaddr_rule.fs_ipsrc_offset = in dpaa2_flow_create()
3969 flow->ipaddr_rule.fs_ipdst_offset = in dpaa2_flow_create()
3974 ret = dpaa2_generic_flow_set(flow, dev, attr, pattern, in dpaa2_flow_create()
3992 return flow; in dpaa2_flow_create()
3998 rte_free((void *)flow); in dpaa2_flow_create()
4007 struct rte_flow *flow, in dpaa2_flow_destroy() argument
4014 switch (flow->action) { in dpaa2_flow_destroy()
4019 &flow->qos_rule); in dpaa2_flow_destroy()
4029 flow->tc_id, &flow->fs_rule); in dpaa2_flow_destroy()
4039 &flow->qos_rule); in dpaa2_flow_destroy()
4049 "Action type (%d) is not supported", flow->action); in dpaa2_flow_destroy()
4054 LIST_REMOVE(flow, next); in dpaa2_flow_destroy()
4055 rte_free((void *)(size_t)flow->qos_rule.key_iova); in dpaa2_flow_destroy()
4056 rte_free((void *)(size_t)flow->qos_rule.mask_iova); in dpaa2_flow_destroy()
4057 rte_free((void *)(size_t)flow->fs_rule.key_iova); in dpaa2_flow_destroy()
4058 rte_free((void *)(size_t)flow->fs_rule.mask_iova); in dpaa2_flow_destroy()
4060 rte_free(flow); in dpaa2_flow_destroy()
4083 struct rte_flow *flow = LIST_FIRST(&priv->flows); in dpaa2_flow_flush() local
4085 while (flow) { in dpaa2_flow_flush()
4086 struct rte_flow *next = LIST_NEXT(flow, next); in dpaa2_flow_flush()
4088 dpaa2_flow_destroy(dev, flow, error); in dpaa2_flow_flush()
4089 flow = next; in dpaa2_flow_flush()
4096 struct rte_flow *flow __rte_unused, in dpaa2_flow_query()
4116 struct rte_flow *flow; in dpaa2_flow_clean() local
4119 while ((flow = LIST_FIRST(&priv->flows))) in dpaa2_flow_clean()
4120 dpaa2_flow_destroy(dev, flow, NULL); in dpaa2_flow_clean()