MCPcopy Create free account
hub / github.com/F-Stack/f-stack / nfp_flow_create

Function nfp_flow_create

dpdk/drivers/net/nfp/nfp_flow.c:3958–4020  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3956}
3957
3958static struct rte_flow *
3959nfp_flow_create(struct rte_eth_dev *dev,
3960 const struct rte_flow_attr *attr,
3961 const struct rte_flow_item items[],
3962 const struct rte_flow_action actions[],
3963 struct rte_flow_error *error)
3964{
3965 int ret;
3966 struct rte_flow *nfp_flow;
3967 struct nfp_flow_priv *priv;
3968 struct nfp_app_fw_flower *app_fw_flower;
3969 struct nfp_flower_representor *representor;
3970
3971 representor = dev->data->dev_private;
3972 app_fw_flower = representor->app_fw_flower;
3973 priv = app_fw_flower->flow_priv;
3974
3975 nfp_flow = nfp_flow_setup(representor, attr, items, actions, error, false);
3976 if (nfp_flow == NULL) {
3977 rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
3978 NULL, "This flow can not be offloaded.");
3979 return NULL;
3980 }
3981
3982 /* Add the flow to hardware */
3983 if (nfp_flow->install_flag) {
3984 ret = nfp_flower_cmsg_flow_add(app_fw_flower, nfp_flow);
3985 if (ret != 0) {
3986 rte_flow_error_set(error, EINVAL,
3987 RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
3988 NULL, "Add flow to firmware failed.");
3989 goto flow_teardown;
3990 }
3991 }
3992
3993 /* Add the flow to flow hash table */
3994 ret = nfp_flow_table_add_merge(priv, nfp_flow);
3995 if (ret != 0) {
3996 rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
3997 NULL, "Add flow to the flow table failed.");
3998 goto flow_teardown;
3999 }
4000
4001 /* Update meter object ref count */
4002 if (nfp_flow->mtr_id != NFP_MAX_MTR_CNT) {
4003 ret = nfp_mtr_update_ref_cnt(app_fw_flower->mtr_priv,
4004 nfp_flow->mtr_id, true);
4005 if (ret != 0) {
4006 rte_flow_error_set(error, EINVAL,
4007 RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
4008 NULL, "Update meter ref_cnt failed.");
4009 goto flow_teardown;
4010 }
4011 }
4012
4013 return nfp_flow;
4014
4015flow_teardown:

Callers

nothing calls this directly

Calls 7

nfp_flow_setupFunction · 0.85
rte_flow_error_setFunction · 0.85
nfp_flower_cmsg_flow_addFunction · 0.85
nfp_flow_table_add_mergeFunction · 0.85
nfp_mtr_update_ref_cntFunction · 0.85
nfp_flow_teardownFunction · 0.85
nfp_flow_freeFunction · 0.85

Tested by

no test coverage detected