| 2398 | } |
| 2399 | |
| 2400 | static int |
| 2401 | sfc_flow_parse(struct rte_eth_dev *dev, |
| 2402 | const struct rte_flow_attr *attr, |
| 2403 | const struct rte_flow_item pattern[], |
| 2404 | const struct rte_flow_action actions[], |
| 2405 | struct rte_flow *flow, |
| 2406 | struct rte_flow_error *error) |
| 2407 | { |
| 2408 | struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev); |
| 2409 | const struct sfc_flow_ops_by_spec *ops; |
| 2410 | int rc; |
| 2411 | |
| 2412 | rc = sfc_flow_parse_attr(sa, attr, flow, error); |
| 2413 | if (rc != 0) |
| 2414 | return rc; |
| 2415 | |
| 2416 | ops = sfc_flow_get_ops_by_spec(flow); |
| 2417 | if (ops == NULL || ops->parse == NULL) { |
| 2418 | rte_flow_error_set(error, ENOTSUP, |
| 2419 | RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, |
| 2420 | "No backend to handle this flow"); |
| 2421 | return -rte_errno; |
| 2422 | } |
| 2423 | |
| 2424 | return ops->parse(dev, pattern, actions, flow, error); |
| 2425 | } |
| 2426 | |
| 2427 | static struct rte_flow * |
| 2428 | sfc_flow_zmalloc(struct rte_flow_error *error) |
no test coverage detected