From: Jakub Kicinski <kuba@kernel.org>
To: michael.chan@broadcom.com, pavan.chebbi@broadcom.com
Cc: willemdebruijn.kernel@gmail.com, netdev@vger.kernel.org,
davem@davemloft.net, edumazet@google.com, pabeni@redhat.com,
andrew+netdev@lunn.ch, horms@kernel.org,
Jakub Kicinski <kuba@kernel.org>
Subject: [RFC net-next 4/6] eth: bnxt: support RSS on IPv6 Flow Label
Date: Mon, 9 Jun 2025 10:34:40 -0700 [thread overview]
Message-ID: <20250609173442.1745856-5-kuba@kernel.org> (raw)
In-Reply-To: <20250609173442.1745856-1-kuba@kernel.org>
It appears that the bnxt FW API has the relevant bit for Flow Label
hashing. Plumb in the support. Obey the capability bit.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: michael.chan@broadcom.com
CC: pavan.chebbi@broadcom.com
---
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
.../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 26 ++++++++++++++++---
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index fda0d3cc6227..40ae34923511 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -2407,6 +2407,7 @@ struct bnxt {
#define BNXT_RSS_CAP_ESP_V4_RSS_CAP BIT(6)
#define BNXT_RSS_CAP_ESP_V6_RSS_CAP BIT(7)
#define BNXT_RSS_CAP_MULTI_RSS_CTX BIT(8)
+#define BNXT_RSS_CAP_IPV6_FLOW_LABEL_RSS_CAP BIT(9)
u8 rss_hash_key[HW_HASH_KEY_SIZE];
u8 rss_hash_key_valid:1;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index d5495762c945..ae09158db8dc 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -6945,6 +6945,8 @@ static int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
bp->rss_cap |= BNXT_RSS_CAP_ESP_V4_RSS_CAP;
if (flags & VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_ESP_SPI_IPV6_CAP)
bp->rss_cap |= BNXT_RSS_CAP_ESP_V6_RSS_CAP;
+ if (flags & VNIC_QCAPS_RESP_FLAGS_RSS_IPV6_FLOW_LABEL_CAP)
+ bp->rss_cap |= BNXT_RSS_CAP_IPV6_FLOW_LABEL_RSS_CAP;
if (flags & VNIC_QCAPS_RESP_FLAGS_RE_FLUSH_CAP)
bp->fw_cap |= BNXT_FW_CAP_VNIC_RE_FLUSH;
}
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index f5d490bf997e..fd9405cadad1 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -1652,13 +1652,24 @@ static int bnxt_srxfh(struct bnxt *bp, struct ethtool_rxnfc *cmd)
u32 rss_hash_cfg = bp->rss_hash_cfg;
int tuple, rc = 0;
- if (cmd->data == RXH_4TUPLE)
+ switch (cmd->data) {
+ case RXH_4TUPLE | RXH_IP6_FL:
+ case RXH_4TUPLE:
tuple = 4;
- else if (cmd->data == RXH_2TUPLE)
+ break;
+ case RXH_2TUPLE | RXH_IP6_FL:
+ case RXH_2TUPLE:
tuple = 2;
- else if (!cmd->data)
+ break;
+ case 0:
tuple = 0;
- else
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ if (cmd->data & RXH_IP6_FL &&
+ !(bp->rss_cap & BNXT_RSS_CAP_IPV6_FLOW_LABEL_RSS_CAP))
return -EINVAL;
if (cmd->flow_type == TCP_V4_FLOW) {
@@ -1728,6 +1739,13 @@ static int bnxt_srxfh(struct bnxt *bp, struct ethtool_rxnfc *cmd)
rss_hash_cfg |= VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6;
else if (!tuple)
rss_hash_cfg &= ~VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6;
+
+ if (cmd->data & RXH_IP6_FL)
+ rss_hash_cfg |=
+ VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6_FLOW_LABEL;
+ else
+ rss_hash_cfg &=
+ ~VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6_FLOW_LABEL;
break;
}
--
2.49.0
next prev parent reply other threads:[~2025-06-09 17:34 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-09 17:34 [RFC net-next 0/6] net: ethtool: support including Flow Label in the flow hash for RSS Jakub Kicinski
2025-06-09 17:34 ` [RFC net-next 1/6] net: ethtool: factor out the validation for ETHTOOL_SRXFH Jakub Kicinski
2025-06-09 17:34 ` [RFC net-next 2/6] net: ethtool: support including Flow Label in the flow hash for RSS Jakub Kicinski
2025-06-10 13:33 ` Willem de Bruijn
2025-06-09 17:34 ` [RFC net-next 3/6] eth: fbnic: support RSS on IPv6 Flow Label Jakub Kicinski
2025-06-09 17:34 ` Jakub Kicinski [this message]
2025-06-09 18:24 ` [RFC net-next 4/6] eth: bnxt: " Michael Chan
2025-06-09 18:44 ` Jakub Kicinski
2025-06-09 23:03 ` Michael Chan
2025-06-13 0:11 ` Michael Chan
2025-06-13 1:04 ` Jakub Kicinski
2025-06-23 4:20 ` Michael Chan
2025-06-09 17:34 ` [RFC net-next 5/6] selftests: drv-net: import things in lib one by one Jakub Kicinski
2025-06-09 17:34 ` [RFC net-next 6/6] selftests: drv-net: add test for RSS on flow label Jakub Kicinski
2025-06-09 18:26 ` [RFC net-next 0/6] net: ethtool: support including Flow Label in the flow hash for RSS Andrew Lunn
2025-06-09 18:58 ` Jakub Kicinski
2025-06-09 19:30 ` Andrew Lunn
2025-06-09 19:53 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250609173442.1745856-5-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=michael.chan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pavan.chebbi@broadcom.com \
--cc=willemdebruijn.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.