From nobody Thu Oct 2 07:46:36 2025 Received: from mail-io1-f99.google.com (mail-io1-f99.google.com [209.85.166.99]) (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 BD0C8323414 for ; Fri, 19 Sep 2025 17:48:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758304117; cv=none; b=NYeJwqjvXhA6D1fA9VgdOGSBYwPlxytkZMmELGGppHfG6dHzcrMM4mOra60g8pKLMVtn7hlOX2uuL9+a/sV3SPCz5P/oa8K/SQsst+N2IzF90PohlWQf1HqSyaAMrWAC0hllw9x3UnmGPUfc24TLrx7fER53gqGYDD971ue5kEo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758304117; c=relaxed/simple; bh=lnfezG8VyIGZ/WTj0Vt5pgVwkJXMU2oog07QRNCkswM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C5JYJLuppsLm05Jiseh2Zd9Vg6eHbw0U1mOBIDHFfE4rd2240uYAbD8p5Er/gCfFLqJH+VQaZkJ9t1NRTy80qoaDbx/U7LJdWs684ZTVaAZZ4IkjOTLdXbxrZ4mT5u2c3XncGWj0mITD4gd5FRJ0affghbBMngRdu8aKdFcwMOg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine 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=HcjyfNpF; arc=none smtp.client-ip=209.85.166.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine 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="HcjyfNpF" Received: by mail-io1-f99.google.com with SMTP id ca18e2360f4ac-88758c2a133so211820639f.0 for ; Fri, 19 Sep 2025 10:48:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758304115; x=1758908915; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=bnJXUu4JK2DcGo43AyLTZEWYsUCAvh8a5G8goJOjFss=; b=geVU91IgcBBmA40QIIqlmB6CXKDlZ9oOAGxSgQMfvDsANswTp217hhCokzGEkhUOmi /5aMCxkzXEO5Y0MesLO4sfpPLmJyGoTkQiWGy0twaYRsumHTjFbBJgybJ65t8eOAVRS0 G1dJBphHEAJMqvdK5ZyxwBUcsvewykXwvKCIBlZdK6fDtjMYcPlzRp8ldcOdotlhKBUk 61NGKKauO2jWLMQpzHoGcNby875sNJcvzH9BeZAhvSfSV5GZsBKyGt7HLdtX6JqienHY j8XQUEg41mQVjtrwrdOwQCTXOpEdpgp1BwKfKnOeXSA8QqMKZPcFQKYnkIZNn/D+Ba86 0Y0w== X-Forwarded-Encrypted: i=1; AJvYcCVD/8DON2WVXU/v5/ByXcQOsQTSYk1s1tlv+4HyUX8/3H+HNBy5QLly9aN+9zn/YNuI6GsL2q40HK92AWk=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+UhF0vzCMLAME1yEBbiOPpWhF2ogBvRHAHmaGj64dDewrZPG7 TE6BoIP51VzCk5TMMayTxauBqkFIgJpMAYeoOVBPh32ec1xBJWVArf4Mr9c/3OfU49VPCSaWXfA EYUZCzVb7Xml1DVkBJaE7Ux7RPKf18ITG42ZWi2Hyt4M7xNSA6zWkwlDzMIf8+yCpkMfKeuA76K mhyexcYnXCIlvkI4h9To6Y12PWS67YRmh8Hp4W13v4Z6zy7ZJeomlvmAUfjvuTic5VS2Yu75mPt 87ShZeDvwDqkuAgJJQuhxIT2F/k X-Gm-Gg: ASbGncvU69nSc2WKgYCDFI+vcVZKQDq9MgT+8n8ja+fJu0Gb7Ic7miT24kb6MkYWGBe sMKh/PkhUnElJ0+7aqpKqMeBgU+MJqgWPtyRl24I2kXD5vx1xyurJBWalPR8s3Tg+Y6+JNTt0LF 2PMb8Vfg4Uaa2Yq7S+r20dj2THYjhw124FCto65YuBrPZnKq5sehVjBudoOY+9ExTgBKhMbAchT NUkDiV9cHyk3UKItt/GDkqFINF3NcoUVJsu0SPMWlexPoHOUxpgpfT4uJwkSFIukOW7zdLIpwrC Or+gToxGEr1I83Wxm84WmAbWh0Il6NumSv3yXs3JoucD/9tgxvYYJkT0rmzfryyAvjaNTer6OHA 1SocfGZGfl88LAqra2VE3grvREjCpgesq7T3brkOiTHcCw5WoSoCWS6W99Pu3l9qA8cGoLcEXMi 5/9r0BSpZY X-Google-Smtp-Source: AGHT+IErZ6NJTU+qZsz5wMGEZ+8vAIGta9PkKZrqLoenlKI1lboYECJPtRdTvp/OXPYc/e0FCoXbUmyw4lBH X-Received: by 2002:a05:6e02:2782:b0:424:8030:2f86 with SMTP id e9e14a558f8ab-42481999b99mr79947455ab.29.1758304114551; Fri, 19 Sep 2025 10:48:34 -0700 (PDT) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-119.dlp.protect.broadcom.com. [144.49.247.119]) by smtp-relay.gmail.com with ESMTPS id e9e14a558f8ab-42485b0e2b9sm1122955ab.39.2025.09.19.10.48.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Sep 2025 10:48:34 -0700 (PDT) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b5527f0d39bso623721a12.2 for ; Fri, 19 Sep 2025 10:48:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1758304113; x=1758908913; 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; bh=bnJXUu4JK2DcGo43AyLTZEWYsUCAvh8a5G8goJOjFss=; b=HcjyfNpFOJRDBL611j8fUXAb3lEC778OFJXHQlSXEQBcK6YGkOXdkGR6Sg0UmDOFwC EvQm8/kFrEd5Yd9se5oLLUQ6gXhEd+v7BC8ekepLVlzxO/0MeYiug73Ic/yNBMbjrMAO tEHwL3TOHpVoZROx4jAIOL5BAEmzJk4eIjty0= X-Forwarded-Encrypted: i=1; AJvYcCXTICrdu6IOPllxch57RI9bnRu77Iq7Bs3i8dZ50tC6DDQvIEQUQf8cxIEXHZpA7JVwVg4DOveghCSdXAQ=@vger.kernel.org X-Received: by 2002:a05:6a20:918f:b0:245:fb85:ef69 with SMTP id adf61e73a8af0-2927154c935mr6911031637.40.1758304113001; Fri, 19 Sep 2025 10:48:33 -0700 (PDT) X-Received: by 2002:a05:6a20:918f:b0:245:fb85:ef69 with SMTP id adf61e73a8af0-2927154c935mr6911004637.40.1758304112510; Fri, 19 Sep 2025 10:48:32 -0700 (PDT) Received: from hyd-csg-thor2-h1-server2.dhcp.broadcom.net ([192.19.203.250]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b55138043b6sm3513119a12.26.2025.09.19.10.48.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Sep 2025 10:48:32 -0700 (PDT) From: Bhargava Marreddy 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, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, vsrama-krishna.nemani@broadcom.com, vikas.gupta@broadcom.com, Bhargava Marreddy , Rajashekar Hudumula Subject: [v8, net-next 05/10] bng_en: Initialise core resources Date: Fri, 19 Sep 2025 23:17:36 +0530 Message-ID: <20250919174742.24969-6-bhargava.marreddy@broadcom.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250919174742.24969-1-bhargava.marreddy@broadcom.com> References: <20250919174742.24969-1-bhargava.marreddy@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: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Add initial settings to all core resources, such as the RX, AGG, TX, CQ, and NQ rings, as well as the VNIC. This will help enable these resources in future patches. Signed-off-by: Bhargava Marreddy Reviewed-by: Vikas Gupta Reviewed-by: Rajashekar Hudumula --- .../net/ethernet/broadcom/bnge/bnge_netdev.c | 210 ++++++++++++++++++ .../net/ethernet/broadcom/bnge/bnge_netdev.h | 50 +++++ .../net/ethernet/broadcom/bnge/bnge_rmem.h | 1 + 3 files changed, 261 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c b/drivers/net= /ethernet/broadcom/bnge/bnge_netdev.c index df05e6ea271..c3418b3fe05 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c @@ -547,6 +547,33 @@ static void bnge_free_vnics(struct bnge_net *bn) bn->nr_vnics =3D 0; } =20 +static void bnge_free_ring_grps(struct bnge_net *bn) +{ + kfree(bn->grp_info); + bn->grp_info =3D NULL; +} + +static int bnge_init_ring_grps(struct bnge_net *bn) +{ + struct bnge_dev *bd =3D bn->bd; + int i; + + bn->grp_info =3D kcalloc(bd->nq_nr_rings, + sizeof(struct bnge_ring_grp_info), + GFP_KERNEL); + if (!bn->grp_info) + return -ENOMEM; + for (i =3D 0; i < bd->nq_nr_rings; i++) { + bn->grp_info[i].fw_stats_ctx =3D INVALID_HW_RING_ID; + bn->grp_info[i].fw_grp_id =3D INVALID_HW_RING_ID; + bn->grp_info[i].rx_fw_ring_id =3D INVALID_HW_RING_ID; + bn->grp_info[i].agg_fw_ring_id =3D INVALID_HW_RING_ID; + bn->grp_info[i].nq_fw_ring_id =3D INVALID_HW_RING_ID; + } + + return 0; +} + static void bnge_free_core(struct bnge_net *bn) { bnge_free_vnic_attributes(bn); @@ -554,6 +581,7 @@ static void bnge_free_core(struct bnge_net *bn) bnge_free_rx_rings(bn); bnge_free_nq_tree(bn); bnge_free_nq_arrays(bn); + bnge_free_ring_grps(bn); bnge_free_vnics(bn); kfree(bn->tx_ring_map); bn->tx_ring_map =3D NULL; @@ -692,6 +720,167 @@ static irqreturn_t bnge_msix(int irq, void *dev_insta= nce) return IRQ_HANDLED; } =20 +static void bnge_init_nq_tree(struct bnge_net *bn) +{ + struct bnge_dev *bd =3D bn->bd; + int i, j; + + for (i =3D 0; i < bd->nq_nr_rings; i++) { + struct bnge_nq_ring_info *nqr =3D &bn->bnapi[i]->nq_ring; + struct bnge_ring_struct *ring =3D &nqr->ring_struct; + + ring->fw_ring_id =3D INVALID_HW_RING_ID; + for (j =3D 0; j < nqr->cp_ring_count; j++) { + struct bnge_cp_ring_info *cpr =3D &nqr->cp_ring_arr[j]; + + ring =3D &cpr->ring_struct; + ring->fw_ring_id =3D INVALID_HW_RING_ID; + } + } +} + +static void bnge_init_rxbd_pages(struct bnge_ring_struct *ring, u32 type) +{ + struct rx_bd **rx_desc_ring; + u32 prod; + int i; + + rx_desc_ring =3D (struct rx_bd **)ring->ring_mem.pg_arr; + for (i =3D 0, prod =3D 0; i < ring->ring_mem.nr_pages; i++) { + struct rx_bd *rxbd =3D rx_desc_ring[i]; + int j; + + for (j =3D 0; j < RX_DESC_CNT; j++, rxbd++, prod++) { + rxbd->rx_bd_len_flags_type =3D cpu_to_le32(type); + rxbd->rx_bd_opaque =3D prod; + } + } +} + +static void bnge_init_one_rx_ring_rxbd(struct bnge_net *bn, + struct bnge_rx_ring_info *rxr) +{ + struct bnge_ring_struct *ring; + u32 type; + + type =3D (bn->rx_buf_use_size << RX_BD_LEN_SHIFT) | + RX_BD_TYPE_RX_PACKET_BD | RX_BD_FLAGS_EOP; + + if (NET_IP_ALIGN =3D=3D 2) + type |=3D RX_BD_FLAGS_SOP; + + ring =3D &rxr->rx_ring_struct; + bnge_init_rxbd_pages(ring, type); + ring->fw_ring_id =3D INVALID_HW_RING_ID; +} + +static void bnge_init_one_agg_ring_rxbd(struct bnge_net *bn, + struct bnge_rx_ring_info *rxr) +{ + struct bnge_ring_struct *ring; + u32 type; + + ring =3D &rxr->rx_agg_ring_struct; + ring->fw_ring_id =3D INVALID_HW_RING_ID; + if (bnge_is_agg_reqd(bn->bd)) { + type =3D ((u32)BNGE_RX_PAGE_SIZE << RX_BD_LEN_SHIFT) | + RX_BD_TYPE_RX_AGG_BD | RX_BD_FLAGS_SOP; + + bnge_init_rxbd_pages(ring, type); + } +} + +static void bnge_init_one_rx_ring_pair(struct bnge_net *bn, int ring_nr) +{ + struct bnge_rx_ring_info *rxr; + + rxr =3D &bn->rx_ring[ring_nr]; + bnge_init_one_rx_ring_rxbd(bn, rxr); + + netif_queue_set_napi(bn->netdev, ring_nr, NETDEV_QUEUE_TYPE_RX, + &rxr->bnapi->napi); + + bnge_init_one_agg_ring_rxbd(bn, rxr); +} + +static void bnge_init_rx_rings(struct bnge_net *bn) +{ + int i; + +#define BNGE_RX_OFFSET (NET_SKB_PAD + NET_IP_ALIGN) +#define BNGE_RX_DMA_OFFSET NET_SKB_PAD + bn->rx_offset =3D BNGE_RX_OFFSET; + bn->rx_dma_offset =3D BNGE_RX_DMA_OFFSET; + + for (i =3D 0; i < bn->bd->rx_nr_rings; i++) + bnge_init_one_rx_ring_pair(bn, i); +} + +static void bnge_init_tx_rings(struct bnge_net *bn) +{ + int i; + + bn->tx_wake_thresh =3D max(bn->tx_ring_size / 2, BNGE_MIN_TX_DESC_CNT); + + for (i =3D 0; i < bn->bd->tx_nr_rings; i++) { + struct bnge_tx_ring_info *txr =3D &bn->tx_ring[i]; + struct bnge_ring_struct *ring =3D &txr->tx_ring_struct; + + ring->fw_ring_id =3D INVALID_HW_RING_ID; + + netif_queue_set_napi(bn->netdev, i, NETDEV_QUEUE_TYPE_TX, + &txr->bnapi->napi); + } +} + +static void bnge_init_vnics(struct bnge_net *bn) +{ + struct bnge_vnic_info *vnic0 =3D &bn->vnic_info[BNGE_VNIC_DEFAULT]; + int i; + + for (i =3D 0; i < bn->nr_vnics; i++) { + struct bnge_vnic_info *vnic =3D &bn->vnic_info[i]; + int j; + + vnic->fw_vnic_id =3D INVALID_HW_RING_ID; + vnic->vnic_id =3D i; + for (j =3D 0; j < BNGE_MAX_CTX_PER_VNIC; j++) + vnic->fw_rss_cos_lb_ctx[j] =3D INVALID_HW_RING_ID; + + if (bn->vnic_info[i].rss_hash_key) { + if (i =3D=3D BNGE_VNIC_DEFAULT) { + u8 *key =3D (void *)vnic->rss_hash_key; + int k; + + if (!bn->rss_hash_key_valid && + !bn->rss_hash_key_updated) { + get_random_bytes(bn->rss_hash_key, + HW_HASH_KEY_SIZE); + bn->rss_hash_key_updated =3D true; + } + + memcpy(vnic->rss_hash_key, bn->rss_hash_key, + HW_HASH_KEY_SIZE); + + if (!bn->rss_hash_key_updated) + continue; + + bn->rss_hash_key_updated =3D false; + bn->rss_hash_key_valid =3D true; + + bn->toeplitz_prefix =3D 0; + for (k =3D 0; k < 8; k++) { + bn->toeplitz_prefix <<=3D 8; + bn->toeplitz_prefix |=3D key[k]; + } + } else { + memcpy(vnic->rss_hash_key, vnic0->rss_hash_key, + HW_HASH_KEY_SIZE); + } + } + } +} + static void bnge_setup_msix(struct bnge_net *bn) { struct net_device *dev =3D bn->netdev; @@ -836,6 +1025,20 @@ static void bnge_del_napi(struct bnge_net *bn) synchronize_net(); } =20 +static int bnge_init_nic(struct bnge_net *bn) +{ + int rc; + + bnge_init_nq_tree(bn); + bnge_init_rx_rings(bn); + bnge_init_tx_rings(bn); + rc =3D bnge_init_ring_grps(bn); + if (rc) + return rc; + bnge_init_vnics(bn); + return rc; +} + static int bnge_open_core(struct bnge_net *bn) { struct bnge_dev *bd =3D bn->bd; @@ -862,9 +1065,16 @@ static int bnge_open_core(struct bnge_net *bn) goto err_del_napi; } =20 + rc =3D bnge_init_nic(bn); + if (rc) { + netdev_err(bn->netdev, "bnge_init_nic err: %d\n", rc); + goto err_free_irq; + } set_bit(BNGE_STATE_OPEN, &bd->state); return 0; =20 +err_free_irq: + bnge_free_irq(bn); err_del_napi: bnge_del_napi(bn); bnge_free_core(bn); diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.h b/drivers/net= /ethernet/broadcom/bnge/bnge_netdev.h index 115297dd82c..10bd29a833e 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.h +++ b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.h @@ -118,6 +118,20 @@ struct bnge_sw_rx_agg_bd { dma_addr_t mapping; }; =20 +#define HWRM_RING_ALLOC_TX 0x1 +#define HWRM_RING_ALLOC_RX 0x2 +#define HWRM_RING_ALLOC_AGG 0x4 +#define HWRM_RING_ALLOC_CMPL 0x8 +#define HWRM_RING_ALLOC_NQ 0x10 + +struct bnge_ring_grp_info { + u16 fw_stats_ctx; + u16 fw_grp_id; + u16 rx_fw_ring_id; + u16 agg_fw_ring_id; + u16 nq_fw_ring_id; +}; + #define BNGE_RX_COPY_THRESH 256 =20 #define BNGE_HW_FEATURE_VLAN_ALL_RX \ @@ -133,6 +147,28 @@ enum { =20 #define BNGE_NET_EN_TPA (BNGE_NET_EN_GRO | BNGE_NET_EN_LRO) =20 +/* Minimum TX BDs for a TX packet with MAX_SKB_FRAGS + 1. We need one extra + * BD because the first TX BD is always a long BD. + */ +#define BNGE_MIN_TX_DESC_CNT (MAX_SKB_FRAGS + 2) + +#define RX_RING(bn, x) (((x) & (bn)->rx_ring_mask) >> (BNGE_PAGE_SHIFT - 4= )) +#define RX_AGG_RING(bn, x) (((x) & (bn)->rx_agg_ring_mask) >> \ + (BNGE_PAGE_SHIFT - 4)) +#define RX_IDX(x) ((x) & (RX_DESC_CNT - 1)) + +#define TX_RING(bn, x) (((x) & (bn)->tx_ring_mask) >> (BNGE_PAGE_SHIFT - 4= )) +#define TX_IDX(x) ((x) & (TX_DESC_CNT - 1)) + +#define CP_RING(x) (((x) & ~(CP_DESC_CNT - 1)) >> (BNGE_PAGE_SHIFT - 4)) +#define CP_IDX(x) ((x) & (CP_DESC_CNT - 1)) + +#define RING_RX(bn, idx) ((idx) & (bn)->rx_ring_mask) +#define NEXT_RX(idx) ((idx) + 1) + +#define RING_RX_AGG(bn, idx) ((idx) & (bn)->rx_agg_ring_mask) +#define NEXT_RX_AGG(idx) ((idx) + 1) + #define BNGE_NQ_HDL_TYPE_RX 0x00 #define BNGE_NQ_HDL_TYPE_TX 0x01 =20 @@ -176,9 +212,19 @@ struct bnge_net { u16 *tx_ring_map; enum dma_data_direction rx_dir; =20 + /* grp_info indexed by napi/nq index */ + struct bnge_ring_grp_info *grp_info; struct bnge_vnic_info *vnic_info; int nr_vnics; int total_irqs; + + u32 tx_wake_thresh; + u16 rx_offset; + u16 rx_dma_offset; + + u8 rss_hash_key[HW_HASH_KEY_SIZE]; + u8 rss_hash_key_valid:1; + u8 rss_hash_key_updated:1; }; =20 #define BNGE_DEFAULT_RX_RING_SIZE 511 @@ -307,6 +353,9 @@ struct bnge_napi { #define BNGE_MAX_UC_ADDRS 4 =20 struct bnge_vnic_info { + u16 fw_vnic_id; +#define BNGE_MAX_CTX_PER_VNIC 8 + u16 fw_rss_cos_lb_ctx[BNGE_MAX_CTX_PER_VNIC]; u8 *uc_list; dma_addr_t rss_table_dma_addr; __le16 *rss_table; @@ -329,5 +378,6 @@ struct bnge_vnic_info { #define BNGE_VNIC_RSS_FLAG 1 #define BNGE_VNIC_MCAST_FLAG 4 #define BNGE_VNIC_UCAST_FLAG 8 + u32 vnic_id; }; #endif /* _BNGE_NETDEV_H_ */ diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_rmem.h b/drivers/net/e= thernet/broadcom/bnge/bnge_rmem.h index 162a66c7983..0e7684e2071 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_rmem.h +++ b/drivers/net/ethernet/broadcom/bnge/bnge_rmem.h @@ -184,6 +184,7 @@ struct bnge_ctx_mem_info { struct bnge_ring_struct { struct bnge_ring_mem_info ring_mem; =20 + u16 fw_ring_id; union { u16 grp_idx; u16 map_idx; /* Used by NQs */ --=20 2.47.3