Skip to content

Commit 8243345

Browse files
ajitkhapardekuba-moo
authored andcommitted
bnxt_en: Refactor RSS capability fields
Add a new rss_cap field in the per device struct bnxt and move all the RSS capability fields there. It will be easier to add new RSS capabilities for the new P7 chips. Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Link: https://lore.kernel.org/r/20231201223924.26955-7-michael.chan@broadcom.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent d846992 commit 8243345

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4268,7 +4268,7 @@ static int bnxt_alloc_vnic_attributes(struct bnxt *bp)
42684268
goto out;
42694269
}
42704270
vnic_skip_grps:
4271-
if ((bp->flags & BNXT_FLAG_NEW_RSS_CAP) &&
4271+
if ((bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP) &&
42724272
!(vnic->flags & BNXT_VNIC_RSS_FLAG))
42734273
continue;
42744274

@@ -5765,7 +5765,8 @@ static int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
57655765
int rc;
57665766

57675767
bp->hw_ring_stats_size = sizeof(struct ctx_hw_stats);
5768-
bp->flags &= ~(BNXT_FLAG_NEW_RSS_CAP | BNXT_FLAG_ROCE_MIRROR_CAP);
5768+
bp->flags &= ~BNXT_FLAG_ROCE_MIRROR_CAP;
5769+
bp->rss_cap &= ~BNXT_RSS_CAP_NEW_RSS_CAP;
57695770
if (bp->hwrm_spec_code < 0x10600)
57705771
return 0;
57715772

@@ -5780,7 +5781,7 @@ static int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
57805781

57815782
if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
57825783
(flags & VNIC_QCAPS_RESP_FLAGS_RSS_DFLT_CR_CAP))
5783-
bp->flags |= BNXT_FLAG_NEW_RSS_CAP;
5784+
bp->rss_cap |= BNXT_RSS_CAP_NEW_RSS_CAP;
57845785
if (flags &
57855786
VNIC_QCAPS_RESP_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_CAP)
57865787
bp->flags |= BNXT_FLAG_ROCE_MIRROR_CAP;
@@ -5793,7 +5794,7 @@ static int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
57935794
!(bp->fw_cap & BNXT_FW_CAP_EXT_HW_STATS_SUPPORTED)))
57945795
bp->fw_cap |= BNXT_FW_CAP_VLAN_RX_STRIP;
57955796
if (flags & VNIC_QCAPS_RESP_FLAGS_RSS_HASH_TYPE_DELTA_CAP)
5796-
bp->fw_cap |= BNXT_FW_CAP_RSS_HASH_TYPE_DELTA;
5797+
bp->rss_cap |= BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA;
57975798
bp->max_tpa_v2 = le16_to_cpu(resp->max_aggs_supported);
57985799
if (bp->max_tpa_v2) {
57995800
if (BNXT_CHIP_P5(bp))
@@ -6456,7 +6457,7 @@ __bnxt_hwrm_reserve_pf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
64566457
req->num_cmpl_rings = cpu_to_le16(cp_rings);
64576458
req->num_hw_ring_grps = cpu_to_le16(ring_grps);
64586459
req->num_rsscos_ctxs = cpu_to_le16(1);
6459-
if (!(bp->flags & BNXT_FLAG_NEW_RSS_CAP) &&
6460+
if (!(bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP) &&
64606461
bnxt_rfs_supported(bp))
64616462
req->num_rsscos_ctxs =
64626463
cpu_to_le16(ring_grps + 1);
@@ -9133,7 +9134,7 @@ static int bnxt_alloc_rfs_vnics(struct bnxt *bp)
91339134

91349135
vnic = &bp->vnic_info[vnic_id];
91359136
vnic->flags |= BNXT_VNIC_RFS_FLAG;
9136-
if (bp->flags & BNXT_FLAG_NEW_RSS_CAP)
9137+
if (bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP)
91379138
vnic->flags |= BNXT_VNIC_RFS_NEW_RSS_FLAG;
91389139
rc = bnxt_hwrm_vnic_alloc(bp, vnic_id, ring_id, 1);
91399140
if (rc) {
@@ -9227,7 +9228,7 @@ static int bnxt_init_chip(struct bnxt *bp, bool irq_re_init)
92279228
rc = bnxt_setup_vnic(bp, 0);
92289229
if (rc)
92299230
goto err_out;
9230-
if (bp->fw_cap & BNXT_FW_CAP_RSS_HASH_TYPE_DELTA)
9231+
if (bp->rss_cap & BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA)
92319232
bnxt_hwrm_update_rss_hash_cfg(bp);
92329233

92339234
if (bp->flags & BNXT_FLAG_RFS) {
@@ -11555,7 +11556,7 @@ static bool bnxt_rfs_supported(struct bnxt *bp)
1155511556
return false;
1155611557
if (BNXT_PF(bp) && !BNXT_CHIP_TYPE_NITRO_A0(bp))
1155711558
return true;
11558-
if (bp->flags & BNXT_FLAG_NEW_RSS_CAP)
11559+
if (bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP)
1155911560
return true;
1156011561
return false;
1156111562
}
@@ -11576,7 +11577,7 @@ static bool bnxt_rfs_capable(struct bnxt *bp)
1157611577
max_rss_ctxs = bnxt_get_max_func_rss_ctxs(bp);
1157711578

1157811579
/* RSS contexts not a limiting factor */
11579-
if (bp->flags & BNXT_FLAG_NEW_RSS_CAP)
11580+
if (bp->rss_cap & BNXT_RSS_CAP_NEW_RSS_CAP)
1158011581
max_rss_ctxs = max_vnics;
1158111582
if (vnics > max_vnics || vnics > max_rss_ctxs) {
1158211583
if (bp->rx_nr_rings > 1)
@@ -12697,15 +12698,15 @@ static int bnxt_fw_init_one_p2(struct bnxt *bp)
1269712698

1269812699
static void bnxt_set_dflt_rss_hash_type(struct bnxt *bp)
1269912700
{
12700-
bp->flags &= ~BNXT_FLAG_UDP_RSS_CAP;
12701+
bp->rss_cap &= ~BNXT_RSS_CAP_UDP_RSS_CAP;
1270112702
bp->rss_hash_cfg = VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4 |
1270212703
VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4 |
1270312704
VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6 |
1270412705
VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6;
12705-
if (bp->fw_cap & BNXT_FW_CAP_RSS_HASH_TYPE_DELTA)
12706+
if (bp->rss_cap & BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA)
1270612707
bp->rss_hash_delta = bp->rss_hash_cfg;
1270712708
if (BNXT_CHIP_P4_PLUS(bp) && bp->hwrm_spec_code >= 0x10501) {
12708-
bp->flags |= BNXT_FLAG_UDP_RSS_CAP;
12709+
bp->rss_cap |= BNXT_RSS_CAP_UDP_RSS_CAP;
1270912710
bp->rss_hash_cfg |= VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4 |
1271012711
VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6;
1271112712
}

drivers/net/ethernet/broadcom/bnxt/bnxt.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,8 +1900,6 @@ struct bnxt {
19001900
#define BNXT_FLAG_RFS 0x100
19011901
#define BNXT_FLAG_SHARED_RINGS 0x200
19021902
#define BNXT_FLAG_PORT_STATS 0x400
1903-
#define BNXT_FLAG_UDP_RSS_CAP 0x800
1904-
#define BNXT_FLAG_NEW_RSS_CAP 0x2000
19051903
#define BNXT_FLAG_WOL_CAP 0x4000
19061904
#define BNXT_FLAG_ROCEV1_CAP 0x8000
19071905
#define BNXT_FLAG_ROCEV2_CAP 0x10000
@@ -2021,6 +2019,10 @@ struct bnxt {
20212019
u16 rss_indir_tbl_entries;
20222020
u32 rss_hash_cfg;
20232021
u32 rss_hash_delta;
2022+
u32 rss_cap;
2023+
#define BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA BIT(0)
2024+
#define BNXT_RSS_CAP_UDP_RSS_CAP BIT(1)
2025+
#define BNXT_RSS_CAP_NEW_RSS_CAP BIT(2)
20242026

20252027
u16 max_mtu;
20262028
u8 max_tc;
@@ -2086,7 +2088,6 @@ struct bnxt {
20862088
#define BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V2 BIT_ULL(16)
20872089
#define BNXT_FW_CAP_PCIE_STATS_SUPPORTED BIT_ULL(17)
20882090
#define BNXT_FW_CAP_EXT_STATS_SUPPORTED BIT_ULL(18)
2089-
#define BNXT_FW_CAP_RSS_HASH_TYPE_DELTA BIT_ULL(19)
20902091
#define BNXT_FW_CAP_ERR_RECOVER_RELOAD BIT_ULL(20)
20912092
#define BNXT_FW_CAP_HOT_RESET BIT_ULL(21)
20922093
#define BNXT_FW_CAP_PTP_RTC BIT_ULL(22)

drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,7 @@ static int bnxt_srxfh(struct bnxt *bp, struct ethtool_rxnfc *cmd)
12031203
if (tuple == 4)
12041204
rss_hash_cfg |= VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4;
12051205
} else if (cmd->flow_type == UDP_V4_FLOW) {
1206-
if (tuple == 4 && !(bp->flags & BNXT_FLAG_UDP_RSS_CAP))
1206+
if (tuple == 4 && !(bp->rss_cap & BNXT_RSS_CAP_UDP_RSS_CAP))
12071207
return -EINVAL;
12081208
rss_hash_cfg &= ~VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4;
12091209
if (tuple == 4)
@@ -1213,7 +1213,7 @@ static int bnxt_srxfh(struct bnxt *bp, struct ethtool_rxnfc *cmd)
12131213
if (tuple == 4)
12141214
rss_hash_cfg |= VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6;
12151215
} else if (cmd->flow_type == UDP_V6_FLOW) {
1216-
if (tuple == 4 && !(bp->flags & BNXT_FLAG_UDP_RSS_CAP))
1216+
if (tuple == 4 && !(bp->rss_cap & BNXT_RSS_CAP_UDP_RSS_CAP))
12171217
return -EINVAL;
12181218
rss_hash_cfg &= ~VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6;
12191219
if (tuple == 4)
@@ -1253,7 +1253,7 @@ static int bnxt_srxfh(struct bnxt *bp, struct ethtool_rxnfc *cmd)
12531253
if (bp->rss_hash_cfg == rss_hash_cfg)
12541254
return 0;
12551255

1256-
if (bp->fw_cap & BNXT_FW_CAP_RSS_HASH_TYPE_DELTA)
1256+
if (bp->rss_cap & BNXT_RSS_CAP_RSS_HASH_TYPE_DELTA)
12571257
bp->rss_hash_delta = bp->rss_hash_cfg ^ rss_hash_cfg;
12581258
bp->rss_hash_cfg = rss_hash_cfg;
12591259
if (netif_running(bp->dev)) {

0 commit comments

Comments
 (0)