X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnxt%2Ftf_ulp%2Fulp_def_rules.c;h=d8336d164ec255e8872d46270fade0364afe385e;hb=c8834a3663b7ff3269a1b4e6a2772999dd485760;hp=75640ce09246b2f6528923d0bfebff07fd0b3d1c;hpb=255add6762e224f7d2bb35ce57466fbd3bd83154;p=dpdk.git diff --git a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c index 75640ce092..d8336d164e 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c +++ b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c @@ -299,7 +299,7 @@ ulp_default_flow_create(struct rte_eth_dev *eth_dev, uint32_t *flow_id) { struct ulp_rte_hdr_field hdr_field[BNXT_ULP_PROTO_HDR_MAX]; - uint32_t comp_fld[BNXT_ULP_CF_IDX_LAST]; + uint64_t comp_fld[BNXT_ULP_CF_IDX_LAST]; struct bnxt_ulp_mapper_create_parms mapper_params = { 0 }; struct ulp_rte_act_prop act_prop; struct ulp_rte_act_bitmap act = { 0 }; @@ -318,11 +318,12 @@ ulp_default_flow_create(struct rte_eth_dev *eth_dev, mapper_params.comp_fld = comp_fld; mapper_params.class_tid = ulp_class_tid; mapper_params.flow_type = BNXT_ULP_FDB_TYPE_DEFAULT; + mapper_params.port_id = eth_dev->data->port_id; ulp_ctx = bnxt_ulp_eth_dev_ptr2_cntxt_get(eth_dev); if (!ulp_ctx) { - BNXT_TF_DBG(ERR, "ULP context is not initialized. " - "Failed to create default flow.\n"); + BNXT_TF_DBG(ERR, + "ULP context is not initialized. Failed to create dflt flow.\n"); return -EINVAL; } @@ -457,9 +458,7 @@ bnxt_ulp_destroy_df_rules(struct bnxt *bp, bool global) return; ulp_default_flow_destroy(bp->eth_dev, - info->port_to_app_flow_id); - ulp_default_flow_destroy(bp->eth_dev, - info->app_to_port_flow_id); + info->def_port_flow_id); memset(info, 0, sizeof(struct bnxt_ulp_df_rule_info)); return; } @@ -471,9 +470,7 @@ bnxt_ulp_destroy_df_rules(struct bnxt *bp, bool global) continue; ulp_default_flow_destroy(bp->eth_dev, - info->port_to_app_flow_id); - ulp_default_flow_destroy(bp->eth_dev, - info->app_to_port_flow_id); + info->def_port_flow_id); memset(info, 0, sizeof(struct bnxt_ulp_df_rule_info)); } } @@ -496,6 +493,10 @@ bnxt_create_port_app_df_rule(struct bnxt *bp, uint8_t flow_type, } }; + if (!flow_type) { + *flow_id = 0; + return 0; + } return ulp_default_flow_create(bp->eth_dev, param_list, flow_type, flow_id); } @@ -505,7 +506,7 @@ bnxt_ulp_create_df_rules(struct bnxt *bp) { struct bnxt_ulp_df_rule_info *info; uint8_t port_id; - int rc; + int rc = 0; if (!BNXT_TRUFLOW_EN(bp) || BNXT_ETH_DEV_IS_REPRESENTOR(bp->eth_dev) || !bp->ulp_ctx) @@ -513,39 +514,22 @@ bnxt_ulp_create_df_rules(struct bnxt *bp) port_id = bp->eth_dev->data->port_id; info = &bp->ulp_ctx->cfg_data->df_rule_info[port_id]; - rc = bnxt_create_port_app_df_rule(bp, BNXT_ULP_DF_TPL_PORT_TO_VS, - &info->port_to_app_flow_id); + rc = bnxt_create_port_app_df_rule(bp, + BNXT_ULP_DF_TPL_DEFAULT_UPLINK_PORT, + &info->def_port_flow_id); if (rc) { BNXT_TF_DBG(ERR, "Failed to create port to app default rule\n"); return rc; } - bp->tx_cfa_action = 0; - rc = bnxt_create_port_app_df_rule(bp, BNXT_ULP_DF_TPL_VS_TO_PORT, - &info->app_to_port_flow_id); - if (rc) { - BNXT_TF_DBG(ERR, - "Failed to create app to port default rule\n"); - goto port_to_app_free; - } - rc = ulp_default_flow_db_cfa_action_get(bp->ulp_ctx, - info->app_to_port_flow_id, + info->def_port_flow_id, &bp->tx_cfa_action); if (rc) - goto app_to_port_free; - + bp->tx_cfa_action = 0; info->valid = true; return 0; - -app_to_port_free: - ulp_default_flow_destroy(bp->eth_dev, info->app_to_port_flow_id); -port_to_app_free: - ulp_default_flow_destroy(bp->eth_dev, info->port_to_app_flow_id); - info->valid = false; - - return rc; } static int32_t @@ -598,22 +582,15 @@ bnxt_ulp_create_vfr_default_rules(struct rte_eth_dev *vfr_ethdev) } memset(info, 0, sizeof(struct bnxt_ulp_vfr_rule_info)); - rc = bnxt_create_port_vfr_default_rule(bp, BNXT_ULP_DF_TPL_VFREP_TO_VF, - vfr_port_id, - &info->rep2vf_flow_id); - if (rc) { - BNXT_TF_DBG(ERR, "Failed to create VFREP to VF default rule\n"); - goto error; - } - rc = bnxt_create_port_vfr_default_rule(bp, BNXT_ULP_DF_TPL_VF_TO_VFREP, + rc = bnxt_create_port_vfr_default_rule(bp, BNXT_ULP_DF_TPL_DEFAULT_VFR, vfr_port_id, - &info->vf2rep_flow_id); + &info->vfr_flow_id); if (rc) { - BNXT_TF_DBG(ERR, "Failed to create VF to VFREP default rule\n"); + BNXT_TF_DBG(ERR, "Failed to create VFR default rule\n"); goto error; } rc = ulp_default_flow_db_cfa_action_get(bp->ulp_ctx, - info->rep2vf_flow_id, + info->vfr_flow_id, &vfr->vfr_tx_cfa_action); if (rc) { BNXT_TF_DBG(ERR, "Failed to get the tx cfa action\n"); @@ -626,10 +603,8 @@ bnxt_ulp_create_vfr_default_rules(struct rte_eth_dev *vfr_ethdev) return 0; error: - if (info->rep2vf_flow_id) - ulp_default_flow_destroy(bp->eth_dev, info->rep2vf_flow_id); - if (info->vf2rep_flow_id) - ulp_default_flow_destroy(bp->eth_dev, info->vf2rep_flow_id); + if (info->vfr_flow_id) + ulp_default_flow_destroy(bp->eth_dev, info->vfr_flow_id); return rc; } @@ -653,8 +628,7 @@ bnxt_ulp_delete_vfr_default_rules(struct bnxt_representor *vfr) BNXT_TF_DBG(ERR, "VFR already freed\n"); return -EINVAL; } - ulp_default_flow_destroy(bp->eth_dev, info->rep2vf_flow_id); - ulp_default_flow_destroy(bp->eth_dev, info->vf2rep_flow_id); + ulp_default_flow_destroy(bp->eth_dev, info->vfr_flow_id); vfr->vfr_tx_cfa_action = 0; memset(info, 0, sizeof(struct bnxt_ulp_vfr_rule_info)); return 0;