goto out;
                }
 vnic_skip_grps:
-               if ((bp->flags & BNXT_FLAG_NEW_RSS_CAP) &&
+               if ((bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP) &&
                    !(vnic->flags & BNXT_VNIC_RSS_FLAG))
                        continue;
 
        int rc;
 
        bp->hw_ring_stats_size = sizeof(struct ctx_hw_stats);
-       bp->flags &= ~(BNXT_FLAG_NEW_RSS_CAP | BNXT_FLAG_ROCE_MIRROR_CAP);
+       bp->flags &= ~BNXT_FLAG_ROCE_MIRROR_CAP;
+       bp->rss_cap &= ~BNXT_RSS_CAP_NEW_RSS_CAP;
        if (bp->hwrm_spec_code < 0x10600)
                return 0;
 
 
                if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
                    (flags & VNIC_QCAPS_RESP_FLAGS_RSS_DFLT_CR_CAP))
-                       bp->flags |= BNXT_FLAG_NEW_RSS_CAP;
+                       bp->rss_cap |= BNXT_RSS_CAP_NEW_RSS_CAP;
                if (flags &
                    VNIC_QCAPS_RESP_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_CAP)
                        bp->flags |= BNXT_FLAG_ROCE_MIRROR_CAP;
                     !(bp->fw_cap & BNXT_FW_CAP_EXT_HW_STATS_SUPPORTED)))
                        bp->fw_cap |= BNXT_FW_CAP_VLAN_RX_STRIP;
                if (flags & VNIC_QCAPS_RESP_FLAGS_RSS_HASH_TYPE_DELTA_CAP)
