summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris J Arges <carges@cloudflare.com>2026-03-25 23:09:50 +0300
committerJakub Kicinski <kuba@kernel.org>2026-03-30 00:09:08 +0300
commit5ec22d5f2afcf2f9d7d631dcc2f848dda64a4933 (patch)
tree760e67f168ad6d0a6532a7ff1810ef95bcbdba94
parent4a037aeb6bc8e1fbf4d131d4d06544a9857ad604 (diff)
downloadlinux-5ec22d5f2afcf2f9d7d631dcc2f848dda64a4933.tar.xz
bnxt_en: Implement XDP RSS hash metadata extraction for V3_CMP
This adds another conditional when cmp_type is CMP_TYPE_RX_L2_V3_CMP for drivers that support this completion format. This re-uses bnxt_rss_ext_op to provide similar functionality. One limitation is for L4 hash-types, protocol-specific bits can't be determined. Reviewed-by: Joe Damato <joe@dama.to> Signed-off-by: Chris J Arges <carges@cloudflare.com> Link: https://patch.msgid.link/20260325201139.2501937-5-carges@cloudflare.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
index 1f920464b426..babcd463e50e 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
@@ -514,6 +514,16 @@ int bnxt_xdp_rx_hash(const struct xdp_md *ctx, u32 *hash,
default:
break;
}
+ } else if (xdp->cmp_type == CMP_TYPE_RX_L2_V3_CMP) {
+ struct bnxt *bp = netdev_priv(xdp->xdp.rxq->dev);
+
+ if (rxcmp1->rx_cmp_flags2 & cpu_to_le32(RX_CMP_FLAGS2_IP_TYPE))
+ hash_type |= XDP_RSS_TYPE_L3_IPV6;
+ else
+ hash_type |= XDP_RSS_TYPE_L3_IPV4;
+
+ if (bnxt_rss_ext_op(bp, rxcmp) == PKT_HASH_TYPE_L4)
+ hash_type |= XDP_RSS_L4;
}
*rss_type = hash_type;