From: Radu Nicolau <radu.nicolau@intel.com>
To: dev@dpdk.org
Cc: sergio.gonzalez.monroy@intel.com, Radu Nicolau <radu.nicolau@intel.com>
Subject: [dpdk-dev] [PATCH] ipsec_secgw: added cmdline option for jumbo frames and switched to the new offload API.
Date: Wed, 18 Oct 2017 12:55:08 +0100 [thread overview]
Message-ID: <1508327708-15090-1-git-send-email-radu.nicolau@intel.com> (raw)
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
---
doc/guides/sample_app_ug/ipsec_secgw.rst | 6 +++++-
examples/ipsec-secgw/ipsec-secgw.c | 32 +++++++++++++++++++++++++-------
2 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index b675cba..dd9bad2 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -119,7 +119,7 @@ The application has a number of command line options::
./build/ipsec-secgw [EAL options] --
- -p PORTMASK -P -u PORTMASK
+ -p PORTMASK -P -u PORTMASK -j FRAMESIZE
--config (port,queue,lcore)[,(port,queue,lcore]
--single-sa SAIDX
-f CONFIG_FILE_PATH
@@ -135,6 +135,10 @@ Where:
* ``-u PORTMASK``: hexadecimal bitmask of unprotected ports
+* ``-j FRAMESIZE``: *optional*. Enables jumbo frames with the maximum size
+ specified as FRAMESIZE. If FRAMESIZE is missing or invalid a default value
+ of 9000 is used.
+
* ``--config (port,queue,lcore)[,(port,queue,lcore)]``: determines which queues
from which ports are mapped to which cores.
diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
index d451b3d..a7e4bd1 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -161,6 +161,7 @@ static int32_t numa_on = 1; /**< NUMA is enabled by default. */
static uint32_t nb_lcores;
static uint32_t single_sa;
static uint32_t single_sa_idx;
+static uint32_t frame_size;
struct lcore_rx_queue {
uint16_t port_id;
@@ -204,11 +205,9 @@ static struct rte_eth_conf port_conf = {
.mq_mode = ETH_MQ_RX_RSS,
.max_rx_pkt_len = ETHER_MAX_LEN,
.split_hdr_size = 0,
- .header_split = 0, /**< Header Split disabled */
- .hw_ip_checksum = 1, /**< IP checksum offload enabled */
- .hw_vlan_filter = 0, /**< VLAN filtering disabled */
- .jumbo_frame = 0, /**< Jumbo Frame Support disabled */
- .hw_strip_crc = 1, /**< CRC stripped by hardware */
+ .offloads = DEV_RX_OFFLOAD_CHECKSUM |
+ DEV_RX_OFFLOAD_CRC_STRIP,
+ .ignore_offload_bitfield = 1,
},
.rx_adv_conf = {
.rss_conf = {
@@ -983,7 +982,7 @@ parse_args(int32_t argc, char **argv)
argvopt = argv;
- while ((opt = getopt_long(argc, argvopt, "p:Pu:f:",
+ while ((opt = getopt_long(argc, argvopt, "p:Pu:f:j:",
lgopts, &option_index)) != EOF) {
switch (opt) {
@@ -1022,6 +1021,17 @@ parse_args(int32_t argc, char **argv)
}
f_present = 1;
break;
+ case 'j':
+ {
+ int32_t size = parse_decimal(optarg);
+ if (size <= 0) {
+ printf("Invalid jumbo frame size\n");
+ frame_size = 9000;
+ } else {
+ frame_size = size;
+ }
+ }
+ printf("Enabled jumbo frames size %d\n", frame_size);
case 0:
if (parse_args_long_options(lgopts, option_index)) {
print_usage(prgname);
@@ -1359,6 +1369,11 @@ port_init(uint16_t portid)
printf("Creating queues: nb_rx_queue=%d nb_tx_queue=%u...\n",
nb_rx_queue, nb_tx_queue);
+ if (frame_size) {
+ port_conf.rxmode.max_rx_pkt_len = frame_size;
+ port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;
+ }
+
ret = rte_eth_dev_configure(portid, nb_rx_queue, nb_tx_queue,
&port_conf);
if (ret < 0)
@@ -1423,11 +1438,14 @@ static void
pool_init(struct socket_ctx *ctx, int32_t socket_id, uint32_t nb_mbuf)
{
char s[64];
+ uint32_t buff_size = frame_size ? (frame_size + RTE_PKTMBUF_HEADROOM) :
+ RTE_MBUF_DEFAULT_BUF_SIZE;
+
snprintf(s, sizeof(s), "mbuf_pool_%d", socket_id);
ctx->mbuf_pool = rte_pktmbuf_pool_create(s, nb_mbuf,
MEMPOOL_CACHE_SIZE, ipsec_metadata_size(),
- RTE_MBUF_DEFAULT_BUF_SIZE,
+ buff_size,
socket_id);
if (ctx->mbuf_pool == NULL)
rte_exit(EXIT_FAILURE, "Cannot init mbuf pool on socket %d\n",
--
2.7.5
next reply other threads:[~2017-10-18 11:59 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-18 11:55 Radu Nicolau [this message]
2017-10-19 12:33 ` De Lara Guarch, Pablo
2017-10-19 15:26 ` [dpdk-dev] [PATCH v2] examples/ipsec_secgw: support jumbo frames Radu Nicolau
2017-10-19 15:40 ` De Lara Guarch, Pablo
2017-10-19 15:42 ` Nicolau, Radu
2017-10-19 15:58 ` [dpdk-dev] [PATCH v3] " Radu Nicolau
2017-10-19 16:15 ` Aviad Yehezkel
2017-10-20 9:28 ` [dpdk-dev] [PATCH v4] examples/ipsec_secgw: added jumbo frames support Radu Nicolau
2017-10-20 9:30 ` [dpdk-dev] [PATCH v4 1/2] examples/ipsec_secgw: switched to new offload API Radu Nicolau
2017-10-20 9:30 ` [dpdk-dev] [PATCH v4 2/2] examples/ipsec_secgw: added jumbo frames support Radu Nicolau
2017-10-20 10:28 ` De Lara Guarch, Pablo
2017-10-20 10:27 ` [dpdk-dev] [PATCH v4 1/2] examples/ipsec_secgw: switched to new offload API De Lara Guarch, Pablo
2017-10-20 15:52 ` De Lara Guarch, Pablo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1508327708-15090-1-git-send-email-radu.nicolau@intel.com \
--to=radu.nicolau@intel.com \
--cc=dev@dpdk.org \
--cc=sergio.gonzalez.monroy@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).