From: Kishore Padmanabha <kishore.padmana...@broadcom.com>

Fix to use the vf's vnic port for ingress flows whose
port action is a vf rep port.

Signed-off-by: Kishore Padmanabha <kishore.padmana...@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khapa...@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.ko...@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvv...@broadcom.com>
---
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c 
b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
index 2f6a15d..b943465 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
@@ -1425,6 +1425,8 @@ ulp_rte_parser_act_port_set(struct ulp_rte_parser_params 
*param,
        uint16_t pid_s;
        uint32_t pid;
        struct ulp_rte_act_prop *act = &param->act_prop;
+       enum bnxt_ulp_intf_type port_type;
+       uint32_t vnic_type;
 
        /* Get the direction */
        dir = ULP_COMP_FLD_IDX_RD(param, BNXT_ULP_CF_IDX_DIRECTION);
@@ -1439,9 +1441,15 @@ ulp_rte_parser_act_port_set(struct ulp_rte_parser_params 
*param,
                       &pid, BNXT_ULP_ACT_PROP_SZ_VPORT);
        } else {
                /* For ingress direction, fill vnic */
+               port_type = ULP_COMP_FLD_IDX_RD(param,
+                                               BNXT_ULP_CF_IDX_ACT_PORT_TYPE);
+               if (port_type == BNXT_ULP_INTF_TYPE_VF_REP)
+                       vnic_type = BNXT_ULP_VF_FUNC_VNIC;
+               else
+                       vnic_type = BNXT_ULP_DRV_FUNC_VNIC;
+
                if (ulp_port_db_default_vnic_get(param->ulp_ctx, ifindex,
-                                                BNXT_ULP_DRV_FUNC_VNIC,
-                                                &pid_s))
+                                                vnic_type, &pid_s))
                        return BNXT_TF_RC_ERROR;
 
                pid = pid_s;
-- 
2.7.4

Reply via email to