[RESEND,2/2] raw/octeontx2_dma: Add support in case of multiple DPI blocks

Message ID 20201006053021.134706-2-radhac@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [RESEND,1/2] raw/octeontx2_dma: Assign pem_id as lport for non-internal DMA |

Checks

Context Check Description
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-testing success Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/checkpatch success coding style OK

Commit Message

Radha Chintakuntla Oct. 6, 2020, 5:30 a.m. UTC
  This patch adds support for multiple DPI blocks by removing the fixed
macro that was writing to same sysfs entry for different DPI blocks.

Signed-off-by: Radha Mohan Chintakuntla <radhac@marvell.com>
Reviewed-by: Satananda Burla <sburla@marvell.com>
---
 drivers/raw/octeontx2_dma/otx2_dpi_msg.c    | 18 +++++++++---------
 drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c |  4 ++--
 drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h |  4 ++--
 3 files changed, 13 insertions(+), 13 deletions(-)
  

Comments

Satha Koteswara Rao Kottidi Oct. 7, 2020, 4:43 p.m. UTC | #1
-----Original Message-----
From: Radha Mohan Chintakuntla <radhac@marvell.com> 
Sent: Tuesday, October 6, 2020 11:00 AM
To: dev@dpdk.org; Satha Koteswara Rao Kottidi <skoteshwar@marvell.com>
Cc: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Radha Chintakuntla <radhac@marvell.com>; Satananda Burla <sburla@marvell.com>
Subject: [PATCH RESEND 2/2] raw/octeontx2_dma: Add support in case of multiple DPI blocks

This patch adds support for multiple DPI blocks by removing the fixed macro that was writing to same sysfs entry for different DPI blocks.

Signed-off-by: Radha Mohan Chintakuntla <radhac@marvell.com>
Reviewed-by: Satananda Burla <sburla@marvell.com>
---
 drivers/raw/octeontx2_dma/otx2_dpi_msg.c    | 18 +++++++++---------
 drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c |  4 ++--  drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h |  4 ++--
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/raw/octeontx2_dma/otx2_dpi_msg.c b/drivers/raw/octeontx2_dma/otx2_dpi_msg.c
index aa361cb8a..655de216a 100644
--- a/drivers/raw/octeontx2_dma/otx2_dpi_msg.c
+++ b/drivers/raw/octeontx2_dma/otx2_dpi_msg.c
@@ -39,14 +39,14 @@ union dpi_mbox_message_u {  };
 
 static inline int
-send_msg_to_pf(const char *value, int size)
+send_msg_to_pf(struct rte_pci_addr *pci, const char *value, int size)
 {
 	char buff[255] = { 0 };
 	int res, fd;
 
 	res = snprintf(buff, sizeof(buff), "%s/" PCI_PRI_FMT "/%s",
-		       rte_pci_get_sysfs_path(), DPI_PF_DBDF_DOMAIN,
-		       DPI_PF_DBDF_BUS, DPI_PF_DBDF_DEVICE & 0x7,
+		       rte_pci_get_sysfs_path(), pci->domain,
+		       pci->bus, DPI_PF_DBDF_DEVICE & 0x7,
 		       DPI_PF_DBDF_FUNCTION & 0x7, DPI_PF_MBOX_SYSFS_ENTRY);
 	if ((res < 0) || ((size_t)res > sizeof(buff)))
 		return -ERANGE;
@@ -63,20 +63,20 @@ send_msg_to_pf(const char *value, int size)  }
 
 int