-                       bp->fw_cap |= BNXT_FW_CAP_RSS_HASH_TYPE_DELTA;
+                       bp->rss_cap |= BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA;
                bp->max_tpa_v2 = le16_to_cpu(resp->max_aggs_supported);
                if (bp->max_tpa_v2) {
                        if (BNXT_CHIP_P5(bp))
                        req->num_cmpl_rings = cpu_to_le16(cp_rings);
                        req->num_hw_ring_grps = cpu_to_le16(ring_grps);
                        req->num_rsscos_ctxs = cpu_to_le16(1);
-                       if (!(bp->flags & BNXT_FLAG_NEW_RSS_CAP) &&
+                       if (!(bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP) &&
                            bnxt_rfs_supported(bp))
                                req->num_rsscos_ctxs =
                                        cpu_to_le16(ring_grps + 1);
 
                vnic = &bp->vnic_info[vnic_id];
                vnic->flags |= BNXT_VNIC_RFS_FLAG;
-               if (bp->flags & BNXT_FLAG_NEW_RSS_CAP)
+               if (bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP)
                        vnic->flags |= BNXT_VNIC_RFS_NEW_RSS_FLAG;
                rc = bnxt_hwrm_vnic_alloc(bp, vnic_id, ring_id, 1);
                if (rc) {
        rc = bnxt_setup_vnic(bp, 0);
        if (rc)
                goto err_out;
-       if (bp->fw_cap & BNXT_FW_CAP_RSS_HASH_TYPE_DELTA)
+       if (bp->rss_cap & BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA)
                bnxt_hwrm_update_rss_hash_cfg(bp);
 
        if (bp->flags & BNXT_FLAG_RFS) {
                return false;
        if (BNXT_PF(bp) && !BNXT_CHIP_TYPE_NITRO_A0(bp))
                return true;
-       if (bp->flags & BNXT_FLAG_NEW_RSS_CAP)
+       if (bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP)
                return true;
        return false;
 }
        max_rss_ctxs = bnxt_get_max_func_rss_ctxs(bp);
 
        /* RSS contexts not a limiting factor */
-       if (bp->flags & BNXT_FLAG_NEW_RSS_CAP)
+       if (bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP)
                max_rss_ctxs = max_vnics;
        if (vnics > max_vnics || vnics > max_rss_ctxs) {
                if (bp->rx_nr_rings > 1)
 
 static void bnxt_set_dflt_rss_hash_type(struct bnxt *bp)
 {
-       bp->flags &= ~BNXT_FLAG_UDP_RSS_CAP;
+       bp->rss_cap &= ~BNXT_RSS_CAP_UDP_RSS_CAP;
        bp->rss_hash_cfg = VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4 |
                           VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4 |
                           VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6 |
                           VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6;
-       if (bp->fw_cap & BNXT_FW_CAP_RSS_HASH_TYPE_DELTA)
+       if (bp->rss_cap & BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA)
                bp->rss_hash_delta = bp->rss_hash_cfg;
        if (BNXT_CHIP_P4_PLUS(bp) && bp->hwrm_spec_code >= 0x10501) {
-               bp->flags |= BNXT_FLAG_UDP_RSS_CAP;
+               bp->rss_cap |= BNXT_RSS_CAP_UDP_RSS_CAP;
                bp->rss_hash_cfg |= VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4 |
                                    VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6;
        }
 
        #define BNXT_FLAG_RFS           0x100
        #define BNXT_FLAG_SHARED_RINGS  0x200
        #define BNXT_FLAG_PORT_STATS    0x400
-       #define BNXT_FLAG_UDP_RSS_CAP   0x800
-       #define BNXT_FLAG_NEW_RSS_CAP   0x2000
        #define BNXT_FLAG_WOL_CAP       0x4000
        #define BNXT_FLAG_ROCEV1_CAP    0x8000
        #define BNXT_FLAG_ROCEV2_CAP    0x10000
        u16                     rss_indir_tbl_entries;
        u32                     rss_hash_cfg;
        u32                     rss_hash_delta;
+       u32                     rss_cap;
+#define BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA       BIT(0)
+#define BNXT_RSS_CAP_UDP_RSS_CAP               BIT(1)
+#define BNXT_RSS_CAP_NEW_RSS_CAP               BIT(2)
 
        u16                     max_mtu;
        u8                      max_tc;
        #define BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V2     BIT_ULL(16)
        #define BNXT_FW_CAP_PCIE_STATS_SUPPORTED        BIT_ULL(17)
        #define BNXT_FW_CAP_EXT_STATS_SUPPORTED         BIT_ULL(18)
-       #define BNXT_FW_CAP_RSS_HASH_TYPE_DELTA         BIT_ULL(19)
        #define BNXT_FW_CAP_ERR_RECOVER_RELOAD          BIT_ULL(20)
        #define BNXT_FW_CAP_HOT_RESET                   BIT_ULL(21)
        #define BNXT_FW_CAP_PTP_RTC                     BIT_ULL(22)
 
                if (tuple == 4)
                        rss_hash_cfg |= VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4;
        } else if (cmd->flow_type == UDP_V4_FLOW) {
-               if (tuple == 4 && !(bp->flags & BNXT_FLAG_UDP_RSS_CAP))
+               if (tuple == 4 && !(bp->rss_cap & BNXT_RSS_CAP_UDP_RSS_CAP))
                        return -EINVAL;
                rss_hash_cfg &= ~VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4;
                if (tuple == 4)
                if (tuple == 4)
                        rss_hash_cfg |= VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6;
        } else if (cmd->flow_type == UDP_V6_FLOW) {
-               if (tuple == 4 && !(bp->flags & BNXT_FLAG_UDP_RSS_CAP))
+               if (tuple == 4 && !(bp->rss_cap & BNXT_RSS_CAP_UDP_RSS_CAP))
                        return -EINVAL;
                rss_hash_cfg &= ~VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6;
                if (tuple == 4)
        if (bp->rss_hash_cfg == rss_hash_cfg)
                return 0;
 
-       if (bp->fw_cap & BNXT_FW_CAP_RSS_HASH_TYPE_DELTA)
+       if (bp->rss_cap & BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA)
                bp->rss_hash_delta = bp->rss_hash_cfg ^ rss_hash_cfg;
        bp->rss_hash_cfg = rss_hash_cfg;
        if (netif_running(bp->dev)) {