summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/dpdk/api')
-rw-r--r--src/plugins/dpdk/api/dpdk.api82
-rwxr-xr-xsrc/plugins/dpdk/api/dpdk_api.c248
-rw-r--r--src/plugins/dpdk/api/dpdk_test.c285
3 files changed, 0 insertions, 615 deletions
diff --git a/src/plugins/dpdk/api/dpdk.api b/src/plugins/dpdk/api/dpdk.api
deleted file mode 100644
index 40bc7369af4..00000000000
--- a/src/plugins/dpdk/api/dpdk.api
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2015-2016 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-option version = "1.0.0";
-import "vnet/interface_types.api";
-
-/** \brief DPDK interface HQoS pipe profile set request
- @param client_index - opaque cookie to identify the sender
- @param context - sender context, to match reply w/ request
- @param sw_if_index - the interface
- @param subport - subport ID
- @param pipe - pipe ID within its subport
- @param profile - pipe profile ID
-*/
-autoreply define sw_interface_set_dpdk_hqos_pipe {
- u32 client_index;
- u32 context;
- vl_api_interface_index_t sw_if_index;
- u32 subport;
- u32 pipe;
- u32 profile;
- option vat_help = "rx sw_if_index <id> subport <subport-id> pipe <pipe-id> profile <profile-id>";
-};
-
-/** \brief DPDK interface HQoS subport parameters set request
- @param client_index - opaque cookie to identify the sender
- @param context - sender context, to match reply w/ request
- @param sw_if_index - the interface
- @param subport - subport ID
- @param tb_rate - subport token bucket rate (measured in bytes/second)
- @param tb_size - subport token bucket size (measured in credits)
- @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
- @param tc_period - enforcement period for rates (measured in milliseconds)
-*/
-autoreply define sw_interface_set_dpdk_hqos_subport {
- u32 client_index;
- u32 context;
- vl_api_interface_index_t sw_if_index;
- u32 subport;
- u32 tb_rate;
- u32 tb_size;
- u32 tc_rate[4];
- u32 tc_period;
- option vat_help = "rx sw_if_index <id> subport <subport-id> [rate <n>] [bktsize <n>] [tc0 <n>] [tc1 <n>] [tc2 <n>] [tc3 <n>] [period <n>]\n";
-};
-
-/** \brief DPDK interface HQoS tctbl entry set request
- @param client_index - opaque cookie to identify the sender
- @param context - sender context, to match reply w/ request
- @param sw_if_index - the interface
- @param entry - entry index ID
- @param tc - traffic class (0 .. 3)
- @param queue - traffic class queue (0 .. 3)
-*/
-autoreply define sw_interface_set_dpdk_hqos_tctbl {
- u32 client_index;
- u32 context;
- vl_api_interface_index_t sw_if_index;
- u32 entry;
- u32 tc;
- u32 queue;
- option vat_help = "rx sw_if_index <id> entry <n> tc <n> queue <n>";
-};
-
-/*
- * Local Variables:
- * eval: (c-set-style "gnu")
- * End:
- */
-
diff --git a/src/plugins/dpdk/api/dpdk_api.c b/src/plugins/dpdk/api/dpdk_api.c
deleted file mode 100755
index 8b22c650c82..00000000000
--- a/src/plugins/dpdk/api/dpdk_api.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <vnet/vnet.h>
-#include <vppinfra/vec.h>
-#include <vppinfra/error.h>
-#include <vppinfra/format.h>
-#include <vppinfra/bitmap.h>
-
-#include <vnet/ethernet/ethernet.h>
-#include <dpdk/device/dpdk.h>
-#include <vlib/pci/pci.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/mount.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include <dpdk/device/dpdk_priv.h>
-
-#include <vlibapi/api.h>
-#include <vlibmemory/api.h>
-
-/* define message IDs */
-#include <dpdk/api/dpdk.api_enum.h>
-#include <dpdk/api/dpdk.api_types.h>
-
-#include <vlibapi/api_helper_macros.h>
-
-static void
- vl_api_sw_interface_set_dpdk_hqos_pipe_t_handler
- (vl_api_sw_interface_set_dpdk_hqos_pipe_t * mp)
-{
- vl_api_sw_interface_set_dpdk_hqos_pipe_reply_t *rmp;
- int rv = 0;
-
- dpdk_main_t *dm = &dpdk_main;
- dpdk_device_t *xd;
-
- u32 sw_if_index = ntohl (mp->sw_if_index);
- u32 subport = ntohl (mp->subport);
- u32 pipe = ntohl (mp->pipe);
- u32 profile = ntohl (mp->profile);
- vnet_hw_interface_t *hw;
-
- VALIDATE_SW_IF_INDEX (mp);
-
- /* hw_if & dpdk device */
- hw = vnet_get_sup_hw_interface (dm->vnet_main, sw_if_index);
-
- xd = vec_elt_at_index (dm->devices, hw->dev_instance);
-
- rv = rte_sched_pipe_config (xd->hqos_ht->hqos, subport, pipe, profile);
-
- BAD_SW_IF_INDEX_LABEL;
-
- REPLY_MACRO (VL_API_SW_INTERFACE_SET_DPDK_HQOS_PIPE_REPLY);
-}
-
-static void *vl_api_sw_interface_set_dpdk_hqos_pipe_t_print
- (vl_api_sw_interface_set_dpdk_hqos_pipe_t * mp, void *handle)
-{
- u8 *s;
-
- s = format (0, "SCRIPT: sw_interface_set_dpdk_hqos_pipe ");
-
- s = format (s, "sw_if_index %u ", ntohl (mp->sw_if_index));
-
- s = format (s, "subport %u pipe %u profile %u ",
- ntohl (mp->subport), ntohl (mp->pipe), ntohl (mp->profile));
-
- FINISH;
-}
-
-static void
- vl_api_sw_interface_set_dpdk_hqos_subport_t_handler
- (vl_api_sw_interface_set_dpdk_hqos_subport_t * mp)
-{
- vl_api_sw_interface_set_dpdk_hqos_subport_reply_t *rmp;
- int rv = 0;
-
- dpdk_main_t *dm = &dpdk_main;
- dpdk_device_t *xd;
- struct rte_sched_subport_params p;
-
- u32 sw_if_index = ntohl (mp->sw_if_index);
- u32 subport = ntohl (mp->subport);
- p.tb_rate = ntohl (mp->tb_rate);
- p.tb_size = ntohl (mp->tb_size);
- p.tc_rate[0] = ntohl (mp->tc_rate[0]);
- p.tc_rate[1] = ntohl (mp->tc_rate[1]);
- p.tc_rate[2] = ntohl (mp->tc_rate[2]);
- p.tc_rate[3] = ntohl (mp->tc_rate[3]);
- p.tc_period = ntohl (mp->tc_period);
-
- vnet_hw_interface_t *hw;
-
- VALIDATE_SW_IF_INDEX (mp);
-
- /* hw_if & dpdk device */
- hw = vnet_get_sup_hw_interface (dm->vnet_main, sw_if_index);
-
- xd = vec_elt_at_index (dm->devices, hw->dev_instance);
-
- rv = rte_sched_subport_config (xd->hqos_ht->hqos, subport, &p);
-
- BAD_SW_IF_INDEX_LABEL;
-
- REPLY_MACRO (VL_API_SW_INTERFACE_SET_DPDK_HQOS_SUBPORT_REPLY);
-}
-
-static void *vl_api_sw_interface_set_dpdk_hqos_subport_t_print
- (vl_api_sw_interface_set_dpdk_hqos_subport_t * mp, void *handle)
-{
- u8 *s;
-
- s = format (0, "SCRIPT: sw_interface_set_dpdk_hqos_subport ");
-
- s = format (s, "sw_if_index %u ", ntohl (mp->sw_if_index));
-
- s =
- format (s,
- "subport %u rate %u bkt_size %u tc0 %u tc1 %u tc2 %u tc3 %u period %u",
- ntohl (mp->subport), ntohl (mp->tb_rate), ntohl (mp->tb_size),
- ntohl (mp->tc_rate[0]), ntohl (mp->tc_rate[1]),
- ntohl (mp->tc_rate[2]), ntohl (mp->tc_rate[3]),
- ntohl (mp->tc_period));
-
- FINISH;
-}
-
-static void
- vl_api_sw_interface_set_dpdk_hqos_tctbl_t_handler
- (vl_api_sw_interface_set_dpdk_hqos_tctbl_t * mp)
-{
- vl_api_sw_interface_set_dpdk_hqos_tctbl_reply_t *rmp;
- int rv = 0;
-
- dpdk_main_t *dm = &dpdk_main;
- vlib_thread_main_t *tm = vlib_get_thread_main ();
- dpdk_device_t *xd;
-
- u32 sw_if_index = ntohl (mp->sw_if_index);
- u32 entry = ntohl (mp->entry);
- u32 tc = ntohl (mp->tc);
- u32 queue = ntohl (mp->queue);
- u32 val, i;
-
- vnet_hw_interface_t *hw;
-
- VALIDATE_SW_IF_INDEX (mp);
-
- /* hw_if & dpdk device */
- hw = vnet_get_sup_hw_interface (dm->vnet_main, sw_if_index);
-
- xd = vec_elt_at_index (dm->devices, hw->dev_instance);
-
- if (tc >= RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE)
- {
- clib_warning ("invalid traffic class !!");
- rv = VNET_API_ERROR_INVALID_VALUE;
- goto done;
- }
- if (queue >= RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS)
- {
- clib_warning ("invalid queue !!");
- rv = VNET_API_ERROR_INVALID_VALUE;
- goto done;
- }
-
- /* Detect the set of worker threads */
- uword *p = hash_get_mem (tm->thread_registrations_by_name, "workers");
-
- if (p == 0)
- {
- clib_warning ("worker thread registration AWOL !!");
- rv = VNET_API_ERROR_INVALID_VALUE_2;
- goto done;
- }
-
- vlib_thread_registration_t *tr = (vlib_thread_registration_t *) p[0];
- int worker_thread_first = tr->first_index;
- int worker_thread_count = tr->count;
-
- val = tc * RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS + queue;
- for (i = 0; i < worker_thread_count; i++)
- xd->hqos_wt[worker_thread_first + i].hqos_tc_table[entry] = val;
-
- BAD_SW_IF_INDEX_LABEL;
-done:
-
- REPLY_MACRO (VL_API_SW_INTERFACE_SET_DPDK_HQOS_TCTBL_REPLY);
-}
-
-static void *vl_api_sw_interface_set_dpdk_hqos_tctbl_t_print
- (vl_api_sw_interface_set_dpdk_hqos_tctbl_t * mp, void *handle)
-{
- u8 *s;
-
- s = format (0, "SCRIPT: sw_interface_set_dpdk_hqos_tctbl ");
-
- s = format (s, "sw_if_index %u ", ntohl (mp->sw_if_index));
-
- s = format (s, "entry %u tc %u queue %u",
- ntohl (mp->entry), ntohl (mp->tc), ntohl (mp->queue));
-
- FINISH;
-}
-
-#include <dpdk/api/dpdk.api.c>
-static clib_error_t *
-dpdk_api_init (vlib_main_t * vm)
-{
- dpdk_main_t *dm = &dpdk_main;
-
- /* Ask for a correctly-sized block of API message decode slots */
- dm->msg_id_base = setup_message_id_table ();
-
- return 0;
-}
-
-/* *INDENT-OFF* */
-VLIB_INIT_FUNCTION (dpdk_api_init) =
-{
- .runs_after = VLIB_INITS ("dpdk_init"),
-/* *INDENT-OFF* */
-
-/*
- * fd.io coding-style-patch-verification: ON
- *
- * Local Variables:
- * eval: (c-set-style "gnu")
- * End:
- */
diff --git a/src/plugins/dpdk/api/dpdk_test.c b/src/plugins/dpdk/api/dpdk_test.c
deleted file mode 100644
index 951082faaf9..00000000000
--- a/src/plugins/dpdk/api/dpdk_test.c
+++ /dev/null
@@ -1,285 +0,0 @@
-
-/*
- * dpdk_test.c - skeleton vpp-api-test plug-in
- *
- * Copyright (c) <current-year> <your-organization>
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <vat/vat.h>
-#include <vlibapi/api.h>
-#include <vlibmemory/api.h>
-#include <vppinfra/error.h>
-#include <vnet/ip/ip.h>
-
-uword unformat_sw_if_index (unformat_input_t * input, va_list * args);
-
-/* Declare message IDs */
-#include <dpdk/api/dpdk.api_enum.h>
-#include <dpdk/api/dpdk.api_types.h>
-
-typedef struct {
- /* API message ID base */
- u16 msg_id_base;
- vat_main_t *vat_main;
-} dpdk_test_main_t;
-
-dpdk_test_main_t dpdk_test_main;
-
-/* M: construct, but don't yet send a message */
-#define M(T,t) \
-do { \
- vam->result_ready = 0; \
- mp = vl_msg_api_alloc(sizeof(*mp)); \
- clib_memset (mp, 0, sizeof (*mp)); \
- mp->_vl_msg_id = ntohs (VL_API_##T + dm->msg_id_base); \
- mp->client_index = vam->my_client_index; \
-} while(0);
-
-#define M2(T,t,n) \
-do { \
- vam->result_ready = 0; \
- mp = vl_msg_api_alloc(sizeof(*mp)+(n)); \
- clib_memset (mp, 0, sizeof (*mp)); \
- mp->_vl_msg_id = ntohs (VL_API_##T + dm->msg_id_base); \
- mp->client_index = vam->my_client_index; \
-} while(0);
-
-/* S: send a message */
-#define S (vl_msg_api_send_shmem (vam->vl_input_queue, (u8 *)&mp))
-
-/* W: wait for results, with timeout */
-#define W \
-do { \
- timeout = vat_time_now (vam) + 1.0; \
- \
- while (vat_time_now (vam) < timeout) { \
- if (vam->result_ready == 1) { \
- return (vam->retval); \
- } \
- } \
- return -99; \
-} while(0);
-
-static int
-api_sw_interface_set_dpdk_hqos_pipe (vat_main_t * vam)
-{
- dpdk_test_main_t * dm = &dpdk_test_main;
- unformat_input_t *i = vam->input;
- vl_api_sw_interface_set_dpdk_hqos_pipe_t *mp;
- f64 timeout;
- u32 sw_if_index;
- u8 sw_if_index_set = 0;
- u32 subport;
- u8 subport_set = 0;
- u32 pipe;
- u8 pipe_set = 0;
- u32 profile;
- u8 profile_set = 0;
-
- /* Parse args required to build the message */
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "rx sw_if_index %u", &sw_if_index))
- sw_if_index_set = 1;
- else if (unformat (i, "subport %u", &subport))
- subport_set = 1;
- else if (unformat (i, "pipe %u", &pipe))
- pipe_set = 1;
- else if (unformat (i, "profile %u", &profile))
- profile_set = 1;
- else
- break;
- }
-
- if (sw_if_index_set == 0)
- {
- errmsg ("missing interface name or sw_if_index");
- return -99;
- }
-
- if (subport_set == 0)
- {
- errmsg ("missing subport ");
- return -99;
- }
-
- if (pipe_set == 0)
- {
- errmsg ("missing pipe");
- return -99;
- }
-
- if (profile_set == 0)
- {
- errmsg ("missing profile");
- return -99;
- }
-
- M (SW_INTERFACE_SET_DPDK_HQOS_PIPE, sw_interface_set_dpdk_hqos_pipe);
-
- mp->sw_if_index = ntohl (sw_if_index);
- mp->subport = ntohl (subport);
- mp->pipe = ntohl (pipe);
- mp->profile = ntohl (profile);
-
-
- S;
- W;
- /* NOTREACHED */
- return 0;
-}
-
-static int
-api_sw_interface_set_dpdk_hqos_subport (vat_main_t * vam)
-{
- dpdk_test_main_t * dm = &dpdk_test_main;
- unformat_input_t *i = vam->input;
- vl_api_sw_interface_set_dpdk_hqos_subport_t *mp;
- f64 timeout;
- u32 sw_if_index;
- u8 sw_if_index_set = 0;
- u32 subport;
- u8 subport_set = 0;
- u32 tb_rate = 1250000000; /* 10GbE */
- u32 tb_size = 1000000;
- u32 tc_rate[] = { 1250000000, 1250000000, 1250000000, 1250000000 };
- u32 tc_period = 10;
-
- /* Parse args required to build the message */
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "rx sw_if_index %u", &sw_if_index))
- sw_if_index_set = 1;
- else if (unformat (i, "subport %u", &subport))
- subport_set = 1;
- else if (unformat (i, "rate %u", &tb_rate))
- {
- u32 tc_id;
-
- for (tc_id = 0; tc_id < (sizeof (tc_rate) / sizeof (tc_rate[0]));
- tc_id++)
- tc_rate[tc_id] = tb_rate;
- }
- else if (unformat (i, "bktsize %u", &tb_size))
- ;
- else if (unformat (i, "tc0 %u", &tc_rate[0]))
- ;
- else if (unformat (i, "tc1 %u", &tc_rate[1]))
- ;
- else if (unformat (i, "tc2 %u", &tc_rate[2]))
- ;
- else if (unformat (i, "tc3 %u", &tc_rate[3]))
- ;
- else if (unformat (i, "period %u", &tc_period))
- ;
- else
- break;
- }
-
- if (sw_if_index_set == 0)
- {
- errmsg ("missing interface name or sw_if_index");
- return -99;
- }
-
- if (subport_set == 0)
- {
- errmsg ("missing subport ");
- return -99;
- }
-
- M (SW_INTERFACE_SET_DPDK_HQOS_SUBPORT, sw_interface_set_dpdk_hqos_subport);
-
- mp->sw_if_index = ntohl (sw_if_index);
- mp->subport = ntohl (subport);
- mp->tb_rate = ntohl (tb_rate);
- mp->tb_size = ntohl (tb_size);
- mp->tc_rate[0] = ntohl (tc_rate[0]);
- mp->tc_rate[1] = ntohl (tc_rate[1]);
- mp->tc_rate[2] = ntohl (tc_rate[2]);
- mp->tc_rate[3] = ntohl (tc_rate[3]);
- mp->tc_period = ntohl (tc_period);
-
- S;
- W;
- /* NOTREACHED */
- return 0;
-}
-
-static int
-api_sw_interface_set_dpdk_hqos_tctbl (vat_main_t * vam)
-{
- dpdk_test_main_t * dm = &dpdk_test_main;
- unformat_input_t *i = vam->input;
- vl_api_sw_interface_set_dpdk_hqos_tctbl_t *mp;
- f64 timeout;
- u32 sw_if_index;
- u8 sw_if_index_set = 0;
- u8 entry_set = 0;
- u8 tc_set = 0;
- u8 queue_set = 0;
- u32 entry, tc, queue;
-
- /* Parse args required to build the message */
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "rx sw_if_index %u", &sw_if_index))
- sw_if_index_set = 1;
- else if (unformat (i, "entry %d", &entry))
- entry_set = 1;
- else if (unformat (i, "tc %d", &tc))
- tc_set = 1;
- else if (unformat (i, "queue %d", &queue))
- queue_set = 1;
- else
- break;
- }
-
- if (sw_if_index_set == 0)
- {
- errmsg ("missing interface name or sw_if_index");
- return -99;
- }
-
- if (entry_set == 0)
- {
- errmsg ("missing entry ");
- return -99;
- }
-
- if (tc_set == 0)
- {
- errmsg ("missing traffic class ");
- return -99;
- }
-
- if (queue_set == 0)
- {
- errmsg ("missing queue ");
- return -99;
- }
-
- M (SW_INTERFACE_SET_DPDK_HQOS_TCTBL, sw_interface_set_dpdk_hqos_tctbl);
-
- mp->sw_if_index = ntohl (sw_if_index);
- mp->entry = ntohl (entry);
- mp->tc = ntohl (tc);
- mp->queue = ntohl (queue);
-
- S;
- W;
- /* NOTREACHED */
- return 0;
-}
-
-#include <dpdk/api/dpdk.api_test.c>