]> git.droids-corp.org - dpdk.git/commitdiff
net/bnxt: add computed header field in result opcode
authorKishore Padmanabha <kishore.padmanabha@broadcom.com>
Fri, 12 Jun 2020 12:49:56 +0000 (18:19 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 30 Jun 2020 12:52:30 +0000 (14:52 +0200)
Added support for computed header fields in the result field
processing. The computed header fields are fields that are extracted
from header fields or derived from data that is not part of the flow
command but shall be used in setting up of the flow rule.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
drivers/net/bnxt/tf_ulp/ulp_mapper.c
drivers/net/bnxt/tf_ulp/ulp_template_db.h

index e60d9d572b883d94ab073b8696c88d7eca9f4025..5984bbba7e66f32d90e7e98713ee1b2582ee13c4 100644 (file)
@@ -662,6 +662,22 @@ ulp_mapper_result_field_process(struct bnxt_ulp_mapper_parms *parms,
                        return -EINVAL;
                }
                break;
+       case BNXT_ULP_RESULT_OPC_SET_TO_COMP_HDR_FIELD:
+               if (!ulp_operand_read(fld->result_operand,
+                                     (uint8_t *)&idx,
+                                     sizeof(uint16_t))) {
+                       BNXT_TF_DBG(ERR, "%s key operand read failed.\n", name);
+                       return -EINVAL;
+               }
+               idx = tfp_be_to_cpu_16(idx);
+               if (idx < BNXT_ULP_CHF_IDX_LAST)
+                       val = ulp_blob_push_32(blob, &parms->comp_fld[idx],
+                                              fld->field_bit_size);
+               if (!val) {
+                       BNXT_TF_DBG(ERR, "%s push to key blob failed\n", name);
+                       return -EINVAL;
+               }
+               break;
        default:
                return -EINVAL;
        }
index 4e1836658b7d5584d6e323c53c63ad85c6e5f983..6591d78c77deefe81892db640bb00f12d49f2851 100644 (file)
@@ -213,7 +213,8 @@ enum bnxt_ulp_result_opc {
        BNXT_ULP_RESULT_OPC_SET_TO_ENCAP_ACT_PROP_SZ = 2,
        BNXT_ULP_RESULT_OPC_SET_TO_REGFILE = 3,
        BNXT_ULP_RESULT_OPC_SET_TO_DEF_REGFILE = 4,
-       BNXT_ULP_RESULT_OPC_LAST = 5
+       BNXT_ULP_RESULT_OPC_SET_TO_COMP_HDR_FIELD = 5,
+       BNXT_ULP_RESULT_OPC_LAST = 6
 };
 
 enum bnxt_ulp_search_before_alloc {