Skip to content

Commit

Permalink
Merge "DPDK: command line arguments."
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Aug 20, 2015
2 parents 612aaed + 36d4fbd commit afdbdf5
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 10 deletions.
3 changes: 0 additions & 3 deletions dp-core/vr_bridge.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ struct vr_bridge_entry {
unsigned char be_pack[VR_BRIDGE_ENTRY_PACK];
} __attribute__((packed));

#define VR_DEF_BRIDGE_ENTRIES (256 * 1024)
#define VR_DEF_BRIDGE_OENTRIES (4 * 1024)

unsigned int vr_bridge_entries = VR_DEF_BRIDGE_ENTRIES;
unsigned int vr_bridge_oentries = VR_DEF_BRIDGE_OENTRIES;
static vr_htable_t vn_rtable;
Expand Down
2 changes: 0 additions & 2 deletions dp-core/vr_flow.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,8 @@
#include "vr_ip_mtrie.h"

#define VR_NUM_FLOW_TABLES 1
#define VR_DEF_FLOW_ENTRIES (512 * 1024)

#define VR_NUM_OFLOW_TABLES 1
#define VR_DEF_OFLOW_ENTRIES (8 * 1024)

#define VR_FLOW_ENTRIES_PER_BUCKET 4U

Expand Down
111 changes: 106 additions & 5 deletions dpdk/dpdk_vrouter.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "vr_dpdk.h"
#include "vr_dpdk_virtio.h"
#include "vr_uvhost.h"
#include "vr_bridge.h"

#include <getopt.h>
#include <signal.h>
Expand All @@ -30,6 +31,13 @@
#include <rte_kni.h>
#include <rte_timer.h>

/* dp-core parameters */
extern unsigned int vr_bridge_entries;
extern unsigned int vr_bridge_oentries;
extern unsigned int vr_mpls_labels;
extern unsigned int vr_nexthops;
extern unsigned int vr_vrfs;

static int no_daemon_set;
extern char *ContrailBuildInfo;

