[v2,4/5] vdpa/sfc: enable support for multi-queue

Message ID 20220714084451.38375-5-asaini@xilinx.com (mailing list archive)
State Superseded, archived
Delegated to: Andrew Rybchenko
Headers
Series Add support for live migration and cleanup MCDI headers |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

abhimanyu.saini@xilinx.com July 14, 2022, 8:44 a.m. UTC
  From: Abhimanyu Saini <absaini@amd.com>

Increase the number to default RX/TX queue pairs to 8,
and add MQ feature flag to vDPA protocol features.

Signed-off-by: Abhimanyu Saini <absaini@amd.com>
---
v2:
* Fix checkpatch warnings
* Add a cover letter

 drivers/vdpa/sfc/sfc_vdpa_hw.c  |  2 ++
 drivers/vdpa/sfc/sfc_vdpa_ops.c | 10 ++++++----
 drivers/vdpa/sfc/sfc_vdpa_ops.h |  2 +-
 3 files changed, 9 insertions(+), 5 deletions(-)
  

Patch

diff --git a/drivers/vdpa/sfc/sfc_vdpa_hw.c b/drivers/vdpa/sfc/sfc_vdpa_hw.c
index a7018b1ffe..edb7e35c2c 100644
--- a/drivers/vdpa/sfc/sfc_vdpa_hw.c
+++ b/drivers/vdpa/sfc/sfc_vdpa_hw.c
@@ -286,6 +286,8 @@  sfc_vdpa_estimate_resource_limits(struct sfc_vdpa_adapter *sva)
 	SFC_VDPA_ASSERT(max_queue_cnt > 0);
 
 	sva->max_queue_count = max_queue_cnt;
+	sfc_vdpa_log_init(sva, "NIC init done with %u pair(s) of queues",
+			  max_queue_cnt);
 
 	return 0;
 
diff --git a/drivers/vdpa/sfc/sfc_vdpa_ops.c b/drivers/vdpa/sfc/sfc_vdpa_ops.c
index f4c4f82605..6401d4e16f 100644
--- a/drivers/vdpa/sfc/sfc_vdpa_ops.c
+++ b/drivers/vdpa/sfc/sfc_vdpa_ops.c
@@ -24,14 +24,16 @@ 
 		 (1ULL << VHOST_USER_PROTOCOL_F_SLAVE_REQ) | \
 		 (1ULL << VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) | \
 		 (1ULL << VHOST_USER_PROTOCOL_F_HOST_NOTIFIER) | \
-		 (1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD))
+		 (1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD) | \
+		 (1ULL << VHOST_USER_PROTOCOL_F_MQ))
 
 /*
  * Set of features which are enabled by default.
  * Protocol feature bit is needed to enable notification notifier ctrl.
  */
 #define SFC_VDPA_DEFAULT_FEATURES \
-		(1ULL << VHOST_USER_F_PROTOCOL_FEATURES)
+		((1ULL << VHOST_USER_F_PROTOCOL_FEATURES) | \
+		 (1ULL << VIRTIO_NET_F_MQ))
 
 #define SFC_VDPA_MSIX_IRQ_SET_BUF_LEN \
 		(sizeof(struct vfio_irq_set) + \
@@ -321,8 +323,8 @@  sfc_vdpa_virtq_stop(struct sfc_vdpa_ops_data *ops_data, int vq_num)
 	/* stop the vq */
 	rc = efx_virtio_qstop(vq, &vq_idx);
 	if (rc == 0) {
-		ops_data->vq_cxt[vq_num].cidx = vq_idx.evvd_vq_cidx;
-		ops_data->vq_cxt[vq_num].pidx = vq_idx.evvd_vq_pidx;
+		ops_data->vq_cxt[vq_num].cidx = vq_idx.evvd_vq_used_idx;
+		ops_data->vq_cxt[vq_num].pidx = vq_idx.evvd_vq_avail_idx;
 	}
 	ops_data->vq_cxt[vq_num].enable = B_FALSE;
 
diff --git a/drivers/vdpa/sfc/sfc_vdpa_ops.h b/drivers/vdpa/sfc/sfc_vdpa_ops.h
index 9dbd5b84dd..5c8e352de3 100644
--- a/drivers/vdpa/sfc/sfc_vdpa_ops.h
+++ b/drivers/vdpa/sfc/sfc_vdpa_ops.h
@@ -7,7 +7,7 @@ 
 
 #include <rte_vdpa.h>
 
-#define SFC_VDPA_MAX_QUEUE_PAIRS		1
+#define SFC_VDPA_MAX_QUEUE_PAIRS		8
 
 enum sfc_vdpa_context {
 	SFC_VDPA_AS_VF