From nobody Sat Jul 4 19:55:59 2026 Received: from mail-pj1-f97.google.com (mail-pj1-f97.google.com [209.85.216.97]) (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 7C82E212F89 for ; Sat, 4 Jul 2026 16:48:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783183683; cv=none; b=JL+lpPdGx+mP5MRuC/A3R8lF5E9pJIMX+djDefd/ZN3pNrWHUA0UvUhz1qWwPSAC1tNqkFv3krZ4Pzsq/3tFiSqSe4E8CfXdV+vN4ZJHlMI4bSdlyV/nkbwi3GQ/CFXWvEvStdv11EkQlX8Aq/d9RAftBuuGhjyBJpDgFSr5Sso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783183683; c=relaxed/simple; bh=rDGfRdNNDY0hTRSTPLAsaF4zbBkAbYxChNGjQ28uCN8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=aksOo7o76THm9VKVP4YQDBmNh1FTUc7xMBYtKo4vm3YVOWSUZbUDPghGBYrY0XBVRnT6qcIbxNj4g0PVvPGAeYMAT8kBlTiyezP/xzacneihtyFkbsqbxV5VAnAUx7Hv1ONg4vrmJg4TQ+FMPpcKWRSfNIo0aRSK741rbeb85fM= 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=MjuSO8p6; arc=none smtp.client-ip=209.85.216.97 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="MjuSO8p6" Received: by mail-pj1-f97.google.com with SMTP id 98e67ed59e1d1-37f816d01e3so1705207a91.2 for ; Sat, 04 Jul 2026 09:48:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783183681; x=1783788481; h=content-transfer-encoding:mime-version: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; bh=y7MpfKqWFP/eSYac/g1Pj5/S183YqsoiVeJj9FJV8vk=; b=PcyCg6LPx/vf4hh2RLJTlah3FDgRRsOKbuIRkzdR4oq4eEfUi+A7KyEDeaUZZmxTP5 gO2B5hOB6GTUNJlF8OKHNEpqBra/pDGjXV1q9+LFo/VYpOPzQfQQeWwmfTSjYZtA5DbS KqNBCJa05o3PVibpeaDQ9DnIX0WzoT/cacJq5ZYz8mcozV4WQ9J7Q9XtSQsK6md4ar2u ToGhjKdHQvAbdyGK05qnXWMynTwU7Gpy6BKQrVKyJhuO+5NNON2x6zyvI8HLD5zRum/T lCEzD4s40xgXrxZzILvm3jA4aOBgUJSAN5DPtvztrHfFWtHEoWX1v9/f5vJu6se3vrGa kT4Q== X-Forwarded-Encrypted: i=1; AHgh+RpY67SpH9wrsJPdEDnn82IB7At5Uc03t5kdDmFIiQYc47IFaBnp+vKdMGrhbiGKX0R8OjAZuiLzBo08tns=@vger.kernel.org X-Gm-Message-State: AOJu0YxrTGl8b1/MrKS0leEDx+gPDVFNiseIq5HMK24F3hyt31xknquZ Ttdj/QIUWZxHukq4cLRXBCe+pxqtQX3mUTP96haZZp+BVOiRmD0HT6jWvTSzgfPtCgyP8Drh7fI 15wQ6mBZbA+/NsDwmI3OVCa46d/4Xl4KBm93/ByCoqetZJrdIFKMwOc27uzmRMozwzITghUd5WC I4BjYtZz/MmMpzpESNdt4tfQ4JRyFo52CqQidu4L38+Q671jEuwc3sZe+mSjoavsZ2Xd/TXdgR8 W/qe1orYusYXEIAqA== X-Gm-Gg: AfdE7cl/2MkuUziKTqqVii0EeRDN2RZ1O2VYrEvft5tjjIHoc/hVXAGoJ0mYbJOAEnY DPqHywM2l6vX4RHzwXd+9u6is0BtDP9h8jFY1vbiFIyXfI2SbGB6XP0HlMsLYkqomaatsP7zljj +aqY1mPKe53HhZXIZvPxY4naPlKf5bn4Viq7EvuHc8cWFfXAWPgIBvg7lz+nkc2hqAtIY4lHNYm /h0/jFeMBrRH046/AXVVfydkkbkjuyIJm5c/AmTLcDDtD2AsLQkN6vVhzRBHC7UAg4NR2SDBU7w 70SJzv7/99DaGL3oL70gqZwfzVkwGVHo1zrYoq8ESBHo8/4zZGlME6QyCShPYK0P4hmDdZVDYq0 tDzweTcYz4tcK9U6L9KeQb3CHmshtNAm1Z/oxZtcf4j4iwpf9TPFIcDhXDQ3plWp3Ka/wGnXdvY qhCJuN09RQKQ/Umlq0NV8pPnsJpT5DWt/xDs3hdp34uLUN X-Received: by 2002:a17:90b:4d0f:b0:381:e73:3c2e with SMTP id 98e67ed59e1d1-3829f4e8432mr4018815a91.24.1783183680610; Sat, 04 Jul 2026 09:48:00 -0700 (PDT) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-11.dlp.protect.broadcom.com. [144.49.247.11]) by smtp-relay.gmail.com with ESMTPS id 98e67ed59e1d1-38127c88f9bsm419146a91.6.2026.07.04.09.48.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jul 2026 09:48:00 -0700 (PDT) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c9151bf6ce7so1678380a12.3 for ; Sat, 04 Jul 2026 09:47:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1783183679; x=1783788479; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=y7MpfKqWFP/eSYac/g1Pj5/S183YqsoiVeJj9FJV8vk=; b=MjuSO8p6ETUQdTgK+MI7vCYm8loblAFsRNYAwnuqHcExb8Ds+WIdiYD1Arcc3WKBEV BWk0XszaqEyNNVQTrS3vAUObZCTu1E4PNlWJKtmjt+DjvknSkpOFBkS0bkk3S39Xl4G9 u7a0YbPCL9AeUv1dB0cCa2JMivFQYB63talCA= X-Forwarded-Encrypted: i=1; AFNElJ/j4t/VmvGdgVIfp4C49DvtbHBks1NnBPexBo/2asfUNVquq0y52eBQZWMuxgFoKQh7QUkKUwjBEHbzHrA=@vger.kernel.org X-Received: by 2002:a05:6300:85:b0:3b2:8675:4866 with SMTP id adf61e73a8af0-3c03e498517mr3885534637.31.1783183678632; Sat, 04 Jul 2026 09:47:58 -0700 (PDT) X-Received: by 2002:a05:6300:85:b0:3b2:8675:4866 with SMTP id adf61e73a8af0-3c03e498517mr3885496637.31.1783183678052; Sat, 04 Jul 2026 09:47:58 -0700 (PDT) Received: from localhost.localdomain ([192.19.203.250]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b3c7ef188sm32062761c88.2.2026.07.04.09.47.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Jul 2026 09:47:57 -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, linux-rdma@vger.kernel.org, leonro@nvidia.com, jgg@nvidia.com, bhargava.marreddy@broadcom.com, rahul-rg.gupta@broadcom.com, vsrama-krishna.nemani@broadcom.com, rajashekar.hudumula@broadcom.com, ajit.khaparde@broadcom.com, Vikas Gupta , Siva Reddy Kallam , Dharmender Garg , Yendapally Reddy Dhananjaya Reddy Subject: [PATCH net v2] bnge/bng_re: fix ring ID widths Date: Sat, 4 Jul 2026 22:17:47 +0530 Message-ID: <20260704164747.1995227-1-vikas.gupta@broadcom.com> X-Mailer: git-send-email 2.47.1 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" Firmware requires more than 16 bits to address TX ring IDs for its internal QP management. Widen the associated HSI ring ID fields to 32 bits. The values firmware assigns remain within 24 bits, bounded by the hardware doorbell XID field. RX, completion, and NQ ring IDs are unaffected and remain 16-bit. Fixes: 42d1c54d6248 ("bnge/bng_re: Add a new HSI") Signed-off-by: Vikas Gupta Reviewed-by: Siva Reddy Kallam Reviewed-by: Dharmender Garg Reviewed-by: Yendapally Reddy Dhananjaya Reddy --- V2: Sashiko review:=20 - Updated commit message only, no code change. - Sashiko's concern about XID overflow is valid in theory but is handled by firmware, which guarantees TX ring IDs stay within the 24-bit hardware doorbell XID field. - Backward compatibility with older firmware is not a concern. drivers/infiniband/hw/bng_re/bng_dev.c | 6 +-- drivers/net/ethernet/broadcom/bnge/bnge.h | 1 + .../ethernet/broadcom/bnge/bnge_hwrm_lib.c | 8 +-- .../ethernet/broadcom/bnge/bnge_hwrm_lib.h | 2 +- .../net/ethernet/broadcom/bnge/bnge_netdev.c | 50 +++++++++---------- .../net/ethernet/broadcom/bnge/bnge_netdev.h | 4 +- .../net/ethernet/broadcom/bnge/bnge_rmem.h | 2 +- include/linux/bnge/hsi.h | 7 ++- 8 files changed, 39 insertions(+), 41 deletions(-) diff --git a/drivers/infiniband/hw/bng_re/bng_dev.c b/drivers/infiniband/hw= /bng_re/bng_dev.c index 71a7ca2196ad..311c8bc93160 100644 --- a/drivers/infiniband/hw/bng_re/bng_dev.c +++ b/drivers/infiniband/hw/bng_re/bng_dev.c @@ -113,7 +113,7 @@ static void bng_re_fill_fw_msg(struct bnge_fw_msg *fw_m= sg, void *msg, } =20 static int bng_re_net_ring_free(struct bng_re_dev *rdev, - u16 fw_ring_id, int type) + u32 fw_ring_id, int type) { struct bnge_auxr_dev *aux_dev =3D rdev->aux_dev; struct hwrm_ring_free_input req =3D {}; @@ -123,7 +123,7 @@ static int bng_re_net_ring_free(struct bng_re_dev *rdev, =20 bng_re_init_hwrm_hdr((void *)&req, HWRM_RING_FREE); req.ring_type =3D type; - req.ring_id =3D cpu_to_le16(fw_ring_id); + req.ring_id =3D cpu_to_le32(fw_ring_id); bng_re_fill_fw_msg(&fw_msg, (void *)&req, sizeof(req), (void *)&resp, sizeof(resp), BNGE_DFLT_HWRM_CMD_TIMEOUT); rc =3D bnge_send_msg(aux_dev, &fw_msg); @@ -161,7 +161,7 @@ static int bng_re_net_ring_alloc(struct bng_re_dev *rde= v, sizeof(resp), BNGE_DFLT_HWRM_CMD_TIMEOUT); rc =3D bnge_send_msg(aux_dev, &fw_msg); if (!rc) - *fw_ring_id =3D le16_to_cpu(resp.ring_id); + *fw_ring_id =3D (u16)le32_to_cpu(resp.ring_id); =20 return rc; } diff --git a/drivers/net/ethernet/broadcom/bnge/bnge.h b/drivers/net/ethern= et/broadcom/bnge/bnge.h index f21cff651fd4..4479ccd071f5 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge.h +++ b/drivers/net/ethernet/broadcom/bnge/bnge.h @@ -36,6 +36,7 @@ struct bnge_pf_info { }; =20 #define INVALID_HW_RING_ID ((u16)-1) +#define INVALID_HW_RING_ID_32BIT (U32_MAX) =20 enum { BNGE_FW_CAP_SHORT_CMD =3D BIT_ULL(0), diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.c b/drivers/n= et/ethernet/broadcom/bnge/bnge_hwrm_lib.c index 1c9cfec1b633..651c5e783516 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.c @@ -1283,7 +1283,7 @@ int bnge_hwrm_stat_ctx_alloc(struct bnge_net *bn) =20 int hwrm_ring_free_send_msg(struct bnge_net *bn, struct bnge_ring_struct *ring, - u32 ring_type, int cmpl_ring_id) + u32 ring_type, u32 cmpl_ring_id) { struct hwrm_ring_free_input *req; struct bnge_dev *bd =3D bn->bd; @@ -1295,7 +1295,7 @@ int hwrm_ring_free_send_msg(struct bnge_net *bn, =20 req->cmpl_ring =3D cpu_to_le16(cmpl_ring_id); req->ring_type =3D ring_type; - req->ring_id =3D cpu_to_le16(ring->fw_ring_id); + req->ring_id =3D cpu_to_le32(ring->fw_ring_id); =20 bnge_hwrm_req_hold(bd, req); rc =3D bnge_hwrm_req_send(bd, req); @@ -1317,7 +1317,7 @@ int hwrm_ring_alloc_send_msg(struct bnge_net *bn, struct hwrm_ring_alloc_output *resp; struct hwrm_ring_alloc_input *req; struct bnge_dev *bd =3D bn->bd; - u16 ring_id, flags =3D 0; + u32 ring_id, flags =3D 0; int rc; =20 rc =3D bnge_hwrm_req_init(bd, req, HWRM_RING_ALLOC); @@ -1401,7 +1401,7 @@ int hwrm_ring_alloc_send_msg(struct bnge_net *bn, =20 resp =3D bnge_hwrm_req_hold(bd, req); rc =3D bnge_hwrm_req_send(bd, req); - ring_id =3D le16_to_cpu(resp->ring_id); + ring_id =3D le32_to_cpu(resp->ring_id); bnge_hwrm_req_drop(bd, req); =20 exit: diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.h b/drivers/n= et/ethernet/broadcom/bnge/bnge_hwrm_lib.h index 3501de7a89b9..bf452e390d5b 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.h +++ b/drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.h @@ -50,7 +50,7 @@ int bnge_hwrm_cfa_l2_set_rx_mask(struct bnge_dev *bd, void bnge_hwrm_stat_ctx_free(struct bnge_net *bn); int bnge_hwrm_stat_ctx_alloc(struct bnge_net *bn); int hwrm_ring_free_send_msg(struct bnge_net *bn, struct bnge_ring_struct *= ring, - u32 ring_type, int cmpl_ring_id); + u32 ring_type, u32 cmpl_ring_id); int hwrm_ring_alloc_send_msg(struct bnge_net *bn, struct bnge_ring_struct *ring, u32 ring_type, u32 map_index); diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c b/drivers/net= /ethernet/broadcom/bnge/bnge_netdev.c index 70768193004c..6f7ef506d4e1 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c @@ -1327,12 +1327,12 @@ static int bnge_alloc_core(struct bnge_net *bn) return rc; } =20 -u16 bnge_cp_ring_for_rx(struct bnge_rx_ring_info *rxr) +u32 bnge_cp_ring_for_rx(struct bnge_rx_ring_info *rxr) { return rxr->rx_cpr->ring_struct.fw_ring_id; } =20 -u16 bnge_cp_ring_for_tx(struct bnge_tx_ring_info *txr) +u32 bnge_cp_ring_for_tx(struct bnge_tx_ring_info *txr) { return txr->tx_cpr->ring_struct.fw_ring_id; } @@ -1375,12 +1375,12 @@ static void bnge_init_nq_tree(struct bnge_net *bn) struct bnge_nq_ring_info *nqr =3D &bn->bnapi[i]->nq_ring; struct bnge_ring_struct *ring =3D &nqr->ring_struct; =20 - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; for (j =3D 0; j < nqr->cp_ring_count; j++) { struct bnge_cp_ring_info *cpr =3D &nqr->cp_ring_arr[j]; =20 ring =3D &cpr->ring_struct; - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; } } } @@ -1637,7 +1637,7 @@ static void bnge_init_one_rx_ring_rxbd(struct bnge_ne= t *bn, =20 ring =3D &rxr->rx_ring_struct; bnge_init_rxbd_pages(ring, type); - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; } =20 static void bnge_init_one_agg_ring_rxbd(struct bnge_net *bn, @@ -1647,7 +1647,7 @@ static void bnge_init_one_agg_ring_rxbd(struct bnge_n= et *bn, u32 type; =20 ring =3D &rxr->rx_agg_ring_struct; - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; 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; @@ -1708,7 +1708,7 @@ static void bnge_init_tx_rings(struct bnge_net *bn) struct bnge_tx_ring_info *txr =3D &bn->tx_ring[i]; struct bnge_ring_struct *ring =3D &txr->tx_ring_struct; =20 - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; =20 netif_queue_set_napi(bn->netdev, i, NETDEV_QUEUE_TYPE_TX, &txr->bnapi->napi); @@ -1867,7 +1867,7 @@ static int bnge_hwrm_rx_agg_ring_alloc(struct bnge_ne= t *bn, ring->fw_ring_id); bnge_db_write(bn->bd, &rxr->rx_agg_db, rxr->rx_agg_prod); bnge_db_write(bn->bd, &rxr->rx_db, rxr->rx_prod); - bn->grp_info[grp_idx].agg_fw_ring_id =3D ring->fw_ring_id; + bn->grp_info[grp_idx].agg_fw_ring_id =3D (u16)ring->fw_ring_id; =20 return 0; } @@ -1886,7 +1886,7 @@ static int bnge_hwrm_rx_ring_alloc(struct bnge_net *b= n, return rc; =20 bnge_set_db(bn, &rxr->rx_db, type, map_idx, ring->fw_ring_id); - bn->grp_info[map_idx].rx_fw_ring_id =3D ring->fw_ring_id; + bn->grp_info[map_idx].rx_fw_ring_id =3D (u16)ring->fw_ring_id; =20 return 0; } @@ -1916,7 +1916,7 @@ static int bnge_hwrm_ring_alloc(struct bnge_net *bn) bnge_set_db(bn, &nqr->nq_db, type, map_idx, ring->fw_ring_id); bnge_db_nq(bn, &nqr->nq_db, nqr->nq_raw_cons); enable_irq(vector); - bn->grp_info[i].nq_fw_ring_id =3D ring->fw_ring_id; + bn->grp_info[i].nq_fw_ring_id =3D (u16)ring->fw_ring_id; =20 if (!i) { rc =3D bnge_hwrm_set_async_event_cr(bd, ring->fw_ring_id); @@ -1986,15 +1986,13 @@ void bnge_fill_hw_rss_tbl(struct bnge_net *bn, stru= ct bnge_vnic_info *vnic) tbl_size =3D bnge_get_rxfh_indir_size(bd); =20 for (i =3D 0; i < tbl_size; i++) { - u16 ring_id, j; + u32 j; =20 j =3D bd->rss_indir_tbl[i]; rxr =3D &bn->rx_ring[j]; =20 - ring_id =3D rxr->rx_ring_struct.fw_ring_id; - *ring_tbl++ =3D cpu_to_le16(ring_id); - ring_id =3D bnge_cp_ring_for_rx(rxr); - *ring_tbl++ =3D cpu_to_le16(ring_id); + *ring_tbl++ =3D cpu_to_le16(rxr->rx_ring_struct.fw_ring_id); + *ring_tbl++ =3D cpu_to_le16(bnge_cp_ring_for_rx(rxr)); } } =20 @@ -2285,7 +2283,7 @@ static void bnge_disable_int(struct bnge_net *bn) nqr =3D &bnapi->nq_ring; ring =3D &nqr->ring_struct; =20 - if (ring->fw_ring_id !=3D INVALID_HW_RING_ID) + if (ring->fw_ring_id !=3D INVALID_HW_RING_ID_32BIT) bnge_db_nq(bn, &nqr->nq_db, nqr->nq_raw_cons); } } @@ -2401,7 +2399,7 @@ static void bnge_hwrm_rx_ring_free(struct bnge_net *b= n, u32 grp_idx =3D rxr->bnapi->index; u32 cmpl_ring_id; =20 - if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID) + if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID_32BIT) return; =20 cmpl_ring_id =3D bnge_cp_ring_for_rx(rxr); @@ -2409,7 +2407,7 @@ static void bnge_hwrm_rx_ring_free(struct bnge_net *b= n, RING_FREE_REQ_RING_TYPE_RX, close_path ? cmpl_ring_id : INVALID_HW_RING_ID); - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; bn->grp_info[grp_idx].rx_fw_ring_id =3D INVALID_HW_RING_ID; } =20 @@ -2421,14 +2419,14 @@ static void bnge_hwrm_rx_agg_ring_free(struct bnge_= net *bn, u32 grp_idx =3D rxr->bnapi->index; u32 cmpl_ring_id; =20 - if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID) + if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID_32BIT) return; =20 cmpl_ring_id =3D bnge_cp_ring_for_rx(rxr); hwrm_ring_free_send_msg(bn, ring, RING_FREE_REQ_RING_TYPE_RX_AGG, close_path ? cmpl_ring_id : INVALID_HW_RING_ID); - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; bn->grp_info[grp_idx].agg_fw_ring_id =3D INVALID_HW_RING_ID; } =20 @@ -2439,14 +2437,14 @@ static void bnge_hwrm_tx_ring_free(struct bnge_net = *bn, struct bnge_ring_struct *ring =3D &txr->tx_ring_struct; u32 cmpl_ring_id; =20 - if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID) + if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID_32BIT) return; =20 cmpl_ring_id =3D close_path ? bnge_cp_ring_for_tx(txr) : INVALID_HW_RING_ID; hwrm_ring_free_send_msg(bn, ring, RING_FREE_REQ_RING_TYPE_TX, cmpl_ring_id); - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; } =20 static void bnge_hwrm_cp_ring_free(struct bnge_net *bn, @@ -2455,12 +2453,12 @@ static void bnge_hwrm_cp_ring_free(struct bnge_net = *bn, struct bnge_ring_struct *ring; =20 ring =3D &cpr->ring_struct; - if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID) + if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID_32BIT) return; =20 hwrm_ring_free_send_msg(bn, ring, RING_FREE_REQ_RING_TYPE_L2_CMPL, INVALID_HW_RING_ID); - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; } =20 static void bnge_hwrm_ring_free(struct bnge_net *bn, bool close_path) @@ -2496,11 +2494,11 @@ static void bnge_hwrm_ring_free(struct bnge_net *bn= , bool close_path) bnge_hwrm_cp_ring_free(bn, &nqr->cp_ring_arr[j]); =20 ring =3D &nqr->ring_struct; - if (ring->fw_ring_id !=3D INVALID_HW_RING_ID) { + if (ring->fw_ring_id !=3D INVALID_HW_RING_ID_32BIT) { hwrm_ring_free_send_msg(bn, ring, RING_FREE_REQ_RING_TYPE_NQ, INVALID_HW_RING_ID); - ring->fw_ring_id =3D INVALID_HW_RING_ID; + ring->fw_ring_id =3D INVALID_HW_RING_ID_32BIT; bn->grp_info[i].nq_fw_ring_id =3D INVALID_HW_RING_ID; } } diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.h b/drivers/net= /ethernet/broadcom/bnge/bnge_netdev.h index f4636b5b0cf3..d177919c2e11 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.h +++ b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.h @@ -630,8 +630,8 @@ struct bnge_l2_filter { refcount_t refcnt; }; =20 -u16 bnge_cp_ring_for_rx(struct bnge_rx_ring_info *rxr); -u16 bnge_cp_ring_for_tx(struct bnge_tx_ring_info *txr); +u32 bnge_cp_ring_for_rx(struct bnge_rx_ring_info *rxr); +u32 bnge_cp_ring_for_tx(struct bnge_tx_ring_info *txr); void bnge_fill_hw_rss_tbl(struct bnge_net *bn, struct bnge_vnic_info *vnic= ); int bnge_alloc_rx_data(struct bnge_net *bn, struct bnge_rx_ring_info *rxr, u16 prod, gfp_t gfp); diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_rmem.h b/drivers/net/e= thernet/broadcom/bnge/bnge_rmem.h index 341c7f81ed09..bb0c79a1ee60 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_rmem.h +++ b/drivers/net/ethernet/broadcom/bnge/bnge_rmem.h @@ -184,7 +184,7 @@ struct bnge_ctx_mem_info { struct bnge_ring_struct { struct bnge_ring_mem_info ring_mem; =20 - u16 fw_ring_id; + u32 fw_ring_id; union { u16 grp_idx; u16 map_idx; /* Used by NQs */ diff --git a/include/linux/bnge/hsi.h b/include/linux/bnge/hsi.h index 8ea13d5407ee..1f7bd96415a5 100644 --- a/include/linux/bnge/hsi.h +++ b/include/linux/bnge/hsi.h @@ -8317,8 +8317,7 @@ struct hwrm_ring_alloc_output { __le16 req_type; __le16 seq_id; __le16 resp_len; - __le16 ring_id; - __le16 logical_ring_id; + __le32 ring_id; u8 push_buffer_index; #define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PING_BUFFER 0x0UL #define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER 0x1UL @@ -8345,10 +8344,10 @@ struct hwrm_ring_free_input { u8 flags; #define RING_FREE_REQ_FLAGS_VIRTIO_RING_VALID 0x1UL #define RING_FREE_REQ_FLAGS_LAST RING_FREE_REQ_FLAGS_VIRTIO_R= ING_VALID - __le16 ring_id; + __le16 unused_1; __le32 prod_idx; __le32 opaque; - __le32 unused_1; + __le32 ring_id; }; =20 /* hwrm_ring_free_output (size:128b/16B) */ --=20 2.47.1