Expand Down Expand Up @@ -288,6 +296,17 @@ dpdk_argv_update(void)
if (vr_dpdk.vlan_tag != VLAN_ID_INVALID) {
RTE_LOG(INFO, VROUTER, "Using VLAN TCI: %" PRIu16 "\n", vr_dpdk.vlan_tag);
}
RTE_LOG(INFO, VROUTER, "Bridge Table limit: %" PRIu32 "\t"
"Bridge Table overflow limit: %" PRIu32 "\n",
vr_bridge_entries, vr_bridge_oentries);
RTE_LOG(INFO, VROUTER, "Flow Table limit: %" PRIu32 "\t"
"Flow Table overflow limit: %" PRIu32 "\n",
vr_flow_entries, vr_oflow_entries);
RTE_LOG(INFO, VROUTER, "MPLS labels limit: %" PRIu32 "\t"
"Nexthops limit: %" PRIu32 "\n",
vr_mpls_labels, vr_nexthops);
RTE_LOG(INFO, VROUTER, "VRF tables limit: %" PRIu32 "\n",
vr_vrfs);
RTE_LOG(INFO, VROUTER, "EAL arguments:\n");
for (i = 1; i < dpdk_argc - 1; i += 2) {
RTE_LOG(INFO, VROUTER, " %12s \"%s\"\n", dpdk_argv[i], dpdk_argv[i + 1]);
Expand Down Expand Up @@ -496,6 +515,13 @@ enum vr_opt_index {
VLAN_TCI_OPT_INDEX,
VLAN_NAME_OPT_INDEX,
VDEV_OPT_INDEX,
BRIDGE_ENTRIES_OPT_INDEX,
BRIDGE_OENTRIES_OPT_INDEX,
FLOW_ENTRIES_OPT_INDEX,
OFLOW_ENTRIES_OPT_INDEX,
MPLS_LABELS_OPT_INDEX,
NEXTHOPS_OPT_INDEX,
VRFS_OPT_INDEX,
MAX_OPT_INDEX
};

Expand All @@ -512,6 +538,20 @@ static struct option long_options[] = {
NULL, 0},
[VDEV_OPT_INDEX] = {"vdev", required_argument,
NULL, 0},
[BRIDGE_ENTRIES_OPT_INDEX] = {"vr_bridge_entries", required_argument,
NULL, 0},
[BRIDGE_OENTRIES_OPT_INDEX] = {"vr_bridge_oentries", required_argument,
NULL, 0},
[FLOW_ENTRIES_OPT_INDEX] = {"vr_flow_entries", required_argument,
NULL, 0},
[OFLOW_ENTRIES_OPT_INDEX] = {"vr_oflow_entries", required_argument,
NULL, 0},
[MPLS_LABELS_OPT_INDEX] = {"vr_mpls_labels", required_argument,
NULL, 0},
[NEXTHOPS_OPT_INDEX] = {"vr_nexthops", required_argument,
NULL, 0},
[VRFS_OPT_INDEX] = {"vr_vrfs", required_argument,
NULL, 0},
[MAX_OPT_INDEX] = {NULL, 0,
NULL, 0},
};
Expand All @@ -521,15 +561,28 @@ Usage(void)
{
printf(
"Usage: contrail-vrouter-dpdk [--no-daemon] [--help] [--version]\n"
" [--vlan_tci <tci>] [--vlan_fwd_intf_name <name>] [--vdev <config>]\n"
" [--vdev <config>]\n"
" [--vlan_tci <tci>] [--vlan_fwd_intf_name <name>]\n"
" [--vr_bridge_entries <number>] [--vr_bridge_oentries <number>]\n"
" [--vr_flow_entries <number>] [--vr_oflow_entries <number>]\n"
" [--vr_mpls_labels <number>] [--vr_nexthops <number>]\n"
" [--vr_vrfs <number>]\n"
"\n"
"--no-daemon Do not demonize the vRouter\n"
"--help Prints this help message\n"
"--version Prints build information\n"
"\n"
"--vlan_tci <tci> VLAN tag control information\n"
"--vlan_fwd_intf_name <name> VLAN forwarding interface name\n"
"--vdev <config> Virtual device configuration\n"
"--vdev <config> Virtual device configuration\n"
"--vlan_tci <tci> VLAN tag control information\n"
"--vlan_fwd_intf_name <name> VLAN forwarding interface name\n"
"\n"
"--vr_bridge_entries <number> Bridge Table limit\n"
"--vr_bridge_oentries <number> Bridge Table overflow limit\n"
"--vr_flow_entries <number> Flow Table limit\n"
"--vr_oflow_entries <number> Flow Table overflow limit\n"
"--vr_mpls_labels <number> MPLS labels limit\n"
"--vr_nexthops <number> Nexthop limit\n"
"--vr_vrfs <number> VRF tables limit\n"
);

exit(1);
Expand Down Expand Up @@ -563,7 +616,6 @@ parse_long_opts(int opt_flow_index, char *opt_arg)
* vr_dpdk_lcore_vroute(), dpdk_vlan_forwarding_if_add().
*/
case VLAN_TCI_OPT_INDEX:
errno = 0;
vr_dpdk.vlan_tag = (uint16_t)strtol(optarg, NULL, 0);
if (errno != 0) {
vr_dpdk.vlan_tag = VLAN_ID_INVALID;
Expand Down Expand Up @@ -591,6 +643,55 @@ parse_long_opts(int opt_flow_index, char *opt_arg)
}
break;

case BRIDGE_ENTRIES_OPT_INDEX:
vr_bridge_entries = (unsigned int)strtoul(optarg, NULL, 0);
if (errno != 0) {
vr_bridge_entries = VR_DEF_BRIDGE_ENTRIES;
}
break;

case BRIDGE_OENTRIES_OPT_INDEX:
vr_bridge_oentries = (unsigned int)strtoul(optarg, NULL, 0);
if (errno != 0) {
vr_bridge_oentries = VR_DEF_BRIDGE_OENTRIES;
}
break;

case FLOW_ENTRIES_OPT_INDEX:
vr_flow_entries = (unsigned int)strtoul(optarg, NULL, 0);
if (errno != 0) {
vr_flow_entries = VR_DEF_FLOW_ENTRIES;
}
break;

case OFLOW_ENTRIES_OPT_INDEX:
vr_oflow_entries = (unsigned int)strtoul(optarg, NULL, 0);
if (errno != 0) {
vr_oflow_entries = VR_DEF_OFLOW_ENTRIES;
}
break;

case MPLS_LABELS_OPT_INDEX:
vr_mpls_labels = (unsigned int)strtoul(optarg, NULL, 0);
if (errno != 0) {
vr_mpls_labels = VR_DEF_LABELS;
}
break;

case NEXTHOPS_OPT_INDEX:
vr_nexthops = (unsigned int)strtoul(optarg, NULL, 0);
if (errno != 0) {
vr_nexthops = VR_DEF_NEXTHOPS;
}
break;

case VRFS_OPT_INDEX:
vr_vrfs = (unsigned int)strtoul(optarg, NULL, 0);
if (errno != 0) {
vr_vrfs = VR_DEF_VRFS;
}
break;

case HELP_OPT_INDEX:
default:
Usage();
Expand Down
3 changes: 3 additions & 0 deletions include/vr_bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
#include "vr_defs.h"
#include "vrouter.h"

#define VR_DEF_BRIDGE_ENTRIES (256 * 1024)
#define VR_DEF_BRIDGE_OENTRIES (4 * 1024)

#define VR_MAC_COPY(dst, src) { \
((uint16_t *)(dst))[0] = ((uint16_t *)(src))[0]; \
((uint16_t *)(dst))[1] = ((uint16_t *)(src))[1]; \
Expand Down
4 changes: 4 additions & 0 deletions include/vr_flow.h
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,10 @@ struct vr_flow_entry {

#define VR_DNS_SERVER_PORT htons(53)

#define VR_DEF_FLOW_ENTRIES (512 * 1024)

#define VR_DEF_OFLOW_ENTRIES (8 * 1024)

extern unsigned int vr_flow_entries, vr_oflow_entries;

#define VR_FLOW_TABLE_SIZE (vr_flow_entries * \
Expand Down

0 comments on commit afdbdf5

Please sign in to comment.