]> git.droids-corp.org - dpdk.git/commitdiff
net/bnxt: fix flow create when RSS is disabled
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Tue, 4 Jan 2022 08:38:16 +0000 (14:08 +0530)
committerAjit Khaparde <ajit.khaparde@broadcom.com>
Wed, 12 Jan 2022 01:57:55 +0000 (02:57 +0100)
This patch reverts the commit "5d47d06b2c83".
Revert this commit as it caused a regression on legacy chips.
On newer chips we use TruFlow based flow creation instead of
HWRM based flow creation.

Fixes: 5d47d06b2c83 ("net/bnxt: modify VNIC accounting")
Cc: stable@dpdk.org
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
drivers/net/bnxt/bnxt.h
drivers/net/bnxt/bnxt_ethdev.c
drivers/net/bnxt/bnxt_flow.c
drivers/net/bnxt/bnxt_hwrm.c
drivers/net/bnxt/bnxt_hwrm.h

index 614ea57d87a44c5f06ebb8ea9758af27f25d7e3e..3df80f50db9bd06690848cf2c0eb5bc743d5dbf9 100644 (file)
@@ -695,9 +695,6 @@ struct bnxt {
 #define BNXT_FLAG_FLOW_XSTATS_EN               BIT(25)
 #define BNXT_FLAG_DFLT_MAC_SET                 BIT(26)
 #define BNXT_FLAG_GFID_ENABLE                  BIT(27)
-#define BNXT_FLAG_RFS_NEEDS_VNIC               BIT(28)
-#define BNXT_FLAG_FLOW_CFA_RFS_RING_TBL_IDX_V2 BIT(29)
-#define BNXT_RFS_NEEDS_VNIC(bp)        ((bp)->flags & BNXT_FLAG_RFS_NEEDS_VNIC)
 #define BNXT_PF(bp)            (!((bp)->flags & BNXT_FLAG_VF))
 #define BNXT_VF(bp)            ((bp)->flags & BNXT_FLAG_VF)
 #define BNXT_NPAR(bp)          ((bp)->flags & BNXT_FLAG_NPAR_PF)
index a5b960c2461431bef892fafcfc314b7e10352447..00acdb7be679bb3f69b5fcdf1944e63cfdba3f73 100644 (file)
@@ -786,17 +786,11 @@ skip_cosq_cfg:
                }
        }
 
-       /* default vnic 0 */
-       rc = bnxt_setup_one_vnic(bp, 0);
-       if (rc)
-               goto err_out;
        /* VNIC configuration */
