| 3922 | } |
| 3923 | |
| 3924 | static int |
| 3925 | nfp_flow_validate(struct rte_eth_dev *dev, |
| 3926 | const struct rte_flow_attr *attr, |
| 3927 | const struct rte_flow_item items[], |
| 3928 | const struct rte_flow_action actions[], |
| 3929 | struct rte_flow_error *error) |
| 3930 | { |
| 3931 | int ret; |
| 3932 | struct rte_flow *nfp_flow; |
| 3933 | struct nfp_flow_priv *priv; |
| 3934 | struct nfp_flower_representor *representor; |
| 3935 | |
| 3936 | representor = dev->data->dev_private; |
| 3937 | priv = representor->app_fw_flower->flow_priv; |
| 3938 | |
| 3939 | nfp_flow = nfp_flow_setup(representor, attr, items, actions, error, true); |
| 3940 | if (nfp_flow == NULL) { |
| 3941 | return rte_flow_error_set(error, ENOTSUP, |
| 3942 | RTE_FLOW_ERROR_TYPE_UNSPECIFIED, |
| 3943 | NULL, "This flow can not be offloaded."); |
| 3944 | } |
| 3945 | |
| 3946 | ret = nfp_flow_teardown(priv, nfp_flow, true); |
| 3947 | if (ret != 0) { |
| 3948 | return rte_flow_error_set(error, EINVAL, |
| 3949 | RTE_FLOW_ERROR_TYPE_UNSPECIFIED, |
| 3950 | NULL, "Flow resource free failed."); |
| 3951 | } |
| 3952 | |
| 3953 | nfp_flow_free(nfp_flow); |
| 3954 | |
| 3955 | return 0; |
| 3956 | } |
| 3957 | |
| 3958 | static struct rte_flow * |
| 3959 | nfp_flow_create(struct rte_eth_dev *dev, |
nothing calls this directly
no test coverage detected