net/bnxt: update compute field list and access macros
[dpdk.git] / drivers / net / bnxt / tf_ulp / bnxt_ulp_flow.c
index 7783f85..6eb2d61 100644 (file)
@@ -69,7 +69,7 @@ bnxt_ulp_flow_create(struct rte_eth_dev *dev,
 {
        struct bnxt_ulp_mapper_create_parms mapper_cparms = { 0 };
        struct ulp_rte_parser_params params;
-       struct bnxt_ulp_context *ulp_ctx = NULL;
+       struct bnxt_ulp_context *ulp_ctx;
        uint32_t class_id, act_tmpl;
        struct rte_flow *flow_id;
        uint32_t fid;
@@ -90,14 +90,17 @@ bnxt_ulp_flow_create(struct rte_eth_dev *dev,
 
        /* Initialize the parser params */
        memset(&params, 0, sizeof(struct ulp_rte_parser_params));
+       params.ulp_ctx = ulp_ctx;
 
        if (attr->egress)
                params.dir = ULP_DIR_EGRESS;
 
        /* copy the device port id and direction for further processing */
-       ULP_UTIL_CHF_IDX_WR(&params, BNXT_ULP_CHF_IDX_INCOMING_IF,
+       ULP_COMP_FLD_IDX_WR(&params, BNXT_ULP_CF_IDX_INCOMING_IF,
                            dev->data->port_id);
-       ULP_UTIL_CHF_IDX_WR(&params, BNXT_ULP_CHF_IDX_DIRECTION, params.dir);
+       ULP_COMP_FLD_IDX_WR(&params, BNXT_ULP_CF_IDX_DIRECTION, params.dir);
+       ULP_COMP_FLD_IDX_WR(&params, BNXT_ULP_CF_IDX_SVIF_FLAG,
+                           BNXT_ULP_INVALID_SVIF_VAL);
 
        /* Parse the rte flow pattern */
        ret = bnxt_ulp_rte_parser_hdr_parse(pattern, &params);
@@ -120,6 +123,7 @@ bnxt_ulp_flow_create(struct rte_eth_dev *dev,
        mapper_cparms.app_priority = attr->priority;
        mapper_cparms.hdr_bitmap = &params.hdr_bitmap;
        mapper_cparms.hdr_field = params.hdr_field;
+       mapper_cparms.comp_fld = params.comp_fld;
        mapper_cparms.act = &params.act_bitmap;
        mapper_cparms.act_prop = &params.act_prop;
        mapper_cparms.class_tid = class_id;
@@ -142,7 +146,7 @@ parse_error:
 
 /* Function to validate the rte flow. */
 static int
-bnxt_ulp_flow_validate(struct rte_eth_dev *dev __rte_unused,
+bnxt_ulp_flow_validate(struct rte_eth_dev *dev,
                       const struct rte_flow_attr *attr,
                       const struct rte_flow_item pattern[],
                       const struct rte_flow_action actions[],
@@ -151,6 +155,7 @@ bnxt_ulp_flow_validate(struct rte_eth_dev *dev __rte_unused,
        struct ulp_rte_parser_params            params;
        uint32_t class_id, act_tmpl;
        int ret;
+       struct bnxt_ulp_context *ulp_ctx;
 
        if (bnxt_ulp_flow_validate_args(attr,
                                        pattern, actions,
@@ -159,8 +164,15 @@ bnxt_ulp_flow_validate(struct rte_eth_dev *dev __rte_unused,
                return -EINVAL;
        }
 
+       ulp_ctx = bnxt_ulp_eth_dev_ptr2_cntxt_get(dev);
+       if (!ulp_ctx) {
+               BNXT_TF_DBG(ERR, "ULP context is not initialized\n");
+               return -EINVAL;
+       }
+
        /* Initialize the parser params */
        memset(&params, 0, sizeof(struct ulp_rte_parser_params));
+       params.ulp_ctx = ulp_ctx;
 
        if (attr->egress)
                params.dir = ULP_DIR_EGRESS;