-       if (BNXT_RFS_NEEDS_VNIC(bp)) {
-               for (i = 1; i < bp->nr_vnics; i++) {
-                       rc = bnxt_setup_one_vnic(bp, i);
-                       if (rc)
-                               goto err_out;
-               }
+       for (i = 0; i < bp->nr_vnics; i++) {
+               rc = bnxt_setup_one_vnic(bp, i);
+               if (rc)
+                       goto err_out;
        }
 
        for (j = 0; j < bp->tx_nr_rings; j++) {
@@ -5232,10 +5226,6 @@ static int bnxt_get_config(struct bnxt *bp)
        if (rc)
                return rc;
 
-       rc = bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(bp);
-       if (rc)
-               return rc;
-
        bnxt_hwrm_port_mac_qcfg(bp);
 
        bnxt_hwrm_parent_pf_qcfg(bp);
index d062be5525809fcbe2ca771713b003face9570ea..f7c90c442f507c6f73eade917febcde863dcb654 100644 (file)
@@ -1293,13 +1293,6 @@ start:
                }
                PMD_DRV_LOG(DEBUG, "Queue index %d\n", act_q->index);
 
-               if (use_ntuple && !BNXT_RFS_NEEDS_VNIC(bp)) {
-                       filter->flags =
-                               HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_FLAGS_DEST_RFS_RING_IDX;
-                       filter->dst_id = act_q->index;
-                       goto skip_vnic_alloc;
-               }
-
                vnic_id = attr->group;
                if (!vnic_id) {
                        PMD_DRV_LOG(DEBUG, "Group id is 0\n");
@@ -1364,7 +1357,7 @@ use_vnic:
                PMD_DRV_LOG(DEBUG,
                            "Setting vnic ff_idx %d\n", vnic->ff_pool_idx);
                filter->dst_id = vnic->fw_vnic_id;
-skip_vnic_alloc:
+
                /* For ntuple filter, create the L2 filter with default VNIC.
                 * The user specified redirect queue will be set while creating
                 * the ntuple filter in hardware.
@@ -2063,10 +2056,7 @@ bnxt_flow_create(struct rte_eth_dev *dev,
                }
        }
 
-       if (BNXT_RFS_NEEDS_VNIC(bp))
-               vnic = find_matching_vnic(bp, filter);
-       else
-               vnic = BNXT_GET_DEFAULT_VNIC(bp);
+       vnic = find_matching_vnic(bp, filter);
 done:
        if (!ret || update_flow) {
                flow->filter = filter;
index 6093407986e5a021fcf8f4934b333d390091b52d..f90c22a9f7dcf91cb7b40817c4583eefb0c2add0 100644 (file)
@@ -6106,38 +6106,6 @@ int bnxt_hwrm_cfa_pair_free(struct bnxt *bp, struct bnxt_representor *rep_bp)
        return rc;
 }
 
-int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp)
-{
-       struct hwrm_cfa_adv_flow_mgnt_qcaps_output *resp =
-                                       bp->hwrm_cmd_resp_addr;
-       struct hwrm_cfa_adv_flow_mgnt_qcaps_input req = {0};
-       uint32_t flags = 0;
-       int rc = 0;
-
-       if (!(bp->fw_cap & BNXT_FW_CAP_ADV_FLOW_MGMT))
-               return 0;
-
-       if (!(BNXT_PF(bp) || BNXT_VF_IS_TRUSTED(bp))) {
-               PMD_DRV_LOG(DEBUG,
-                           "Not a PF or trusted VF. Command not supported\n");
-               return 0;
-       }
-
-       HWRM_PREP(&req, HWRM_CFA_ADV_FLOW_MGNT_QCAPS, BNXT_USE_CHIMP_MB);
-       rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);
-
-       HWRM_CHECK_RESULT();
-       flags = rte_le_to_cpu_32(resp->flags);
-       HWRM_UNLOCK();
-
-       if (flags & HWRM_CFA_ADV_FLOW_MGNT_QCAPS_RFS_RING_TBL_IDX_V2_SUPPORTED)
-               bp->flags |= BNXT_FLAG_FLOW_CFA_RFS_RING_TBL_IDX_V2;
-       else
-               bp->flags |= BNXT_FLAG_RFS_NEEDS_VNIC;
-
-       return rc;
-}
-
 int bnxt_hwrm_fw_echo_reply(struct bnxt *bp, uint32_t echo_req_data1,
                            uint32_t echo_req_data2)
 {
index 8202455bf010fc7ab3ffea286947af1304f2e905..21e1b7a499c297d80824d18ce2610a126de344dd 100644 (file)
@@ -58,9 +58,6 @@ struct hwrm_func_qstats_output;
 #define HWRM_PORT_PHY_CFG_IN_EN_AUTO_LINK_SPEED_MASK \
        HWRM_PORT_PHY_CFG_INPUT_ENABLES_AUTO_LINK_SPEED_MASK
 
-#define HWRM_CFA_ADV_FLOW_MGNT_QCAPS_RFS_RING_TBL_IDX_V2_SUPPORTED \
-       HWRM_CFA_ADV_FLOW_MGNT_QCAPS_OUTPUT_FLAGS_RFS_RING_TBL_IDX_V2_SUPPORTED
-
 #define HWRM_SPEC_CODE_1_8_4           0x10804
 #define HWRM_SPEC_CODE_1_9_0           0x10900
 #define HWRM_SPEC_CODE_1_9_2           0x10902
@@ -296,7 +293,6 @@ int bnxt_hwrm_first_vf_id_query(struct bnxt *bp, uint16_t fid,
 int bnxt_hwrm_cfa_pair_exists(struct bnxt *bp, struct bnxt_representor *rep_bp);
 int bnxt_hwrm_cfa_pair_alloc(struct bnxt *bp, struct bnxt_representor *rep);
 int bnxt_hwrm_cfa_pair_free(struct bnxt *bp, struct bnxt_representor *rep);
-int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp);
 int bnxt_hwrm_fw_echo_reply(struct bnxt *bp, uint32_t echo_req_data1,
                            uint32_t echo_req_data2);
 int bnxt_hwrm_poll_ver_get(struct bnxt *bp);