aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/vmxnet3/vmxnet3_test.c
diff options
context:
space:
mode:
authorSteven Luong <sluong@cisco.com>2019-01-29 15:13:31 -0800
committerDamjan Marion <dmarion@me.com>2019-02-02 15:31:22 +0000
commit773291163a4f72f131afc6a84b065bcfed13aeb7 (patch)
tree55a50c027d91bef911d84e6c437b7aa57bbc9dad /src/plugins/vmxnet3/vmxnet3_test.c
parent900cbadde906a000ce1b431fc637a9c0f7089339 (diff)
vmxnet3: multiple TX queues support
Add num-tx-queues to the vmxnet3 create CLI/API. Default is 1. Max is min (8, the number of cores assigned to VPP). Change-Id: I7e0a659a82d01c719665c228dd8a71e3288a2895 Signed-off-by: Steven Luong <sluong@cisco.com>
Diffstat (limited to 'src/plugins/vmxnet3/vmxnet3_test.c')
-rw-r--r--src/plugins/vmxnet3/vmxnet3_test.c42
1 files changed, 25 insertions, 17 deletions
diff --git a/src/plugins/vmxnet3/vmxnet3_test.c b/src/plugins/vmxnet3/vmxnet3_test.c
index 53097f02d63..848b1698797 100644
--- a/src/plugins/vmxnet3/vmxnet3_test.c
+++ b/src/plugins/vmxnet3/vmxnet3_test.c
@@ -121,6 +121,8 @@ api_vmxnet3_create (vat_main_t * vam)
;
else if (unformat (i, "tx-queue-size %u", &args.txq_size))
;
+ else if (unformat (i, "num-tx-queues %u", &args.txq_num))
+ ;
else
{
clib_warning ("unknown input '%U'", format_unformat_error, i);
@@ -134,6 +136,7 @@ api_vmxnet3_create (vat_main_t * vam)
mp->enable_elog = clib_host_to_net_u16 (args.enable_elog);
mp->rxq_size = clib_host_to_net_u16 (args.rxq_size);
mp->txq_size = clib_host_to_net_u16 (args.txq_size);
+ mp->txq_num = clib_host_to_net_u16 (args.txq_num);
S (mp);
W (ret);
@@ -240,33 +243,38 @@ vl_api_vmxnet3_details_t_handler (vl_api_vmxnet3_details_t * mp)
{
vat_main_t *vam = vmxnet3_test_main.vat_main;
u32 pci_addr = ntohl (mp->pci_addr);
+ u16 qid;
fformat (vam->ofp, "%s: sw_if_index %u mac %U\n"
" version: %u\n"
" PCI Address: %U\n"
- " RX completion next index %u"
- " RX Queue %u\n"
- " ring 0 size %u fill %u consume %u produce %u\n"
- " ring 1 size %u fill %u consume %u produce %u\n"
- " TX completion next index %u"
- " TX Queue %u\n"
- " size %u consume %u produce %u\n"
- " state %s\n",
+ " state %s\n"
+ " RX Queue 0\n"
+ " RX completion next index %u\n"
+ " ring 0 size %u fill %u consume %u produce %u\n"
+ " ring 1 size %u fill %u consume %u produce %u\n",
mp->if_name, ntohl (mp->sw_if_index), format_ethernet_address,
mp->hw_addr, mp->version,
format_pci_addr, &pci_addr,
+ mp->admin_up_down ? "up" : "down",
ntohs (mp->rx_next),
- ntohs (mp->rx_qid),
ntohs (mp->rx_qsize), ntohs (mp->rx_fill[0]),
ntohs (mp->rx_consume[0]),
ntohs (mp->rx_produce[0]),
ntohs (mp->rx_qsize), ntohs (mp->rx_fill[1]),
- ntohs (mp->rx_consume[1]),
- ntohs (mp->rx_produce[1]),
- ntohs (mp->tx_next),
- ntohs (mp->tx_qid),
- ntohs (mp->tx_qsize), ntohs (mp->tx_consume),
- ntohs (mp->tx_produce), mp->admin_up_down ? "up" : "down");
+ ntohs (mp->rx_consume[1]), ntohs (mp->rx_produce[1]));
+ for (qid = 0; qid < mp->tx_count; qid++)
+ {
+ vl_api_vmxnet3_tx_list_t *tx_list = &mp->tx_list[qid];
+ fformat (vam->ofp,
+ " TX Queue %u\n"
+ " TX completion next index %u\n"
+ " size %u consume %u produce %u\n",
+ qid,
+ ntohs (tx_list->tx_next),
+ ntohs (tx_list->tx_qsize), ntohs (tx_list->tx_consume),
+ ntohs (tx_list->tx_produce));
+ }
}
/*
@@ -275,8 +283,8 @@ vl_api_vmxnet3_details_t_handler (vl_api_vmxnet3_details_t * mp)
*/
#define foreach_vpe_api_msg \
_(vmxnet3_create, "<pci-address> [rx-queue-size <size>] " \
- "[tx-queue-size <size>]") \
-_(vmxnet3_delete, "<sw_if_index>") \
+ "[tx-queue-size <size>] [num-tx-queues <num>]") \
+_(vmxnet3_delete, "sw_if_index <sw_if_index>") \
_(vmxnet3_dump, "")
static void