-otx2_dpi_queue_open(uint16_t vf_id, uint32_t size, uint32_t gaura)
+otx2_dpi_queue_open(struct dpi_vf_s *dpivf, uint32_t size, uint32_t 
+gaura)
 {
 	union dpi_mbox_message_u mbox_msg;
 	int ret = 0;
 
 	/* DPI PF driver expects vfid starts from index 0 */
-	mbox_msg.s.vfid = vf_id;
+	mbox_msg.s.vfid = dpivf->vf_id;
 	mbox_msg.s.cmd = DPI_QUEUE_OPEN;
 	mbox_msg.s.csize = size;
 	mbox_msg.s.aura = gaura;
 	mbox_msg.s.sso_pf_func = otx2_sso_pf_func_get();
 	mbox_msg.s.npa_pf_func = otx2_npa_pf_func_get();
 
-	ret = send_msg_to_pf((const char *)&mbox_msg,
+	ret = send_msg_to_pf(&dpivf->dev->addr, (const char *)&mbox_msg,
 				sizeof(mbox_msg));
 	if (ret < 0)
 		otx2_dpi_dbg("Failed to send mbox message to dpi pf"); @@ -85,16 +85,16 @@ otx2_dpi_queue_open(uint16_t vf_id, uint32_t size, uint32_t gaura)  }
 
 int
-otx2_dpi_queue_close(uint16_t vf_id)
+otx2_dpi_queue_close(struct dpi_vf_s *dpivf)
 {
 	union dpi_mbox_message_u mbox_msg;
 	int ret = 0;
 
 	/* DPI PF driver expects vfid starts from index 0 */
-	mbox_msg.s.vfid = vf_id;
+	mbox_msg.s.vfid = dpivf->vf_id;
 	mbox_msg.s.cmd = DPI_QUEUE_CLOSE;
 
-	ret = send_msg_to_pf((const char *)&mbox_msg,
+	ret = send_msg_to_pf(&dpivf->dev->addr, (const char *)&mbox_msg,
 				sizeof(mbox_msg));
 	if (ret < 0)
 		otx2_dpi_dbg("Failed to send mbox message to dpi pf"); diff --git a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c
index a1b94ce1d..efdba2779 100644
--- a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c
+++ b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c
@@ -60,7 +60,7 @@ dma_queue_finish(struct dpi_vf_s *dpivf)
 		reg = otx2_read64(dpivf->vf_bar0 + DPI_VDMA_SADDR);
 	}
 
-	if (otx2_dpi_queue_close(dpivf->vf_id) < 0)
+	if (otx2_dpi_queue_close(dpivf) < 0)
 		return -EACCES;
 
 	rte_mempool_put(dpivf->chunk_pool, dpivf->base_ptr); @@ -323,7 +323,7 @@ otx2_dpi_rawdev_configure(const struct rte_rawdev *dev, rte_rawdev_obj_t config,
 	otx2_write64(0, dpivf->vf_bar0 + DPI_VDMA_REQQ_CTL);
 	otx2_write64(((uint64_t)buf >> 7) << 7,
 		     dpivf->vf_bar0 + DPI_VDMA_SADDR);
-	if (otx2_dpi_queue_open(dpivf->vf_id, DPI_CHUNK_SIZE, gaura) < 0) {
+	if (otx2_dpi_queue_open(dpivf, DPI_CHUNK_SIZE, gaura) < 0) {
 		otx2_err("Unable to open DPI VF %d", dpivf->vf_id);
 		rte_mempool_put(conf->chunk_pool, buf);
 		return -EACCES;
diff --git a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h
index 81740e84b..2bc9e3da3 100644
--- a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h
+++ b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h
@@ -190,8 +190,8 @@ union dpi_dma_instr_hdr_u {
 	} s;
 };
 
-int otx2_dpi_queue_open(uint16_t vf_id, uint32_t size, uint32_t gaura); -int otx2_dpi_queue_close(uint16_t vf_id);
+int otx2_dpi_queue_open(struct dpi_vf_s *dpivf, uint32_t size, uint32_t 
+gaura); int otx2_dpi_queue_close(struct dpi_vf_s *dpivf);
 int test_otx2_dma_rawdev(uint16_t val);
 
 #endif /* _DPI_RAWDEV_H_ */
--
2.24.1

Acked-by: Satha Rao <skoteshwar@marvell.com>
  

Patch

diff --git a/drivers/raw/octeontx2_dma/otx2_dpi_msg.c b/drivers/raw/octeontx2_dma/otx2_dpi_msg.c
index aa361cb8a..655de216a 100644
--- a/drivers/raw/octeontx2_dma/otx2_dpi_msg.c
+++ b/drivers/raw/octeontx2_dma/otx2_dpi_msg.c
@@ -39,14 +39,14 @@  union dpi_mbox_message_u {
 };
 
 static inline int
-send_msg_to_pf(const char *value, int size)
+send_msg_to_pf(struct rte_pci_addr *pci, const char *value, int size)
 {
 	char buff[255] = { 0 };
 	int res, fd;
 
 	res = snprintf(buff, sizeof(buff), "%s/" PCI_PRI_FMT "/%s",
-		       rte_pci_get_sysfs_path(), DPI_PF_DBDF_DOMAIN,
-		       DPI_PF_DBDF_BUS, DPI_PF_DBDF_DEVICE & 0x7,
+		       rte_pci_get_sysfs_path(), pci->domain,
+		       pci->bus, DPI_PF_DBDF_DEVICE & 0x7,
 		       DPI_PF_DBDF_FUNCTION & 0x7, DPI_PF_MBOX_SYSFS_ENTRY);
 	if ((res < 0) || ((size_t)res > sizeof(buff)))
 		return -ERANGE;
@@ -63,20 +63,20 @@  send_msg_to_pf(const char *value, int size)
 }
 
 int
-otx2_dpi_queue_open(uint16_t vf_id, uint32_t size, uint32_t gaura)
+otx2_dpi_queue_open(struct dpi_vf_s *dpivf, uint32_t size, uint32_t gaura)
 {
 	union dpi_mbox_message_u mbox_msg;
 	int ret = 0;
 
 	/* DPI PF driver expects vfid starts from index 0 */
-	mbox_msg.s.vfid = vf_id;
+	mbox_msg.s.vfid = dpivf->vf_id;
 	mbox_msg.s.cmd = DPI_QUEUE_OPEN;
 	mbox_msg.s.csize = size;
 	mbox_msg.s.aura = gaura;
 	mbox_msg.s.sso_pf_func = otx2_sso_pf_func_get();
 	mbox_msg.s.npa_pf_func = otx2_npa_pf_func_get();
 
-	ret = send_msg_to_pf((const char *)&mbox_msg,
+	ret = send_msg_to_pf(&dpivf->dev->addr, (const char *)&mbox_msg,
 				sizeof(mbox_msg));
 	if (ret < 0)
 		otx2_dpi_dbg("Failed to send mbox message to dpi pf");
@@ -85,16 +85,16 @@  otx2_dpi_queue_open(uint16_t vf_id, uint32_t size, uint32_t gaura)
 }
 
 int
-otx2_dpi_queue_close(uint16_t vf_id)
+otx2_dpi_queue_close(struct dpi_vf_s *dpivf)
 {
 	union dpi_mbox_message_u mbox_msg;
 	int ret = 0;
 
 	/* DPI PF driver expects vfid starts from index 0 */
-	mbox_msg.s.vfid = vf_id;
+	mbox_msg.s.vfid = dpivf->vf_id;
 	mbox_msg.s.cmd = DPI_QUEUE_CLOSE;
 
-	ret = send_msg_to_pf((const char *)&mbox_msg,
+	ret = send_msg_to_pf(&dpivf->dev->addr, (const char *)&mbox_msg,
 				sizeof(mbox_msg));
 	if (ret < 0)
 		otx2_dpi_dbg("Failed to send mbox message to dpi pf");
diff --git a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c
index a1b94ce1d..efdba2779 100644
--- a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c
+++ b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c
@@ -60,7 +60,7 @@  dma_queue_finish(struct dpi_vf_s *dpivf)
 		reg = otx2_read64(dpivf->vf_bar0 + DPI_VDMA_SADDR);
 	}
 
-	if (otx2_dpi_queue_close(dpivf->vf_id) < 0)
+	if (otx2_dpi_queue_close(dpivf) < 0)
 		return -EACCES;
 
 	rte_mempool_put(dpivf->chunk_pool, dpivf->base_ptr);
@@ -323,7 +323,7 @@  otx2_dpi_rawdev_configure(const struct rte_rawdev *dev, rte_rawdev_obj_t config,
 	otx2_write64(0, dpivf->vf_bar0 + DPI_VDMA_REQQ_CTL);
 	otx2_write64(((uint64_t)buf >> 7) << 7,
 		     dpivf->vf_bar0 + DPI_VDMA_SADDR);
-	if (otx2_dpi_queue_open(dpivf->vf_id, DPI_CHUNK_SIZE, gaura) < 0) {
+	if (otx2_dpi_queue_open(dpivf, DPI_CHUNK_SIZE, gaura) < 0) {
 		otx2_err("Unable to open DPI VF %d", dpivf->vf_id);
 		rte_mempool_put(conf->chunk_pool, buf);
 		return -EACCES;
diff --git a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h
index 81740e84b..2bc9e3da3 100644
--- a/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h
+++ b/drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h
@@ -190,8 +190,8 @@  union dpi_dma_instr_hdr_u {
 	} s;
 };
 
-int otx2_dpi_queue_open(uint16_t vf_id, uint32_t size, uint32_t gaura);
-int otx2_dpi_queue_close(uint16_t vf_id);
+int otx2_dpi_queue_open(struct dpi_vf_s *dpivf, uint32_t size, uint32_t gaura);
+int otx2_dpi_queue_close(struct dpi_vf_s *dpivf);
 int test_otx2_dma_rawdev(uint16_t val);
 
 #endif /* _DPI_RAWDEV_H_ */