* [PATCH v3 net-next] octeontx2-af: add new mbox to support sync cycle on rx path
@ 2026-07-27 10:16 Ratheesh Kannoth
2026-07-31 8:25 ` Simon Horman
0 siblings, 1 reply; 2+ messages in thread
From: Ratheesh Kannoth @ 2026-07-27 10:16 UTC (permalink / raw)
To: linux-kernel, netdev
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, sgoutham, Satha Rao,
Ratheesh Kannoth
From: Satha Rao <skoteshwar@marvell.com>
sync ensures that all packets that were in flight are flushed out to
memory. This can be used to assist in the tearing down of an active RQ.
To complete disabling RQs or disabling SMQ and its SQs, LF software
send mbox to AF to complete RX_SW_SYNC.
Both VF and PF and invoke this mbox.
Signed-off-by: Satha Rao <skoteshwar@marvell.com>
Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
---
v2 -> v3: Addressed Simon comments
https://lore.kernel.org/netdev/20260715041239.2052888-1-rkannoth@marvell.com/
v1 -> v2: https://lore.kernel.org/netdev/20260715041239.2052888-1-rkannoth@marvell.com/
---
.../net/ethernet/marvell/octeontx2/af/mbox.h | 2 ++
.../ethernet/marvell/octeontx2/af/rvu_nix.c | 31 +++++++++++++++++--
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/mbox.h b/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
index 10552e9cf519..73f743e4a83d 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
+++ b/drivers/net/ethernet/marvell/octeontx2/af/mbox.h
@@ -362,6 +362,7 @@ M(NIX_CPT_BP_ENABLE, 0x8020, nix_cpt_bp_enable, nix_bp_cfg_req, \
nix_bp_cfg_rsp) \
M(NIX_CPT_BP_DISABLE, 0x8021, nix_cpt_bp_disable, nix_bp_cfg_req, \
msg_rsp) \
+M(NIX_RX_SW_SYNC, 0x8022, nix_rx_sw_sync, msg_req, msg_rsp) \
M(NIX_READ_INLINE_IPSEC_CFG, 0x8023, nix_read_inline_ipsec_cfg, \
msg_req, nix_inline_ipsec_cfg) \
M(NIX_MCAST_GRP_CREATE, 0x802b, nix_mcast_grp_create, nix_mcast_grp_create_req, \
@@ -952,6 +953,7 @@ enum nix_af_status {
NIX_AF_ERR_INVALID_MCAST_GRP = -436,
NIX_AF_ERR_INVALID_MCAST_DEL_REQ = -437,
NIX_AF_ERR_NON_CONTIG_MCE_LIST = -438,
+ NIX_AF_ERR_RX_SW_SYNC_FAIL = -439,
};
/* For NIX RX vtag action */
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
index dade7bb6deb7..e397c8cedbc7 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
@@ -269,15 +269,19 @@ u32 convert_bytes_to_dwrr_mtu(u32 bytes)
return 0;
}
-static void nix_rx_sync(struct rvu *rvu, int blkaddr)
+static int nix_rx_sync(struct rvu *rvu, int blkaddr)
{
int err;
+ mutex_lock(&rvu->rsrc_lock);
+
/* Sync all in flight RX packets to LLC/DRAM */
rvu_write64(rvu, blkaddr, NIX_AF_RX_SW_SYNC, BIT_ULL(0));
err = rvu_poll_reg(rvu, blkaddr, NIX_AF_RX_SW_SYNC, BIT_ULL(0), true);
- if (err)
+ if (err) {
dev_err(rvu->dev, "SYNC1: NIX RX software sync failed\n");
+ goto unlock;
+ }
/* SW_SYNC ensures all existing transactions are finished and pkts
* are written to LLC/DRAM, queues should be teared down after
@@ -289,6 +293,10 @@ static void nix_rx_sync(struct rvu *rvu, int blkaddr)
err = rvu_poll_reg(rvu, blkaddr, NIX_AF_RX_SW_SYNC, BIT_ULL(0), true);
if (err)
dev_err(rvu->dev, "SYNC2: NIX RX software sync failed\n");
+
+unlock:
+ mutex_unlock(&rvu->rsrc_lock);
+ return err;
}
static bool is_valid_txschq(struct rvu *rvu, int blkaddr,
@@ -6336,6 +6344,25 @@ int rvu_mbox_handler_nix_bandprof_get_hwinfo(struct rvu *rvu, struct msg_req *re
return 0;
}
+int rvu_mbox_handler_nix_rx_sw_sync(struct rvu *rvu, struct msg_req *req,
+ struct msg_rsp *rsp)
+{
+ int blkaddr, nixlf, err;
+
+ /* NIX_AF_RX_SW_SYNC is global per NIX block; nix_rx_sync() serializes
+ * access under rvu->rsrc_lock across mbox and teardown paths.
+ */
+ err = nix_get_nixlf(rvu, req->hdr.pcifunc, &nixlf, &blkaddr);
+ if (err)
+ return err;
+
+ err = nix_rx_sync(rvu, blkaddr);
+ if (err)
+ return NIX_AF_ERR_RX_SW_SYNC_FAIL;
+
+ return 0;
+}
+
static struct nix_mcast_grp_elem *rvu_nix_mcast_find_grp_elem(struct nix_mcast_grp *mcast_grp,
u32 mcast_grp_idx)
{
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v3 net-next] octeontx2-af: add new mbox to support sync cycle on rx path
2026-07-27 10:16 [PATCH v3 net-next] octeontx2-af: add new mbox to support sync cycle on rx path Ratheesh Kannoth
@ 2026-07-31 8:25 ` Simon Horman
0 siblings, 0 replies; 2+ messages in thread
From: Simon Horman @ 2026-07-31 8:25 UTC (permalink / raw)
To: Ratheesh Kannoth
Cc: linux-kernel, netdev, andrew+netdev, davem, edumazet, kuba,
pabeni, sgoutham, Satha Rao
On Mon, Jul 27, 2026 at 03:46:08PM +0530, Ratheesh Kannoth wrote:
> From: Satha Rao <skoteshwar@marvell.com>
>
> sync ensures that all packets that were in flight are flushed out to
> memory. This can be used to assist in the tearing down of an active RQ.
>
> To complete disabling RQs or disabling SMQ and its SQs, LF software
> send mbox to AF to complete RX_SW_SYNC.
>
> Both VF and PF and invoke this mbox.
>
> Signed-off-by: Satha Rao <skoteshwar@marvell.com>
> Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
>
> ---
> v2 -> v3: Addressed Simon comments
> https://lore.kernel.org/netdev/20260715041239.2052888-1-rkannoth@marvell.com/
> v1 -> v2: https://lore.kernel.org/netdev/20260715041239.2052888-1-rkannoth@marvell.com/
Reviewed-by: Simon Horman <horms@kernel.org>
I see that Sashiko still flags a number of issues.
However, and while I don't believe they should block progress of this patch,
I would appreciate it if you could check over them.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-07-31 8:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-27 10:16 [PATCH v3 net-next] octeontx2-af: add new mbox to support sync cycle on rx path Ratheesh Kannoth
2026-07-31 8:25 ` Simon Horman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox