patch 'net/ntnic: check virt queue hardware setup result' has been queued to stable release 24.11.9
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Tue Oct 27 12:48:52 CET 2026
Hi,
FYI, your patch has been queued to stable release 24.11.9
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/26. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/96b702d31d30b8314cca392777e1562706b5451c
Thanks.
Luca Boccassi
---
>From 96b702d31d30b8314cca392777e1562706b5451c Mon Sep 17 00:00:00 2001
From: Serhii Iliushyk <sil-plv at napatech.com>
Date: Tue, 8 Sep 2026 18:27:23 +0200
Subject: [PATCH] net/ntnic: check virt queue hardware setup result
[ upstream commit 0bfdb207ccf5e57c0bb2b0b290f71d2da9e32c25 ]
The managed virt queue setup ignored the result of programming the
DBS registers and returned the queue as usable.
Return an error from the hardware setup and, when it fails, fail the
managed split and packed setup paths and free the descriptor copy.
Fixes: e13da07fd9fd ("net/ntnic: add split-queue support")
Fixes: af30088786c2 ("net/ntnic: add virtqueue setup managed packed-ring")
Signed-off-by: Serhii Iliushyk <sil-plv at napatech.com>
---
drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c | 152 ++++++++++--------
drivers/net/ntnic/ntnic_mod_reg.h | 6 +-
2 files changed, 88 insertions(+), 70 deletions(-)
diff --git a/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c b/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
index e46a3bef283..dff5abcaadc 100644
--- a/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
+++ b/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
@@ -358,7 +358,8 @@ static uint16_t dbs_qsize_log2(uint16_t qsize)
return qs;
}
-static struct nthw_virt_queue *nthw_setup_rx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+static int nthw_setup_rx_virt_queue(struct nthw_virt_queue *vq,
+ nthw_dbs_t *p_nthw_dbs,
uint32_t index,
uint16_t start_idx,
uint16_t start_ptr,
@@ -383,7 +384,7 @@ static struct nthw_virt_queue *nthw_setup_rx_virt_queue(nthw_dbs_t *p_nthw_dbs,
*/
if (set_rx_dr_data(p_nthw_dbs, index, (uint64_t)desc_struct_phys_addr, host_id, qs, header,
0) != 0) {
- return NULL;
+ return -1;
}
/*
@@ -402,7 +403,7 @@ static struct nthw_virt_queue *nthw_setup_rx_virt_queue(nthw_dbs_t *p_nthw_dbs,
if (set_rx_uw_data(p_nthw_dbs, index,
(uint64_t)used_struct_phys_addr,
host_id, qs, 0, int_enable, vec, istk) != 0) {
- return NULL;
+ return -1;
}
/*
@@ -416,7 +417,7 @@ static struct nthw_virt_queue *nthw_setup_rx_virt_queue(nthw_dbs_t *p_nthw_dbs,
if (set_rx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr,
RX_AM_DISABLE, host_id, 0,
irq_vector >= 0 ? 1 : 0) != 0) {
- return NULL;
+ return -1;
}
}
@@ -432,25 +433,24 @@ static struct nthw_virt_queue *nthw_setup_rx_virt_queue(nthw_dbs_t *p_nthw_dbs,
*/
if (set_rx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr, RX_AM_ENABLE,
host_id, 0, irq_vector >= 0 ? 1 : 0) != 0) {
- return NULL;
+ return -1;
}
/* Save queue state */
- rxvq[index].usage = NTHW_VIRTQ_UNMANAGED;
- rxvq[index].mp_nthw_dbs = p_nthw_dbs;
- rxvq[index].index = index;
- rxvq[index].queue_size = queue_size;
- rxvq[index].am_enable = (irq_vector < 0) ? RX_AM_ENABLE : RX_AM_DISABLE;
- rxvq[index].host_id = host_id;
- rxvq[index].avail_struct_phys_addr = avail_struct_phys_addr;
- rxvq[index].used_struct_phys_addr = used_struct_phys_addr;
- rxvq[index].desc_struct_phys_addr = desc_struct_phys_addr;
- rxvq[index].vq_type = vq_type;
- rxvq[index].in_order = 0; /* not used */
- rxvq[index].irq_vector = irq_vector;
+ vq->usage = NTHW_VIRTQ_UNMANAGED;
+ vq->mp_nthw_dbs = p_nthw_dbs;
+ vq->index = index;
+ vq->queue_size = queue_size;
+ vq->am_enable = (irq_vector < 0) ? RX_AM_ENABLE : RX_AM_DISABLE;
+ vq->host_id = host_id;
+ vq->avail_struct_phys_addr = avail_struct_phys_addr;
+ vq->used_struct_phys_addr = used_struct_phys_addr;
+ vq->desc_struct_phys_addr = desc_struct_phys_addr;
+ vq->vq_type = vq_type;
+ vq->in_order = 0; /* not used */
+ vq->irq_vector = irq_vector;
- /* Return queue handle */
- return &rxvq[index];
+ return 0;
}
static int dbs_wait_hw_queue_shutdown(struct nthw_virt_queue *vq, int rx);
@@ -684,7 +684,8 @@ static int nthw_release_mngd_tx_virt_queue(struct nthw_virt_queue *txvq)
return dbs_internal_release_tx_virt_queue(txvq);
}
-static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+static int nthw_setup_tx_virt_queue(struct nthw_virt_queue *vq,
+ nthw_dbs_t *p_nthw_dbs,
uint32_t index,
uint16_t start_idx,
uint16_t start_ptr,
@@ -712,7 +713,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
*/
if (set_tx_dr_data(p_nthw_dbs, index, (uint64_t)desc_struct_phys_addr, host_id, qs, port,
header, 0) != 0) {
- return NULL;
+ return -1;
}
/*
@@ -730,7 +731,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
if (set_tx_uw_data(p_nthw_dbs, index,
(uint64_t)used_struct_phys_addr,
host_id, qs, 0, int_enable, vec, istk, in_order) != 0) {
- return NULL;
+ return -1;
}
/*
@@ -739,7 +740,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
*/
if (set_tx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr, TX_AM_DISABLE,
host_id, 0, irq_vector >= 0 ? 1 : 0) != 0) {
- return NULL;
+ return -1;
}
/*
@@ -749,7 +750,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
dbs_init_tx_queue(p_nthw_dbs, index, start_idx, start_ptr);
if (nthw_dbs_set_tx_qp_data(p_nthw_dbs, index, virtual_port) != 0)
- return NULL;
+ return -1;
/*
* 2. Configure the DBS.TX_AM_DATA memory and enable the queues you plan to use;
@@ -763,28 +764,27 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
if (set_tx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr,
TX_AM_ENABLE, host_id, 0,
irq_vector >= 0 ? 1 : 0) != 0) {
- return NULL;
+ return -1;
}
}
/* Save queue state */
- txvq[index].usage = NTHW_VIRTQ_UNMANAGED;
- txvq[index].mp_nthw_dbs = p_nthw_dbs;
- txvq[index].index = index;
- txvq[index].queue_size = queue_size;
- txvq[index].am_enable = (irq_vector < 0) ? TX_AM_ENABLE : TX_AM_DISABLE;
- txvq[index].host_id = host_id;
- txvq[index].port = port;
- txvq[index].virtual_port = virtual_port;
- txvq[index].avail_struct_phys_addr = avail_struct_phys_addr;
- txvq[index].used_struct_phys_addr = used_struct_phys_addr;
- txvq[index].desc_struct_phys_addr = desc_struct_phys_addr;
- txvq[index].vq_type = vq_type;
- txvq[index].in_order = in_order;
- txvq[index].irq_vector = irq_vector;
+ vq->usage = NTHW_VIRTQ_UNMANAGED;
+ vq->mp_nthw_dbs = p_nthw_dbs;
+ vq->index = index;
+ vq->queue_size = queue_size;
+ vq->am_enable = (irq_vector < 0) ? TX_AM_ENABLE : TX_AM_DISABLE;
+ vq->host_id = host_id;
+ vq->port = port;
+ vq->virtual_port = virtual_port;
+ vq->avail_struct_phys_addr = avail_struct_phys_addr;
+ vq->used_struct_phys_addr = used_struct_phys_addr;
+ vq->desc_struct_phys_addr = desc_struct_phys_addr;
+ vq->vq_type = vq_type;
+ vq->in_order = in_order;
+ vq->irq_vector = irq_vector;
- /* Return queue handle */
- return &txvq[index];
+ return 0;
}
static struct nthw_virt_queue *
@@ -826,12 +826,15 @@ nthw_setup_mngd_rx_virt_queue_split(nthw_dbs_t *p_nthw_dbs,
queue_size * sizeof(*p_packet_buffers));
}
- nthw_setup_rx_virt_queue(p_nthw_dbs, index, 0, 0, (void *)p_virt_struct_area->phys_addr,
- (char *)p_virt_struct_area->phys_addr +
- virtq_struct_layout.used_offset,
- (char *)p_virt_struct_area->phys_addr +
- virtq_struct_layout.desc_offset,
- (uint16_t)queue_size, host_id, header, SPLIT_RING, irq_vector);
+ if (nthw_setup_rx_virt_queue(&rxvq[index], p_nthw_dbs, index, 0, 0,
+ (void *)p_virt_struct_area->phys_addr,
+ (char *)p_virt_struct_area->phys_addr + virtq_struct_layout.used_offset,
+ (char *)p_virt_struct_area->phys_addr + virtq_struct_layout.desc_offset,
+ (uint16_t)queue_size, host_id, header, SPLIT_RING, irq_vector) != 0) {
+ free(rxvq[index].p_virtual_addr);
+ rxvq[index].p_virtual_addr = NULL;
+ return NULL;
+ }
rxvq[index].usage = NTHW_VIRTQ_MANAGED;
@@ -882,13 +885,16 @@ nthw_setup_mngd_tx_virt_queue_split(nthw_dbs_t *p_nthw_dbs,
queue_size * sizeof(*p_packet_buffers));
}
- nthw_setup_tx_virt_queue(p_nthw_dbs, index, 0, 0, (void *)p_virt_struct_area->phys_addr,
- (char *)p_virt_struct_area->phys_addr +
- virtq_struct_layout.used_offset,
- (char *)p_virt_struct_area->phys_addr +
- virtq_struct_layout.desc_offset,
- (uint16_t)queue_size, host_id, port, virtual_port, header,
- SPLIT_RING, irq_vector, in_order);
+ if (nthw_setup_tx_virt_queue(&txvq[index], p_nthw_dbs, index, 0, 0,
+ (void *)p_virt_struct_area->phys_addr,
+ (char *)p_virt_struct_area->phys_addr + virtq_struct_layout.used_offset,
+ (char *)p_virt_struct_area->phys_addr + virtq_struct_layout.desc_offset,
+ (uint16_t)queue_size, host_id, port, virtual_port, header,
+ SPLIT_RING, irq_vector, in_order) != 0) {
+ free(txvq[index].p_virtual_addr);
+ txvq[index].p_virtual_addr = NULL;
+ return NULL;
+ }
txvq[index].usage = NTHW_VIRTQ_MANAGED;
@@ -986,13 +992,18 @@ nthw_setup_managed_rx_virt_queue_packed(nthw_dbs_t *p_nthw_dbs,
VIRTQ_DESC_F_WRITE | VIRTQ_DESC_F_AVAIL, 1) != 0)
return NULL;
- nthw_setup_rx_virt_queue(p_nthw_dbs, index, 0x8000, 0, /* start wrap ring counter as 1 */
- (void *)((uintptr_t)p_virt_struct_area->phys_addr +
- pvirtq_layout.driver_event_offset),
- (void *)((uintptr_t)p_virt_struct_area->phys_addr +
- pvirtq_layout.device_event_offset),
- p_virt_struct_area->phys_addr, (uint16_t)queue_size, host_id,
- header, PACKED_RING, irq_vector);
+ if (nthw_setup_rx_virt_queue(vq, p_nthw_dbs, index,
+ 0x8000, 0, /* start wrap ring counter as 1 */
+ (void *)((uintptr_t)p_virt_struct_area->phys_addr +
+ pvirtq_layout.driver_event_offset),
+ (void *)((uintptr_t)p_virt_struct_area->phys_addr +
+ pvirtq_layout.device_event_offset),
+ p_virt_struct_area->phys_addr, (uint16_t)queue_size, host_id,
+ header, PACKED_RING, irq_vector) != 0) {
+ free(vq->p_virtual_addr);
+ vq->p_virtual_addr = NULL;
+ return NULL;
+ }
vq->usage = NTHW_VIRTQ_MANAGED;
return vq;
@@ -1020,13 +1031,18 @@ nthw_setup_managed_tx_virt_queue_packed(nthw_dbs_t *p_nthw_dbs,
p_packet_buffers, 0, 0) != 0)
return NULL;
- nthw_setup_tx_virt_queue(p_nthw_dbs, index, 0x8000, 0, /* start wrap ring counter as 1 */
- (void *)((uintptr_t)p_virt_struct_area->phys_addr +
- pvirtq_layout.driver_event_offset),
- (void *)((uintptr_t)p_virt_struct_area->phys_addr +
- pvirtq_layout.device_event_offset),
- p_virt_struct_area->phys_addr, (uint16_t)queue_size, host_id,
- port, virtual_port, header, PACKED_RING, irq_vector, in_order);
+ if (nthw_setup_tx_virt_queue(vq, p_nthw_dbs, index,
+ 0x8000, 0, /* start wrap ring counter as 1 */
+ (void *)((uintptr_t)p_virt_struct_area->phys_addr +
+ pvirtq_layout.driver_event_offset),
+ (void *)((uintptr_t)p_virt_struct_area->phys_addr +
+ pvirtq_layout.device_event_offset),
+ p_virt_struct_area->phys_addr, (uint16_t)queue_size, host_id,
+ port, virtual_port, header, PACKED_RING, irq_vector, in_order) != 0) {
+ free(vq->p_virtual_addr);
+ vq->p_virtual_addr = NULL;
+ return NULL;
+ }
vq->usage = NTHW_VIRTQ_MANAGED;
return vq;
diff --git a/drivers/net/ntnic/ntnic_mod_reg.h b/drivers/net/ntnic/ntnic_mod_reg.h
index 71861c6dea9..b9cb43a0491 100644
--- a/drivers/net/ntnic/ntnic_mod_reg.h
+++ b/drivers/net/ntnic/ntnic_mod_reg.h
@@ -25,7 +25,8 @@
/* sg ops section */
struct sg_ops_s {
/* Setup a virtQueue for a VM */
- struct nthw_virt_queue *(*nthw_setup_rx_virt_queue)(nthw_dbs_t *p_nthw_dbs,
+ int (*nthw_setup_rx_virt_queue)(struct nthw_virt_queue *vq,
+ nthw_dbs_t *p_nthw_dbs,
uint32_t index,
uint16_t start_idx,
uint16_t start_ptr,
@@ -37,7 +38,8 @@ struct sg_ops_s {
uint32_t header,
uint32_t vq_type,
int irq_vector);
- struct nthw_virt_queue *(*nthw_setup_tx_virt_queue)(nthw_dbs_t *p_nthw_dbs,
+ int (*nthw_setup_tx_virt_queue)(struct nthw_virt_queue *vq,
+ nthw_dbs_t *p_nthw_dbs,
uint32_t index,
uint16_t start_idx,
uint16_t start_ptr,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-10-27 11:43:55.219441550 +0000
+++ 0038-net-ntnic-check-virt-queue-hardware-setup-result.patch 2026-10-27 11:43:53.546060440 +0000
@@ -1 +1 @@
-From 0bfdb207ccf5e57c0bb2b0b290f71d2da9e32c25 Mon Sep 17 00:00:00 2001
+From 96b702d31d30b8314cca392777e1562706b5451c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0bfdb207ccf5e57c0bb2b0b290f71d2da9e32c25 ]
+
@@ -14 +15,0 @@
-Cc: stable at dpdk.org
@@ -18,2 +19,3 @@
- drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c | 154 ++++++++++--------
- 1 file changed, 86 insertions(+), 68 deletions(-)
+ drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c | 152 ++++++++++--------
+ drivers/net/ntnic/ntnic_mod_reg.h | 6 +-
+ 2 files changed, 88 insertions(+), 70 deletions(-)
@@ -22 +24 @@
-index 7c10acb4e2..af200432a2 100644
+index e46a3bef283..dff5abcaadc 100644
@@ -25 +27 @@
-@@ -357,7 +357,8 @@ static uint8_t dbs_qsize_log2(uint16_t qsize)
+@@ -358,7 +358,8 @@ static uint16_t dbs_qsize_log2(uint16_t qsize)
@@ -37,2 +39,2 @@
- if (nthw_set_rx_dr_data(p_nthw_dbs, index, (uint64_t)desc_struct_phys_addr,
- host_id, qs, header, 0) != 0) {
+ if (set_rx_dr_data(p_nthw_dbs, index, (uint64_t)desc_struct_phys_addr, host_id, qs, header,
+ 0) != 0) {
@@ -45 +47 @@
- if (nthw_set_rx_uw_data(p_nthw_dbs, index,
+ if (set_rx_uw_data(p_nthw_dbs, index,
@@ -54 +56 @@
- if (nthw_set_rx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr,
+ if (set_rx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr,
@@ -56 +58 @@
- 0) != 0) {
+ irq_vector >= 0 ? 1 : 0) != 0) {
@@ -62,3 +64,3 @@
-@@ -433,25 +434,24 @@ static struct nthw_virt_queue *nthw_setup_rx_virt_queue(nthw_dbs_t *p_nthw_dbs,
- uint32_t enable = rx_deferred_start ? RX_AM_DISABLE : RX_AM_ENABLE;
- if (nthw_set_rx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr, enable,
+@@ -432,25 +433,24 @@ static struct nthw_virt_queue *nthw_setup_rx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+ */
+ if (set_rx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr, RX_AM_ENABLE,
@@ -102 +104 @@
-@@ -685,7 +685,8 @@ static int nthw_release_mngd_tx_virt_queue(struct nthw_virt_queue *txvq)
+@@ -684,7 +684,8 @@ static int nthw_release_mngd_tx_virt_queue(struct nthw_virt_queue *txvq)
@@ -112 +114 @@
-@@ -714,7 +715,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+@@ -712,7 +713,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
@@ -114,2 +116,2 @@
- if (nthw_set_tx_dr_data(p_nthw_dbs, index, (uint64_t)desc_struct_phys_addr,
- host_id, qs, port, header, 0) != 0) {
+ if (set_tx_dr_data(p_nthw_dbs, index, (uint64_t)desc_struct_phys_addr, host_id, qs, port,
+ header, 0) != 0) {
@@ -121,2 +123,2 @@
-@@ -732,7 +733,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
- if (nthw_set_tx_uw_data(p_nthw_dbs, index,
+@@ -730,7 +731,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+ if (set_tx_uw_data(p_nthw_dbs, index,
@@ -130 +132 @@
-@@ -741,7 +742,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+@@ -739,7 +740,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
@@ -132 +134 @@
- if (nthw_set_tx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr, TX_AM_DISABLE,
+ if (set_tx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr, TX_AM_DISABLE,
@@ -139 +141 @@
-@@ -751,7 +752,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+@@ -749,7 +750,7 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
@@ -148,4 +150,4 @@
-@@ -765,28 +766,27 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
- uint32_t enable = tx_deferred_start ? TX_AM_DISABLE : TX_AM_ENABLE;
- if (nthw_set_tx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr,
- enable, host_id, 0, 0) != 0) {
+@@ -763,28 +764,27 @@ static struct nthw_virt_queue *nthw_setup_tx_virt_queue(nthw_dbs_t *p_nthw_dbs,
+ if (set_tx_am_data(p_nthw_dbs, index, (uint64_t)avail_struct_phys_addr,
+ TX_AM_ENABLE, host_id, 0,
+ irq_vector >= 0 ? 1 : 0) != 0) {
@@ -193,2 +195,2 @@
-@@ -830,12 +830,16 @@ nthw_setup_mngd_rx_virt_queue_split(nthw_dbs_t *p_nthw_dbs,
- queue_size * sizeof(*p_packet_buffers));
+@@ -826,12 +826,15 @@ nthw_setup_mngd_rx_virt_queue_split(nthw_dbs_t *p_nthw_dbs,
+ queue_size * sizeof(*p_packet_buffers));
@@ -202 +204 @@
-- (uint16_t)queue_size, host_id, header, SPLIT_RING, irq_vector, rx_deferred_start);
+- (uint16_t)queue_size, host_id, header, SPLIT_RING, irq_vector);
@@ -207,2 +209 @@
-+ (uint16_t)queue_size, host_id, header, SPLIT_RING, irq_vector,
-+ rx_deferred_start) != 0) {
++ (uint16_t)queue_size, host_id, header, SPLIT_RING, irq_vector) != 0) {
@@ -216,2 +217,2 @@
-@@ -888,13 +892,16 @@ nthw_setup_mngd_tx_virt_queue_split(nthw_dbs_t *p_nthw_dbs,
- queue_size * sizeof(*p_packet_buffers));
+@@ -882,13 +885,16 @@ nthw_setup_mngd_tx_virt_queue_split(nthw_dbs_t *p_nthw_dbs,
+ queue_size * sizeof(*p_packet_buffers));
@@ -226 +227 @@
-- SPLIT_RING, irq_vector, in_order, tx_deferred_start);
+- SPLIT_RING, irq_vector, in_order);
@@ -232 +233 @@
-+ SPLIT_RING, irq_vector, in_order, tx_deferred_start) != 0) {
++ SPLIT_RING, irq_vector, in_order) != 0) {
@@ -240 +241 @@
-@@ -996,13 +1003,18 @@ nthw_setup_managed_rx_virt_queue_packed(nthw_dbs_t *p_nthw_dbs,
+@@ -986,13 +992,18 @@ nthw_setup_managed_rx_virt_queue_packed(nthw_dbs_t *p_nthw_dbs,
@@ -250 +251 @@
-- header, PACKED_RING, irq_vector, rx_deferred_start);
+- header, PACKED_RING, irq_vector);
@@ -258 +259 @@
-+ header, PACKED_RING, irq_vector, rx_deferred_start) != 0) {
++ header, PACKED_RING, irq_vector) != 0) {
@@ -266 +267 @@
-@@ -1031,13 +1043,19 @@ nthw_setup_managed_tx_virt_queue_packed(nthw_dbs_t *p_nthw_dbs,
+@@ -1020,13 +1031,18 @@ nthw_setup_managed_tx_virt_queue_packed(nthw_dbs_t *p_nthw_dbs,
@@ -276 +277 @@
-- port, virtual_port, header, PACKED_RING, irq_vector, in_order, tx_deferred_start);
+- port, virtual_port, header, PACKED_RING, irq_vector, in_order);
@@ -284,2 +285 @@
-+ port, virtual_port, header, PACKED_RING, irq_vector, in_order,
-+ tx_deferred_start) != 0) {
++ port, virtual_port, header, PACKED_RING, irq_vector, in_order) != 0) {
@@ -292,0 +293,24 @@
+diff --git a/drivers/net/ntnic/ntnic_mod_reg.h b/drivers/net/ntnic/ntnic_mod_reg.h
+index 71861c6dea9..b9cb43a0491 100644
+--- a/drivers/net/ntnic/ntnic_mod_reg.h
++++ b/drivers/net/ntnic/ntnic_mod_reg.h
+@@ -25,7 +25,8 @@
+ /* sg ops section */
+ struct sg_ops_s {
+ /* Setup a virtQueue for a VM */
+- struct nthw_virt_queue *(*nthw_setup_rx_virt_queue)(nthw_dbs_t *p_nthw_dbs,
++ int (*nthw_setup_rx_virt_queue)(struct nthw_virt_queue *vq,
++ nthw_dbs_t *p_nthw_dbs,
+ uint32_t index,
+ uint16_t start_idx,
+ uint16_t start_ptr,
+@@ -37,7 +38,8 @@ struct sg_ops_s {
+ uint32_t header,
+ uint32_t vq_type,
+ int irq_vector);
+- struct nthw_virt_queue *(*nthw_setup_tx_virt_queue)(nthw_dbs_t *p_nthw_dbs,
++ int (*nthw_setup_tx_virt_queue)(struct nthw_virt_queue *vq,
++ nthw_dbs_t *p_nthw_dbs,
+ uint32_t index,
+ uint16_t start_idx,
+ uint16_t start_ptr,
More information about the stable
mailing list