Configure loopback parif for full offload egress flows.
PARIF is handler to a partition of the physical port.
The full offload egress flows for the VF rep interface must
use loopback parif to offload missed flows. The miss
flow path for the VF rep interface has to be loopback interface
parif entry and for the non-VF rep interface it has to be the
interface's parif entry.
Fixes:
fe82f3e02701 ("net/bnxt: support exact match templates")
Cc: stable@dpdk.org
Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Reviewed-by: Shahaji Bhosle <sbhosle@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
ULP_COMP_FLD_IDX_WR(params,
BNXT_ULP_CF_IDX_VF_FUNC_PARIF,
parif);
ULP_COMP_FLD_IDX_WR(params,
BNXT_ULP_CF_IDX_VF_FUNC_PARIF,
parif);
+
+ /* populate the loopback parif */
+ ULP_COMP_FLD_IDX_WR(params,
+ BNXT_ULP_CF_IDX_LOOPBACK_PARIF,
+ BNXT_ULP_SYM_VF_FUNC_PARIF);
+
} else {
/* Set DRV func PARIF */
if (ulp_port_db_parif_get(params->ulp_ctx, ifindex,
} else {
/* Set DRV func PARIF */
if (ulp_port_db_parif_get(params->ulp_ctx, ifindex,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
- (BNXT_ULP_CF_IDX_VF_FUNC_PARIF >> 8) & 0xff,
- BNXT_ULP_CF_IDX_VF_FUNC_PARIF & 0xff,
+ (BNXT_ULP_CF_IDX_LOOPBACK_PARIF >> 8) & 0xff,
+ BNXT_ULP_CF_IDX_LOOPBACK_PARIF & 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
- (BNXT_ULP_CF_IDX_VF_FUNC_PARIF >> 8) & 0xff,
- BNXT_ULP_CF_IDX_VF_FUNC_PARIF & 0xff,
+ (BNXT_ULP_CF_IDX_LOOPBACK_PARIF >> 8) & 0xff,
+ BNXT_ULP_CF_IDX_LOOPBACK_PARIF & 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
- (BNXT_ULP_CF_IDX_VF_FUNC_PARIF >> 8) & 0xff,
- BNXT_ULP_CF_IDX_VF_FUNC_PARIF & 0xff,
+ (BNXT_ULP_CF_IDX_LOOPBACK_PARIF >> 8) & 0xff,
+ BNXT_ULP_CF_IDX_LOOPBACK_PARIF & 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
- (BNXT_ULP_CF_IDX_VF_FUNC_PARIF >> 8) & 0xff,
- BNXT_ULP_CF_IDX_VF_FUNC_PARIF & 0xff,
+ (BNXT_ULP_CF_IDX_LOOPBACK_PARIF >> 8) & 0xff,
+ BNXT_ULP_CF_IDX_LOOPBACK_PARIF & 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_true = {
- (BNXT_ULP_CF_IDX_VF_FUNC_PARIF >> 8) & 0xff,
- BNXT_ULP_CF_IDX_VF_FUNC_PARIF & 0xff,
+ (BNXT_ULP_CF_IDX_LOOPBACK_PARIF >> 8) & 0xff,
+ BNXT_ULP_CF_IDX_LOOPBACK_PARIF & 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
.result_operand_false = {
BNXT_ULP_CF_IDX_L3_HDR_CNT = 40,
BNXT_ULP_CF_IDX_L4_HDR_CNT = 41,
BNXT_ULP_CF_IDX_VFR_MODE = 42,
BNXT_ULP_CF_IDX_L3_HDR_CNT = 40,
BNXT_ULP_CF_IDX_L4_HDR_CNT = 41,
BNXT_ULP_CF_IDX_VFR_MODE = 42,
- BNXT_ULP_CF_IDX_LAST = 43
+ BNXT_ULP_CF_IDX_LOOPBACK_PARIF = 43,
+ BNXT_ULP_CF_IDX_LAST = 44
};
enum bnxt_ulp_cond_opcode {
};
enum bnxt_ulp_cond_opcode {