From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-vk1-f225.google.com (mail-vk1-f225.google.com [209.85.221.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB13B51A746 for ; Tue, 8 Sep 2026 09:31:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.225 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788859910; cv=none; b=OOsZnVnOlf9MVw5kOxQxPdjNpz15yGO0Q/ExksBoyronBzHKKVzt70S2lEuF0W5wnqnorQOs/u9ViZRd0yfkrNa7AId1tG80k2c0RDRM+3+GM/8YTNCmW7dB552aoimDHF4BOMCTQ0eRSyOdB5JkCM4sz29ucUnjczJ/w8VO7/Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788859910; c=relaxed/simple; bh=VdfqjostYCffl9r3BUE4pjkA6nCgEzPq7j8G62gsGm8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DDMXIfSI8ptQfT7yC6WSRxoRqVxmAjOsys38X//isOJO+WHFb6MNgJBOc1MvaBd8c4s73b5S5dGAjSX36tbNwTC8/9yJST9Ymn0rXt0TAX3dbbAbKBlfu2Q4rwbGLB5NN3NUC/+TMU7V7my9uFKpwXmryDBzRfW3La3GGmwJYm4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=I8thKYog; arc=none smtp.client-ip=209.85.221.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="I8thKYog" Received: by mail-vk1-f225.google.com with SMTP id 71dfb90a1353d-5c66eefc868so4396978e0c.3 for ; Tue, 08 Sep 2026 02:31:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788859907; x=1789464707; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Uwh2SZv7vHxrFxiME5Jf4ldCSndrcCnxyPwRzMKjGGM=; b=hu6xiGRuR57x0dIJlevPtvyRFNQ0f2Fqz7oF1EE6Qwy2c/OZhbQSw5V95x3WP7srH5 TlXU91blKrl6WKRK9W0Nl5UYB8WC3F5bHqlDIcH4kUub/x2yUkIZwNzj4sqNX1aDdblS +XY6DexMnUfxHM1dicMluFflzvU2MfCieACry5ien+1ZiA6/yaE5bxKr7O8sMuRp3lKL YwIBT4fpBlMOCkL814wNkBMXlpDWE73iqDHWf2SJYUgzOaF5IfsQNELHIT9NMC0928oY mgRkvDomd/Tqvw1EuqPE1JsCstV/0fKSs17KrQFMqUgGrR+9Ht95EfSQ0zvDE25LjUpG CAFw== X-Forwarded-Encrypted: i=1; AKwUvBwcEAQMQlIVRDMwzrF1BnU19+DGYVjfLbdqLtYYCWDvKIocCba0Mry3HyYXcFBzcA2VYdbfNJCuTNxAd/g=@vger.kernel.org X-Gm-Message-State: AFuF++mIuzig87i32Lsk2FCgbivvLgO0QAcz5H76IS5L2qNpv19ezk2M +GPaKgkntZ5xi+dCH38Vi/GBxuRo9gfbi/oZWbfadmvVSPKMTYOP6lxiiO8uRrx7s2jHld4u6mC cXDe/23XfFnWk12p61KFYWA/IdUhXjkjh5MTg5lEecyHVljBJuwUN3L90st4Nq0LE2nqRQ3G3Yj UD8JG4hPNXrk9KvLO83ksT0/vjv0gvo6LZ+CQeUnhnsnhb4rPc2v/pJpKvibxAVDNc+12dOHLcX GHH18ZcAhYaxE8JDg== X-Gm-Gg: AYBFou1RvHVNvtAkvvDp9lCFsYQkdhtSZZI3fuHnWIC+6p1BlP3t7bGoiFnJJXAmCWq xW5B7EOXobd7+wbTbsRCuwSXVOA20ZIJ51e3gAP2UAs3HOAfuFDzZ4/oY9amLbzfAAe1kxiNxBq yIWtk4Qd9uuipc//jqaJcIcetWbMbosGLD8DpqYOatlm4hDvAHwYsd6cPR1Z/YH8Hdv6c+5x+xG rrGSTE0gWxdRziIvWznfv1RL858LI4BTSeMV5BvFO9EtyKrd6hUUnuE7d1jcRpQU/u6MtQA6dsp oxj6K8oq57JKz0PXJtigHEKFgmopPrviD+QfWvGTdVbLWuBiBJ5CU+yiOavwqV0JYyH7macJNtm VSOvffpMlzaVM5nSl5qnTWxFiPkApFT0BFBWzSZNeileZwM7gmq+UF937BQlEqv8wfSCF4BKkw7 05Ggh90IQc+xZBT365bz930xCQbQTWYATuAsyr X-Received: by 2002:a05:6122:e189:b0:5bb:eebe:7ffd with SMTP id 71dfb90a1353d-5c7ed846723mr15141479e0c.8.1788859907350; Tue, 08 Sep 2026 02:31:47 -0700 (PDT) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-125.dlp.protect.broadcom.com. [144.49.247.125]) by smtp-relay.gmail.com with ESMTPS id 71dfb90a1353d-5c7ec386e92sm6069186e0c.8.2026.09.08.02.31.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Sep 2026 02:31:47 -0700 (PDT) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-39b90cc0d5cso1131375a91.0 for ; Tue, 08 Sep 2026 02:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1788859906; x=1789464706; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Uwh2SZv7vHxrFxiME5Jf4ldCSndrcCnxyPwRzMKjGGM=; b=I8thKYogo1aWnfmMj+23ijek2unFrRyjgO7uNFThkPJUg+TzwA2h1Lz6VDeBFvTVIC v2s31WdKaGWrxe0UEg0e0eSuIisORfgmo4YBT7kyvHSMKkPelLLh25bozkjhUwql5VJQ /NWfbycRPDjLV7PMzLycac9s/JH99mV5T1eMY= X-Forwarded-Encrypted: i=1; AKwUvBxvYW6/RIvBZ2ceoKQ78hZNx6gOlkVaIUKAznNE3jBS0Q+ozYeeDENCqMZu8VeF/Y+9xAiGdG99ed+L9XE=@vger.kernel.org X-Received: by 2002:a17:90b:384b:b0:38e:524:8797 with SMTP id 98e67ed59e1d1-39b261e79f1mr40448911a91.13.1788859905967; Tue, 08 Sep 2026 02:31:45 -0700 (PDT) X-Received: by 2002:a17:90b:384b:b0:38e:524:8797 with SMTP id 98e67ed59e1d1-39b261e79f1mr40448867a91.13.1788859905455; Tue, 08 Sep 2026 02:31:45 -0700 (PDT) Received: from localhost.localdomain ([192.19.203.250]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b08ca63b3sm31493316a91.11.2026.09.08.02.31.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 02:31:45 -0700 (PDT) From: Vikas Gupta To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, horms@kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bhargava.marreddy@broadcom.com, rahul-rg.gupta@broadcom.com, vsrama-krishna.nemani@broadcom.com, rajashekar.hudumula@broadcom.com, dharmender.garg@broadcom.com, ajit.khaparde@broadcom.com, Vikas Gupta Subject: [net-next, v2 06/11] bnge: add ethtool support to manage RSS contexts Date: Tue, 8 Sep 2026 15:00:48 +0530 Message-ID: <20260908093053.2596020-7-vikas.gupta@broadcom.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260908093053.2596020-1-vikas.gupta@broadcom.com> References: <20260908093053.2596020-1-vikas.gupta@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Introduce ethtool callbacks to manage RSS contexts. Each context allocates a dedicated VNIC with its own RSS indirection table and hash key, configured with TPA settings matching those of the default VNIC. Signed-off-by: Vikas Gupta Reviewed-by: Bhargava Chenna Marreddy Reviewed-by: Dharmender Garg --- .../net/ethernet/broadcom/bnge/bnge_ethtool.c | 135 ++++++++++++++++++ .../net/ethernet/broadcom/bnge/bnge_netdev.c | 9 ++ .../net/ethernet/broadcom/bnge/bnge_resc.c | 13 +- .../net/ethernet/broadcom/bnge/bnge_vnic.c | 26 +++- .../net/ethernet/broadcom/bnge/bnge_vnic.h | 14 +- 5 files changed, 189 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_ethtool.c b/drivers/net/ethernet/broadcom/bnge/bnge_ethtool.c index bb7d366a9841..460e66da6d1c 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_ethtool.c @@ -1003,6 +1003,138 @@ static u32 bnge_get_rx_ring_count(struct net_device *dev) return bd->rx_nr_rings; } +static int bnge_rxfh_context_check(struct bnge_net *bn, + const struct ethtool_rxfh_param *rxfh, + struct netlink_ext_ack *extack) +{ + if (rxfh->hfunc && rxfh->hfunc != ETH_RSS_HASH_TOP) { + NL_SET_ERR_MSG_MOD(extack, "RSS hash function not supported"); + return -EOPNOTSUPP; + } + + if (!(bn->priv_flags & BNGE_NET_EN_NTUPLE)) { + NL_SET_ERR_MSG_MOD(extack, + "Enable ntuple filtering before adding RSS contexts"); + return -EOPNOTSUPP; + } + + if (!netif_running(bn->netdev)) { + NL_SET_ERR_MSG_MOD(extack, "Unable to set RSS contexts when interface is down"); + return -EAGAIN; + } + + return 0; +} + +static int bnge_create_rxfh_context(struct net_device *dev, + struct ethtool_rxfh_context *ctx, + const struct ethtool_rxfh_param *rxfh, + struct netlink_ext_ack *extack) +{ + struct bnge_net *bn = netdev_priv(dev); + struct bnge_rss_ctx *rss_ctx; + struct bnge_vnic_info *vnic; + int rc; + + rc = bnge_rxfh_context_check(bn, rxfh, extack); + if (rc) + return rc; + + if (bn->num_rss_ctx >= BNGE_MAX_ETH_RSS_CTX) { + NL_SET_ERR_MSG_FMT_MOD(extack, "Out of RSS contexts, maximum %u", + BNGE_MAX_ETH_RSS_CTX); + return -EINVAL; + } + + if (!bnge_arfs_capable(bn->bd, true)) { + NL_SET_ERR_MSG_MOD(extack, "Out of hardware resources"); + return -ENOMEM; + } + + rss_ctx = ethtool_rxfh_context_priv(ctx); + + bn->num_rss_ctx++; + + vnic = &rss_ctx->vnic; + + bnge_init_vnic_mem(vnic); + + vnic->rss_ctx = ctx; + vnic->flags |= BNGE_VNIC_RSSCTX_FLAG; + rc = bnge_alloc_vnic_rss_table(bn, vnic); + if (rc) + goto err_del_rss_ctx; + + /* Populate defaults in the context */ + bnge_set_dflt_rss_indir_tbl(bn->bd, ctx); + ctx->hfunc = ETH_RSS_HASH_TOP; + memcpy(vnic->rss_hash_key, bn->rss_hash_key, HW_HASH_KEY_SIZE); + memcpy(ethtool_rxfh_context_key(ctx), + bn->rss_hash_key, HW_HASH_KEY_SIZE); + + rc = bnge_hwrm_vnic_alloc(bn->bd, vnic, bn->bd->rx_nr_rings); + if (rc) { + NL_SET_ERR_MSG_MOD(extack, "Unable to allocate VNIC"); + goto err_del_rss_ctx; + } + + rc = bnge_hwrm_vnic_set_tpa(bn->bd, vnic, + bn->priv_flags & BNGE_NET_EN_TPA); + if (rc) { + NL_SET_ERR_MSG_MOD(extack, + "Unable to set TPA settings to vnic"); + goto err_del_rss_ctx; + } + bnge_modify_rss(bn, ctx, rss_ctx, rxfh); + + rc = bnge_setup_vnic(bn, vnic); + if (rc) { + NL_SET_ERR_MSG_MOD(extack, "Unable to setup vnic"); + goto err_del_rss_ctx; + } + + rss_ctx->index = rxfh->rss_context; + return 0; + +err_del_rss_ctx: + bnge_del_one_rss_ctx(bn, rss_ctx, true); + return rc; +} + +static int bnge_modify_rxfh_context(struct net_device *dev, + struct ethtool_rxfh_context *ctx, + const struct ethtool_rxfh_param *rxfh, + struct netlink_ext_ack *extack) +{ + struct bnge_net *bn = netdev_priv(dev); + struct bnge_rss_ctx *rss_ctx; + int rc; + + rc = bnge_rxfh_context_check(bn, rxfh, extack); + if (rc) + return rc; + + rss_ctx = ethtool_rxfh_context_priv(ctx); + + bnge_modify_rss(bn, ctx, rss_ctx, rxfh); + + return bnge_hwrm_vnic_rss_cfg(bn, &rss_ctx->vnic); +} + +static int bnge_remove_rxfh_context(struct net_device *dev, + struct ethtool_rxfh_context *ctx, + u32 rss_context, + struct netlink_ext_ack *extack) +{ + struct bnge_net *bn = netdev_priv(dev); + struct bnge_rss_ctx *rss_ctx; + + rss_ctx = ethtool_rxfh_context_priv(ctx); + + bnge_del_one_rss_ctx(bn, rss_ctx, true); + return 0; +} + static const struct ethtool_ops bnge_ethtool_ops = { .cap_link_lanes_supported = 1, .get_link_ksettings = bnge_get_link_ksettings, @@ -1032,6 +1164,9 @@ static const struct ethtool_ops bnge_ethtool_ops = { .set_rxfh = bnge_set_rxfh, .get_rxfh_fields = bnge_get_rxfh_fields, .set_rxfh_fields = bnge_set_rxfh_fields, + .create_rxfh_context = bnge_create_rxfh_context, + .modify_rxfh_context = bnge_modify_rxfh_context, + .remove_rxfh_context = bnge_remove_rxfh_context, }; void bnge_set_ethtool_ops(struct net_device *dev) diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c index 79a24d12b37e..656bdc3d1a7e 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c @@ -2788,6 +2788,8 @@ int bnge_open_core(struct bnge_net *bn) /* Poll link status and check for SFP+ module status */ bnge_get_port_module_status(bn); + bnge_hwrm_realloc_rss_ctx_vnic(bn); + return 0; err_free_irq: @@ -3005,7 +3007,10 @@ void bnge_close_core(struct bnge_net *bn) clear_bit(BNGE_STATE_OPEN, &bd->state); timer_delete_sync(&bn->timer); + + bnge_clear_rss_ctxs(bn); bnge_shutdown_nic(bn); + bnge_disable_napi(bn); /* Save ring stats before shutdown */ @@ -3139,6 +3144,10 @@ static int bnge_set_features(struct net_device *dev, netdev_features_t features) if (flags == bn->priv_flags) return 0; + if ((bn->priv_flags & BNGE_NET_EN_NTUPLE) && + !(flags & BNGE_NET_EN_NTUPLE) && bn->num_rss_ctx) + return -EBUSY; + bn->priv_flags = flags; return 0; diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_resc.c b/drivers/net/ethernet/broadcom/bnge/bnge_resc.c index 2823be44a7ed..848cfff90b55 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_resc.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_resc.c @@ -352,8 +352,17 @@ int bnge_reserve_rings(struct bnge_dev *bd) if (!bnge_rings_ok(&hwr)) return -ENOMEM; - if (old_rx_rings != bd->hw_resc.resv_rx_rings) - bnge_set_dflt_rss_indir_tbl(bd); + if (old_rx_rings != bd->hw_resc.resv_rx_rings) { + bnge_set_dflt_rss_indir_tbl(bd, NULL); + + if (bd->netdev) { + struct ethtool_rxfh_context *ctx; + unsigned long context; + + xa_for_each(&bd->netdev->ethtool->rss_ctx, context, ctx) + bnge_set_dflt_rss_indir_tbl(bd, ctx); + } + } if (!bnge_aux_registered(bd)) { u16 resv_msix, resv_ctx, aux_ctxs; diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_vnic.c b/drivers/net/ethernet/broadcom/bnge/bnge_vnic.c index 417abc7e8c74..f1aa6f1629a6 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_vnic.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_vnic.c @@ -12,21 +12,26 @@ #include "bnge_filter.h" #include "bnge_ethtool.h" -void bnge_set_dflt_rss_indir_tbl(struct bnge_dev *bd) +void bnge_set_dflt_rss_indir_tbl(struct bnge_dev *bd, + struct ethtool_rxfh_context *rss_ctx) { u16 max_entries, pad; u32 *rss_indir_tbl; u16 i; max_entries = bnge_get_rxfh_indir_size(bd); - rss_indir_tbl = &bd->rss_indir_tbl[0]; + + if (rss_ctx) + rss_indir_tbl = ethtool_rxfh_context_indir(rss_ctx); + else + rss_indir_tbl = &bd->rss_indir_tbl[0]; for (i = 0; i < max_entries; i++) rss_indir_tbl[i] = ethtool_rxfh_indir_default(i, bd->rx_nr_rings); pad = bd->rss_indir_tbl_entries - max_entries; - if (pad) + if (pad && !rss_ctx) memset(&rss_indir_tbl[i], 0, pad * sizeof(*rss_indir_tbl)); } @@ -44,6 +49,8 @@ void bnge_fill_hw_rss_tbl(struct bnge_net *bn, struct bnge_vnic_info *vnic) if (vnic->flags & BNGE_VNIC_NTUPLE_FLAG) j = ethtool_rxfh_indir_default(i, bd->rx_nr_rings); + else if (vnic->flags & BNGE_VNIC_RSSCTX_FLAG) + j = ethtool_rxfh_context_indir(vnic->rss_ctx)[i]; else j = bd->rss_indir_tbl[i]; @@ -151,7 +158,7 @@ void bnge_modify_rss(struct bnge_net *bn, struct ethtool_rxfh_context *ctx, for (i = 0; i < tbl_size; i++) indir_tbl[i] = rxfh->indir[i]; pad = bd->rss_indir_tbl_entries - tbl_size; - if (pad) + if (pad && !rss_ctx) memset(&indir_tbl[i], 0, pad * sizeof(*indir_tbl)); } } @@ -238,3 +245,14 @@ int bnge_alloc_vnic_rss_table(struct bnge_net *bn, vnic->rss_hash_key_dma_addr = vnic->rss_table_dma_addr + size; return 0; } + +void bnge_init_vnic_mem(struct bnge_vnic_info *vnic) +{ + int i; + + vnic->fw_vnic_id = INVALID_HW_RING_ID; + vnic->vnic_id = BNGE_VNIC_ID_INVALID; + + for (i = 0; i < BNGE_MAX_CTX_PER_VNIC; i++) + vnic->fw_rss_cos_lb_ctx[i] = INVALID_HW_RING_ID; +} diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_vnic.h b/drivers/net/ethernet/broadcom/bnge/bnge_vnic.h index b2a1d8332a5f..3954c450315d 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_vnic.h +++ b/drivers/net/ethernet/broadcom/bnge/bnge_vnic.h @@ -21,6 +21,11 @@ struct bnge_l2_filter; #define BNGE_MAX_MC_ADDRS 16 #define BNGE_MAX_UC_ADDRS 4 +#define BNGE_VNIC_ID_INVALID 0xffffffff + +struct ethtool_rxfh_context; +struct ethtool_rxfh_param; + enum { BNGE_VNIC_DEFAULT = 0, BNGE_VNIC_NTUPLE = 1 @@ -30,7 +35,8 @@ enum { BNGE_VNIC_RSS_FLAG = BIT(0), BNGE_VNIC_MCAST_FLAG = BIT(1), BNGE_VNIC_UCAST_FLAG = BIT(2), - BNGE_VNIC_NTUPLE_FLAG = BIT(3) + BNGE_VNIC_NTUPLE_FLAG = BIT(3), + BNGE_VNIC_RSSCTX_FLAG = BIT(4) }; struct bnge_vnic_info { @@ -55,6 +61,8 @@ struct bnge_vnic_info { u32 flags; u32 vnic_id; + + struct ethtool_rxfh_context *rss_ctx; }; struct bnge_rss_ctx { @@ -66,7 +74,8 @@ void bnge_fill_hw_rss_tbl(struct bnge_net *bn, struct bnge_vnic_info *vnic); int bnge_hwrm_vnic_rss_cfg(struct bnge_net *bn, struct bnge_vnic_info *vnic); int bnge_setup_vnic(struct bnge_net *bn, struct bnge_vnic_info *vnic); -void bnge_set_dflt_rss_indir_tbl(struct bnge_dev *bd); +void bnge_set_dflt_rss_indir_tbl(struct bnge_dev *bd, + struct ethtool_rxfh_context *ctx); int bnge_alloc_rfs_vnic(struct bnge_net *bn); int bnge_alloc_vnic_rss_table(struct bnge_net *bn, struct bnge_vnic_info *vnic); @@ -78,4 +87,5 @@ void bnge_del_one_rss_ctx(struct bnge_net *bn, struct bnge_rss_ctx *rss_ctx, bool all); void bnge_hwrm_realloc_rss_ctx_vnic(struct bnge_net *bn); void bnge_clear_rss_ctxs(struct bnge_net *bn); +void bnge_init_vnic_mem(struct bnge_vnic_info *vnic); #endif /* _BNGE_VNIC_H_ */ -- 2.47.1