From: Akhil Goyal <gakhil@marvell.com>
To: <dev@dpdk.org>
Cc: <thomas@monjalon.net>, <david.marchand@redhat.com>,
<hemant.agrawal@nxp.com>, <jerinj@marvell.com>,
<hkalra@marvell.com>, <stephen@networkplumber.org>,
<sachin.saxena@oss.nxp.com>, <ferruh.yigit@amd.com>,
Akhil Goyal <gakhil@marvell.com>
Subject: [PATCH v6 6/9] raw/cnxk_rvu_lf: support mailbox processing
Date: Mon, 28 Oct 2024 16:31:12 +0530 [thread overview]
Message-ID: <20241028110115.1070655-7-gakhil@marvell.com> (raw)
In-Reply-To: <20241028110115.1070655-1-gakhil@marvell.com>
Added API rte_pmd_rvu_lf_msg_process() to process
mailbox messages between rvu_lf devices.
Signed-off-by: Akhil Goyal <gakhil@marvell.com>
---
doc/guides/rawdevs/cnxk_rvu_lf.rst | 8 ++
doc/guides/rel_notes/release_24_11.rst | 5 +
drivers/common/cnxk/roc_dev.c | 118 ++++++++++++++++++-
drivers/common/cnxk/roc_mbox.h | 1 +
drivers/common/cnxk/roc_rvu_lf.c | 58 +++++++++
drivers/common/cnxk/roc_rvu_lf.h | 5 +
drivers/common/cnxk/roc_rvu_lf_priv.h | 5 +
drivers/common/cnxk/version.map | 2 +
drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c | 15 +++
drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h | 29 +++++
drivers/raw/cnxk_rvu_lf/version.map | 1 +
11 files changed, 241 insertions(+), 6 deletions(-)
diff --git a/doc/guides/rawdevs/cnxk_rvu_lf.rst b/doc/guides/rawdevs/cnxk_rvu_lf.rst
index 7f456ab61d..e425950d16 100644
--- a/doc/guides/rawdevs/cnxk_rvu_lf.rst
+++ b/doc/guides/rawdevs/cnxk_rvu_lf.rst
@@ -20,6 +20,7 @@ The RVU LF device implements following features in the rawdev API:
- Register/unregister interrupt handlers.
- Register/unregister mailbox callbacks for the other side to process mailboxes.
- Set mailbox message ID range to be used by the driver.
+- Process mailbox messages.
Limitations
-----------
@@ -65,3 +66,10 @@ in the callbacks.
Once a RVU LF raw device is probed, a range of message ids can be configured for
which mailboxes will be sent using the API ``rte_pmd_rvu_lf_msg_id_range_set()``.
+
+The out of tree driver can call ``rte_pmd_rvu_lf_msg_process()`` to send a request and
+receive corresponding response from the other side(PF/VF).
+It accepts an opaque pointer of a request and its size which can be defined by user
+and provides an opaque pointer for a response and its length.
+PF and VF out of tree driver can define its own request and response based on the message id
+of the mailbox.
diff --git a/doc/guides/rel_notes/release_24_11.rst b/doc/guides/rel_notes/release_24_11.rst
index 66f14af5b8..bf386a0f4a 100644
--- a/doc/guides/rel_notes/release_24_11.rst
+++ b/doc/guides/rel_notes/release_24_11.rst
@@ -251,6 +251,11 @@ New Features
Added ability for node to advertise and update multiple xstat counters,
that can be retrieved using ``rte_graph_cluster_stats_get``.
+* **Added Marvell cnxk RVU LF rawdev driver.**
+
+ Added a new raw device driver for Marvell cnxk based devices to allow
+ applications to communicate using mailboxes and notify for the interrupts.
+
Removed Items
-------------
diff --git a/drivers/common/cnxk/roc_dev.c b/drivers/common/cnxk/roc_dev.c
index 45f007325e..32409f2ef3 100644
--- a/drivers/common/cnxk/roc_dev.c
+++ b/drivers/common/cnxk/roc_dev.c
@@ -218,6 +218,51 @@ af_pf_wait_msg(struct dev *dev, uint16_t vf, int num_msg)
return req_hdr->num_msgs;
}
+static int
+process_rvu_lf_msgs(struct dev *dev, uint16_t vf, struct mbox_msghdr *msg, size_t size)
+{
+ uint16_t max_bits = sizeof(dev->active_vfs[0]) * 8;
+ uint8_t req[MBOX_MSG_REQ_SIZE_MAX];
+ struct msg_rsp *rsp;
+ uint16_t rsp_len;
+ void *resp;
+ int rc = 0;
+
+ /* Handle BPHY mailbox message in PF */
+ dev->active_vfs[vf / max_bits] |= BIT_ULL(vf % max_bits);
+
+ if ((size - sizeof(struct mbox_msghdr)) > MBOX_MSG_REQ_SIZE_MAX) {
+ plt_err("MBOX request size greater than %d", MBOX_MSG_REQ_SIZE_MAX);
+ return -1;
+ }
+ mbox_memcpy(req, (uint8_t *)msg + sizeof(struct mbox_msghdr),
+ size - sizeof(struct mbox_msghdr));
+
+ rc = dev->ops->msg_process_cb(dev_get_vf(msg->pcifunc), msg->id, req,
+ size - sizeof(struct mbox_msghdr), &resp, &rsp_len);
+ if (rc < 0) {
+ plt_err("Failed to process VF%d message", vf);
+ return -1;
+ }
+
+ rsp = (struct msg_rsp *)mbox_alloc_msg(&dev->mbox_vfpf, vf,
+ rsp_len + sizeof(struct mbox_msghdr));
+ if (!rsp) {
+ plt_err("Failed to alloc VF%d response message", vf);
+ return -1;
+ }
+
+ mbox_rsp_init(msg->id, rsp);
+
+ mbox_memcpy((uint8_t *)rsp + sizeof(struct mbox_msghdr), resp, rsp_len);
+ free(resp);
+ /* PF/VF function ID */
+ rsp->hdr.pcifunc = msg->pcifunc;
+ rsp->hdr.rc = 0;
+
+ return 0;
+}
+
/* PF receives mbox DOWN messages from VF and forwards to AF */
static int
vf_pf_process_msgs(struct dev *dev, uint16_t vf)
@@ -264,6 +309,9 @@ vf_pf_process_msgs(struct dev *dev, uint16_t vf)
/* PF/VF function ID */
rsp->hdr.pcifunc = msg->pcifunc;
rsp->hdr.rc = 0;
+ } else if (roc_rvu_lf_msg_id_range_check(dev->roc_rvu_lf, msg->id)) {
+ if (process_rvu_lf_msgs(dev, vf, msg, size) < 0)
+ continue;
} else {
struct mbox_msghdr *af_req;
/* Reserve AF/PF mbox message */
@@ -342,8 +390,13 @@ vf_pf_process_up_msgs(struct dev *dev, uint16_t vf)
dev_get_vf(msg->pcifunc));
break;
default:
- plt_err("Not handled UP msg 0x%x (%s) func:0x%x",
- msg->id, mbox_id2name(msg->id), msg->pcifunc);
+ if (roc_rvu_lf_msg_id_range_check(dev->roc_rvu_lf, msg->id))
+ plt_base_dbg("PF: Msg 0x%x fn:0x%x (pf:%d,vf:%d)",
+ msg->id, msg->pcifunc, dev_get_pf(msg->pcifunc),
+ dev_get_vf(msg->pcifunc));
+ else
+ plt_err("Not handled UP msg 0x%x (%s) func:0x%x",
+ msg->id, mbox_id2name(msg->id), msg->pcifunc);
}
offset = mbox->rx_start + msg->next_msgoff;
}
@@ -782,6 +835,50 @@ mbox_process_msgs_up(struct dev *dev, struct mbox_msghdr *req)
return -ENODEV;
}
+static int
+process_rvu_lf_msgs_up(struct dev *dev, struct mbox_msghdr *msg, size_t size)
+{
+ uint8_t req[MBOX_MSG_REQ_SIZE_MAX];
+ struct msg_rsp *rsp;
+ uint16_t rsp_len;
+ void *resp;
+ int rc = 0;
+
+ /* Check if valid, if not reply with an invalid msg */
+ if (msg->sig != MBOX_REQ_SIG)
+ return -EIO;
+
+ if ((size - sizeof(struct mbox_msghdr)) > MBOX_MSG_REQ_SIZE_MAX) {
+ plt_err("MBOX request size greater than %d", MBOX_MSG_REQ_SIZE_MAX);
+ return -ENOMEM;
+ }
+ mbox_memcpy(req, (uint8_t *)msg + sizeof(struct mbox_msghdr),
+ size - sizeof(struct mbox_msghdr));
+ rc = dev->ops->msg_process_cb(dev_get_vf(msg->pcifunc), msg->id, req,
+ size - sizeof(struct mbox_msghdr), &resp, &rsp_len);
+ if (rc < 0) {
+ plt_err("Failed to process VF%d message", dev->vf);
+ return rc;
+ }
+
+ rsp = (struct msg_rsp *)mbox_alloc_msg(&dev->mbox_up, 0,
+ rsp_len + sizeof(struct mbox_msghdr));
+ if (!rsp) {
+ plt_err("Failed to alloc VF%d response message", dev->vf);
+ return -ENOMEM;
+ }
+
+ mbox_rsp_init(msg->id, rsp);
+
+ mbox_memcpy((uint8_t *)rsp + sizeof(struct mbox_msghdr), resp, rsp_len);
+ free(resp);
+ /* PF/VF function ID */
+ rsp->hdr.pcifunc = msg->pcifunc;
+ rsp->hdr.rc = 0;
+
+ return rc;
+}
+
/* Received up messages from AF (PF context) / PF (in context) */
static void
process_msgs_up(struct dev *dev, struct mbox *mbox)
@@ -790,6 +887,7 @@ process_msgs_up(struct dev *dev, struct mbox *mbox)
struct mbox_hdr *req_hdr;
struct mbox_msghdr *msg;
int i, err, offset;
+ size_t size;
req_hdr = (struct mbox_hdr *)((uintptr_t)mdev->mbase + mbox->rx_start);
if (req_hdr->num_msgs == 0)
@@ -802,10 +900,17 @@ process_msgs_up(struct dev *dev, struct mbox *mbox)
plt_base_dbg("Message 0x%x (%s) pf:%d/vf:%d", msg->id,
mbox_id2name(msg->id), dev_get_pf(msg->pcifunc),
dev_get_vf(msg->pcifunc));
- err = mbox_process_msgs_up(dev, msg);
- if (err)
- plt_err("Error %d handling 0x%x (%s)", err, msg->id,
- mbox_id2name(msg->id));
+ if (roc_rvu_lf_msg_id_range_check(dev->roc_rvu_lf, msg->id)) {
+ size = mbox->rx_start + msg->next_msgoff - offset;
+ err = process_rvu_lf_msgs_up(dev, msg, size);
+ if (err)
+ plt_err("Error %d handling 0x%x RVU_LF up msg", err, msg->id);
+ } else {
+ err = mbox_process_msgs_up(dev, msg);
+ if (err)
+ plt_err("Error %d handling 0x%x (%s)", err, msg->id,
+ mbox_id2name(msg->id));
+ }
offset = mbox->rx_start + msg->next_msgoff;
}
/* Send mbox responses */
@@ -1294,6 +1399,7 @@ dev_vf_hwcap_update(struct plt_pci_device *pci_dev, struct dev *dev)
case PCI_DEVID_CNXK_RVU_VF:
case PCI_DEVID_CNXK_RVU_SDP_VF:
case PCI_DEVID_CNXK_RVU_NIX_INL_VF:
+ case PCI_DEVID_CNXK_RVU_BPHY_VF:
case PCI_DEVID_CNXK_RVU_ESWITCH_VF:
dev->hwcap |= DEV_HWCAP_F_VF;
break;
diff --git a/drivers/common/cnxk/roc_mbox.h b/drivers/common/cnxk/roc_mbox.h
index 7d8145a4b3..e7a916d61c 100644
--- a/drivers/common/cnxk/roc_mbox.h
+++ b/drivers/common/cnxk/roc_mbox.h
@@ -55,6 +55,7 @@ struct mbox_msghdr {
#define MBOX_MSG_INVALID 0xFFFE
#define MBOX_MSG_MAX 0xFFFF
#define MBOX_MSG_GENERIC_MAX_ID 0x1FF
+#define MBOX_MSG_REQ_SIZE_MAX (16 * 1024)
#define MBOX_MESSAGES \
/* Generic mbox IDs (range 0x000 - 0x1FF) */ \
diff --git a/drivers/common/cnxk/roc_rvu_lf.c b/drivers/common/cnxk/roc_rvu_lf.c
index 1026ccc125..471dfa7a46 100644
--- a/drivers/common/cnxk/roc_rvu_lf.c
+++ b/drivers/common/cnxk/roc_rvu_lf.c
@@ -62,6 +62,15 @@ roc_rvu_lf_dev_fini(struct roc_rvu_lf *roc_rvu_lf)
return dev_fini(&rvu->dev, rvu->pci_dev);
}
+static uint16_t
+roc_rvu_lf_pf_func_get(struct roc_rvu_lf *roc_rvu_lf)
+{
+ struct rvu_lf *rvu = roc_rvu_lf_to_rvu_priv(roc_rvu_lf);
+ struct dev *dev = &rvu->dev;
+
+ return dev->pf_func;
+}
+
int
roc_rvu_lf_msg_id_range_set(struct roc_rvu_lf *roc_rvu_lf, uint16_t from, uint16_t to)
{
@@ -92,6 +101,55 @@ roc_rvu_lf_msg_id_range_check(struct roc_rvu_lf *roc_rvu_lf, uint16_t msg_id)
return 0;
}
+int
+roc_rvu_lf_msg_process(struct roc_rvu_lf *roc_rvu_lf, uint16_t vf, uint16_t msg_id,
+ void *req_data, uint16_t req_len, void *rsp_data, uint16_t rsp_len)
+{
+ struct rvu_lf *rvu = roc_rvu_lf_to_rvu_priv(roc_rvu_lf);
+ struct mbox *mbox;
+ struct rvu_lf_msg *req;
+ struct rvu_lf_msg *rsp;
+ int rc = -ENOSPC;
+ int devid = 0;
+
+ if (rvu->dev.vf == -1 && roc_rvu_lf_msg_id_range_check(roc_rvu_lf, msg_id)) {
+ /* This is PF context */
+ if (vf >= rvu->dev.maxvf)
+ return -EINVAL;
+ devid = vf;
+ mbox = mbox_get(&rvu->dev.mbox_vfpf_up);
+ } else {
+ /* This is VF context */
+ devid = 0; /* VF send all message to PF */
+ mbox = mbox_get(rvu->dev.mbox);
+ }
+ req = (struct rvu_lf_msg *)mbox_alloc_msg_rsp(mbox, devid,
+ req_len + sizeof(struct rvu_lf_msg),
+ rsp_len + sizeof(struct rvu_lf_msg));
+ if (!req)
+ goto fail;
+ mbox_memcpy(req->data, req_data, req_len);
+ req->hdr.sig = MBOX_REQ_SIG;
+ req->hdr.id = msg_id;
+ req->hdr.pcifunc = roc_rvu_lf_pf_func_get(roc_rvu_lf);
+
+ if (rvu->dev.vf == -1) {
+ mbox_msg_send_up(mbox, devid);
+ rc = mbox_get_rsp(mbox, devid, (void *)&rsp);
+ if (rc)
+ goto fail;
+ } else {
+ rc = mbox_process_msg(mbox, (void *)&rsp);
+ if (rc)
+ goto fail;
+ }
+ if (rsp_len && rsp_data != NULL)
+ mbox_memcpy(rsp_data, rsp->data, rsp_len);
+fail:
+ mbox_put(mbox);
+ return rc;
+}
+
int
roc_rvu_lf_irq_register(struct roc_rvu_lf *roc_rvu_lf, unsigned int irq,
roc_rvu_lf_intr_cb_fn cb, void *data)
diff --git a/drivers/common/cnxk/roc_rvu_lf.h b/drivers/common/cnxk/roc_rvu_lf.h
index 7243e170b9..6b4819666a 100644
--- a/drivers/common/cnxk/roc_rvu_lf.h
+++ b/drivers/common/cnxk/roc_rvu_lf.h
@@ -21,6 +21,11 @@ TAILQ_HEAD(roc_rvu_lf_head, roc_rvu_lf);
int __roc_api roc_rvu_lf_dev_init(struct roc_rvu_lf *roc_rvu_lf);
int __roc_api roc_rvu_lf_dev_fini(struct roc_rvu_lf *roc_rvu_lf);
+int __roc_api roc_rvu_lf_msg_process(struct roc_rvu_lf *roc_rvu_lf,
+ uint16_t vf, uint16_t msg_id,
+ void *req_data, uint16_t req_len,
+ void *rsp_data, uint16_t rsp_len);
+
int __roc_api roc_rvu_lf_msg_id_range_set(struct roc_rvu_lf *roc_rvu_lf,
uint16_t from, uint16_t to);
bool __roc_api roc_rvu_lf_msg_id_range_check(struct roc_rvu_lf *roc_rvu_lf, uint16_t msg_id);
diff --git a/drivers/common/cnxk/roc_rvu_lf_priv.h b/drivers/common/cnxk/roc_rvu_lf_priv.h
index 8feff82961..57bb713b21 100644
--- a/drivers/common/cnxk/roc_rvu_lf_priv.h
+++ b/drivers/common/cnxk/roc_rvu_lf_priv.h
@@ -17,6 +17,11 @@ struct rvu_lf {
uint16_t msg_id_to;
};
+struct rvu_lf_msg {
+ struct mbox_msghdr hdr;
+ uint8_t data[];
+};
+
static inline struct rvu_lf *
roc_rvu_lf_to_rvu_priv(struct roc_rvu_lf *roc_rvu_lf)
{
diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map
index c2c67bc721..a8cb0755ab 100644
--- a/drivers/common/cnxk/version.map
+++ b/drivers/common/cnxk/version.map
@@ -558,5 +558,7 @@ INTERNAL {
roc_rvu_lf_msg_handler_unregister;
roc_rvu_lf_msg_id_range_check;
roc_rvu_lf_msg_id_range_set;
+ roc_rvu_lf_msg_process;
+
local: *;
};
diff --git a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c
index 82439cf9f8..17917532cd 100644
--- a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c
+++ b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c
@@ -30,6 +30,21 @@ rte_pmd_rvu_lf_msg_id_range_set(uint8_t dev_id, uint16_t from, uint16_t to)
return roc_rvu_lf_msg_id_range_set(roc_rvu_lf, from, to);
}
+int
+rte_pmd_rvu_lf_msg_process(uint8_t dev_id, uint16_t vf, uint16_t msg_id,
+ void *req, uint16_t req_len, void *rsp, uint16_t rsp_len)
+{
+ struct rte_rawdev *rawdev = rte_rawdev_pmd_get_dev(dev_id);
+ struct roc_rvu_lf *roc_rvu_lf;
+
+ if (rawdev == NULL)
+ return -EINVAL;
+
+ roc_rvu_lf = (struct roc_rvu_lf *)rawdev->dev_private;
+
+ return roc_rvu_lf_msg_process(roc_rvu_lf, vf, msg_id, req, req_len, rsp, rsp_len);
+}
+
int
rte_pmd_rvu_lf_msg_handler_register(uint8_t dev_id, rte_pmd_rvu_lf_msg_handler_cb_fn cb)
{
diff --git a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h
index 567778dcc5..1d0308d6f1 100644
--- a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h
+++ b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h
@@ -152,6 +152,35 @@ int rte_pmd_rvu_lf_msg_handler_unregister(uint8_t dev_id);
__rte_internal
int rte_pmd_rvu_lf_msg_id_range_set(uint8_t dev_id, uint16_t from, uint16_t to);
+/**
+ * Process a RVU mailbox message.
+ *
+ * Message request and response to be sent/received,
+ * need to be allocated/deallocated by application
+ * before/after processing the message.
+ *
+ * @param dev_id
+ * device id of RVU LF device
+ * @param vf
+ * VF number(0 to N) in case of PF->VF message. 0 is valid as VF0.
+ * (For VF->PF message, this field is ignored)
+ * @param msg_id
+ * message id
+ * @param req
+ * pointer to message request data to be sent
+ * @param req_len
+ * length of request data
+ * @param rsp
+ * pointer to message response expected to be received, NULL if no response
+ * @param rsp_len
+ * length of message response expected, 0 if no response
+ *
+ * @return 0 on success, negative value otherwise
+ */
+__rte_internal
+int rte_pmd_rvu_lf_msg_process(uint8_t dev_id, uint16_t vf, uint16_t msg_id,
+ void *req, uint16_t req_len, void *rsp, uint16_t rsp_len);
+
#ifdef __cplusplus
}
#endif
diff --git a/drivers/raw/cnxk_rvu_lf/version.map b/drivers/raw/cnxk_rvu_lf/version.map
index d8fb8eba26..7896a8f777 100644
--- a/drivers/raw/cnxk_rvu_lf/version.map
+++ b/drivers/raw/cnxk_rvu_lf/version.map
@@ -6,6 +6,7 @@ INTERNAL {
rte_pmd_rvu_lf_msg_handler_register;
rte_pmd_rvu_lf_msg_handler_unregister;
rte_pmd_rvu_lf_msg_id_range_set;
+ rte_pmd_rvu_lf_msg_process;
rte_pmd_rvu_lf_npa_pf_func_get;
rte_pmd_rvu_lf_sso_pf_func_get;
--
2.25.1
next prev parent reply other threads:[~2024-10-28 11:02 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-07 19:33 [PATCH 0/9] drivers/raw: introduce cnxk rvu lf device driver Akhil Goyal
2024-09-07 19:33 ` [PATCH 1/9] rawdev: add API to get device from index Akhil Goyal
2024-09-23 15:23 ` Jerin Jacob
2024-10-08 7:40 ` [PATCH v2] " Akhil Goyal
2024-10-08 11:59 ` David Marchand
2024-10-08 12:00 ` [EXTERNAL] " Akhil Goyal
2024-10-09 21:13 ` Akhil Goyal
2024-10-21 10:48 ` Akhil Goyal
2024-10-09 6:11 ` Hemant Agrawal
2024-10-22 19:12 ` David Marchand
2024-09-07 19:33 ` [PATCH 2/9] drivers/raw: introduce cnxk rvu lf device driver Akhil Goyal
2024-09-23 15:28 ` Jerin Jacob
2024-10-08 10:54 ` [PATCH v2 0/9] " Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 1/9] " Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 2/9] raw/cnxk_rvu_lf: add PMD API to get npa/sso pffunc Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 3/9] raw/cnxk_rvu_lf: add PMD API to get BAR addresses Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 4/9] raw/cnxk_rvu_lf: register/unregister interrupt handler Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 5/9] raw/cnxk_rvu_lf: register/unregister msg handler Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 6/9] raw/cnxk_rvu_lf: set message ID range Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 7/9] raw/cnxk_rvu_lf: process mailbox message Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 8/9] raw/cnxk_rvu_lf: add selftest Akhil Goyal
2024-10-08 10:54 ` [PATCH v2 9/9] raw/cnxk_rvu_lf: add PMD API to get device pffunc Akhil Goyal
2024-10-08 11:52 ` [PATCH v2 0/9] drivers/raw: introduce cnxk rvu lf device driver David Marchand
2024-10-08 12:10 ` [EXTERNAL] " Akhil Goyal
2024-10-08 18:49 ` [PATCH v3 " Akhil Goyal
2024-10-08 18:49 ` [PATCH v3 1/9] " Akhil Goyal
2024-10-08 20:44 ` Stephen Hemminger
2024-10-09 18:09 ` Stephen Hemminger
2024-10-09 18:14 ` [EXTERNAL] " Akhil Goyal
2024-10-23 14:01 ` David Marchand
2024-10-08 18:49 ` [PATCH v3 2/9] raw/cnxk_rvu_lf: add PMD API to get npa/sso pffunc Akhil Goyal
2024-10-23 14:13 ` David Marchand
2024-10-08 18:49 ` [PATCH v3 3/9] raw/cnxk_rvu_lf: add PMD API to get BAR addresses Akhil Goyal
2024-10-21 21:30 ` Thomas Monjalon
2024-10-22 2:46 ` Jerin Jacob
2024-10-22 6:05 ` [EXTERNAL] " Akhil Goyal
2024-10-22 9:27 ` Thomas Monjalon
2024-10-22 10:08 ` David Marchand
2024-10-22 12:06 ` Akhil Goyal
2024-10-23 16:00 ` Thomas Monjalon
2024-10-23 19:14 ` Akhil Goyal
2024-10-23 19:29 ` Thomas Monjalon
2024-10-24 13:03 ` Akhil Goyal
2024-10-22 15:30 ` Stephen Hemminger
2024-10-22 17:06 ` Jerin Jacob
2024-10-08 18:49 ` [PATCH v3 4/9] raw/cnxk_rvu_lf: register/unregister interrupt handler Akhil Goyal
2024-10-08 18:49 ` [PATCH v3 5/9] raw/cnxk_rvu_lf: register/unregister msg handler Akhil Goyal
2024-10-08 18:49 ` [PATCH v3 6/9] raw/cnxk_rvu_lf: set message ID range Akhil Goyal
2024-10-08 18:49 ` [PATCH v3 7/9] raw/cnxk_rvu_lf: process mailbox message Akhil Goyal
2024-10-08 18:49 ` [PATCH v3 8/9] raw/cnxk_rvu_lf: add selftest Akhil Goyal
2024-10-23 14:16 ` David Marchand
2024-10-08 18:49 ` [PATCH v3 9/9] raw/cnxk_rvu_lf: add PMD API to get device pffunc Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 0/9] drivers/raw: introduce cnxk rvu lf device driver Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 1/9] " Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 2/9] raw/cnxk_rvu_lf: add API to get NPA/SSO pffunc Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 3/9] raw/cnxk_rvu_lf: register/unregister interrupt handler Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 4/9] raw/cnxk_rvu_lf: register/unregister msg handler Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 5/9] raw/cnxk_rvu_lf: set message ID range Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 6/9] raw/cnxk_rvu_lf: process mailbox message Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 7/9] raw/cnxk_rvu_lf: add API to get device pffunc Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 8/9] raw/cnxk_rvu_lf: add API to get BAR addresses Akhil Goyal
2024-10-24 13:01 ` [PATCH v4 9/9] raw/cnxk_rvu_lf: add selftest Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 0/9] drivers/raw: introduce cnxk rvu lf device driver Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 1/9] " Akhil Goyal
2024-10-24 15:59 ` Jerin Jacob
2024-10-24 13:17 ` [PATCH v5 2/9] raw/cnxk_rvu_lf: add API to get NPA/SSO pffunc Akhil Goyal
2024-10-25 6:52 ` Jerin Jacob
2024-10-25 15:38 ` Stephen Hemminger
2024-10-25 19:48 ` [EXTERNAL] " Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 3/9] raw/cnxk_rvu_lf: register/unregister interrupt handler Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 4/9] raw/cnxk_rvu_lf: register/unregister msg handler Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 5/9] raw/cnxk_rvu_lf: set message ID range Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 6/9] raw/cnxk_rvu_lf: process mailbox message Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 7/9] raw/cnxk_rvu_lf: add API to get device pffunc Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 8/9] raw/cnxk_rvu_lf: add API to get BAR addresses Akhil Goyal
2024-10-24 13:17 ` [PATCH v5 9/9] raw/cnxk_rvu_lf: add selftest Akhil Goyal
2024-10-24 16:26 ` Stephen Hemminger
2024-10-28 11:01 ` [PATCH v6 0/9] drivers/raw: introduce cnxk rvu lf device driver Akhil Goyal
2024-10-28 11:01 ` [PATCH v6 1/9] drivers/raw: introduce cnxk RVU LF " Akhil Goyal
2024-10-28 11:01 ` [PATCH v6 2/9] raw/cnxk_rvu_lf: support NPA/SSO pffunc get Akhil Goyal
2024-10-28 11:01 ` [PATCH v6 3/9] raw/cnxk_rvu_lf: support interrupt callback registration Akhil Goyal
2024-10-28 11:01 ` [PATCH v6 4/9] raw/cnxk_rvu_lf: support msg handler registration Akhil Goyal
2024-10-28 11:01 ` [PATCH v6 5/9] raw/cnxk_rvu_lf: support to set message ID range Akhil Goyal
2024-10-28 11:01 ` Akhil Goyal [this message]
2024-10-28 11:01 ` [PATCH v6 7/9] raw/cnxk_rvu_lf: support device pffunc get Akhil Goyal
2024-10-28 11:01 ` [PATCH v6 8/9] raw/cnxk_rvu_lf: support getting BAR addresses Akhil Goyal
2024-10-28 11:01 ` [PATCH v6 9/9] raw/cnxk_rvu_lf: add selftest Akhil Goyal
2024-09-07 19:33 ` [PATCH 3/9] raw/cnxk_rvu_lf: add PMD API to get npa/sso pffunc Akhil Goyal
2024-09-07 19:33 ` [PATCH 4/9] raw/cnxk_rvu_lf: add PMD API to get BAR addresses Akhil Goyal
2024-09-07 19:33 ` [PATCH 5/9] raw/cnxk_rvu_lf: register/unregister interrupt handler Akhil Goyal
2024-09-07 19:33 ` [PATCH 6/9] raw/cnxk_rvu_lf: register/unregister msg handler Akhil Goyal
2024-09-07 19:33 ` [PATCH 7/9] raw/cnxk_rvu_lf: set message ID range Akhil Goyal
2024-09-07 19:33 ` [PATCH 8/9] raw/cnxk_rvu_lf: process mailbox message Akhil Goyal
2024-09-07 19:33 ` [PATCH 9/9] raw/cnxk_rvu_lf: add selftest Akhil Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241028110115.1070655-7-gakhil@marvell.com \
--to=gakhil@marvell.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=hemant.agrawal@nxp.com \
--cc=hkalra@marvell.com \
--cc=jerinj@marvell.com \
--cc=sachin.saxena@oss.nxp.com \
--cc=stephen@networkplumber.org \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).