From: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
To: Shahaf Shuler <shahafs@mellanox.com>,
ferruh.yigit@intel.com, jingjing.wu@intel.com
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2 04/10] app/testpmd: convert to new Ethdev Tx offloads API
Date: Fri, 5 Jan 2018 19:11:05 +0100 [thread overview]
Message-ID: <c1553442-e24a-0abd-f5f2-99b603aaf916@caviumnetworks.com> (raw)
In-Reply-To: <9dec91975cdd1a59e3cac99d0fd4bd8672544a4f.1513082773.git.shahafs@mellanox.com>
-- Oryginal message --
> Ethdev Tx offloads API has changed since:
>
> commit cba7f53b717d ("ethdev: introduce Tx queue offloads API")
>
> Convert the application to use the new API.
>
> This patch mandates the port to be stopped when configure the Tx
> offloads. This is because the PMD must be aware to the offloads changes
> on the device and queue configuration.
>
> Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
> ---
> app/test-pmd/cmdline.c | 90 ++++++++++++++++++++++++++++++++++++++++++---
> app/test-pmd/config.c | 55 ++++++++++++++++++---------
> app/test-pmd/testpmd.c | 3 ++
> 3 files changed, 124 insertions(+), 24 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index d8c73a9..5812583 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -3439,7 +3439,14 @@ struct cmd_tx_vlan_set_result {
> {
> struct cmd_tx_vlan_set_result *res = parsed_result;
>
> + if (!port_is_stopped(res->port_id)) {
> + printf("Please stop port %d first\n", res->port_id);
> + return;
> + }
> +
> tx_vlan_set(res->port_id, res->vlan_id);
> +
> + cmd_reconfig_device_queue(res->port_id, 1, 1);
> }
>
> cmdline_parse_token_string_t cmd_tx_vlan_set_tx_vlan =
> @@ -3486,7 +3493,14 @@ struct cmd_tx_vlan_set_qinq_result {
> {
> struct cmd_tx_vlan_set_qinq_result *res = parsed_result;
>
> + if (!port_is_stopped(res->port_id)) {
> + printf("Please stop port %d first\n", res->port_id);
> + return;
> + }
> +
> tx_qinq_set(res->port_id, res->vlan_id, res->vlan_id_outer);
> +
> + cmd_reconfig_device_queue(res->port_id, 1, 1);
> }
>
> cmdline_parse_token_string_t cmd_tx_vlan_set_qinq_tx_vlan =
> @@ -3592,7 +3606,14 @@ struct cmd_tx_vlan_reset_result {
> {
> struct cmd_tx_vlan_reset_result *res = parsed_result;
>
> + if (!port_is_stopped(res->port_id)) {
> + printf("Please stop port %d first\n", res->port_id);
> + return;
> + }
> +
> tx_vlan_reset(res->port_id);
> +
> + cmd_reconfig_device_queue(res->port_id, 1, 1);
> }
>
> cmdline_parse_token_string_t cmd_tx_vlan_reset_tx_vlan =
> @@ -3685,11 +3706,16 @@ struct cmd_csum_result {
> struct cmd_csum_result *res = parsed_result;
> int hw = 0;
> uint16_t mask = 0;
> + uint64_t csum_offloads = 0;
>
> if (port_id_is_invalid(res->port_id, ENABLED_WARN)) {
> printf("invalid port %d\n", res->port_id);
> return;
> }
> + if (!port_is_stopped(res->port_id)) {
> + printf("Please stop port %d first\n", res->port_id);
> + return;
> + }
>
> if (!strcmp(res->mode, "set")) {
>
> @@ -3698,22 +3724,34 @@ struct cmd_csum_result {
>
> if (!strcmp(res->proto, "ip")) {
> mask = TESTPMD_TX_OFFLOAD_IP_CKSUM;
> + csum_offloads |= DEV_TX_OFFLOAD_IPV4_CKSUM;
> } else if (!strcmp(res->proto, "udp")) {
> mask = TESTPMD_TX_OFFLOAD_UDP_CKSUM;
> + csum_offloads |= DEV_TX_OFFLOAD_UDP_CKSUM;
> } else if (!strcmp(res->proto, "tcp")) {
> mask = TESTPMD_TX_OFFLOAD_TCP_CKSUM;
> + csum_offloads |= DEV_TX_OFFLOAD_TCP_CKSUM;
> } else if (!strcmp(res->proto, "sctp")) {
> mask = TESTPMD_TX_OFFLOAD_SCTP_CKSUM;
> + csum_offloads |= DEV_TX_OFFLOAD_SCTP_CKSUM;
> } else if (!strcmp(res->proto, "outer-ip")) {
> mask = TESTPMD_TX_OFFLOAD_OUTER_IP_CKSUM;
> + csum_offloads |= DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM;
> }
>
> - if (hw)
> + if (hw) {
> ports[res->port_id].tx_ol_flags |= mask;
> - else
> + ports[res->port_id].dev_conf.txmode.offloads |=
> + csum_offloads;
> + } else {
> ports[res->port_id].tx_ol_flags &= (~mask);
> + ports[res->port_id].dev_conf.txmode.offloads &=
> + (~csum_offloads);
> + }
> }
> csum_show(res->port_id);
> +
> + cmd_reconfig_device_queue(res->port_id, 1, 1);
> }
>
> cmdline_parse_token_string_t cmd_csum_csum =
> @@ -3837,15 +3875,24 @@ struct cmd_tso_set_result {
>
> if (port_id_is_invalid(res->port_id, ENABLED_WARN))
> return;
> + if (!port_is_stopped(res->port_id)) {
> + printf("Please stop port %d first\n", res->port_id);
> + return;
> + }
>
> if (!strcmp(res->mode, "set"))
> ports[res->port_id].tso_segsz = res->tso_segsz;
>
> - if (ports[res->port_id].tso_segsz == 0)
> + if (ports[res->port_id].tso_segsz == 0) {
> + ports[res->port_id].dev_conf.txmode.offloads &=
> + ~DEV_TX_OFFLOAD_TCP_TSO;
> printf("TSO for non-tunneled packets is disabled\n");
> - else
> + } else {
> + ports[res->port_id].dev_conf.txmode.offloads |=
> + DEV_TX_OFFLOAD_TCP_TSO;
> printf("TSO segment size for non-tunneled packets is %d\n",
> ports[res->port_id].tso_segsz);
> + }
>
> /* display warnings if configuration is not supported by the NIC */
> rte_eth_dev_info_get(res->port_id, &dev_info);
> @@ -3854,6 +3901,8 @@ struct cmd_tso_set_result {
> printf("Warning: TSO enabled but not "
> "supported by port %d\n", res->port_id);
> }
> +
> + cmd_reconfig_device_queue(res->port_id, 1, 1);
> }
>
> cmdline_parse_token_string_t cmd_tso_set_tso =
> @@ -3939,13 +3988,27 @@ struct cmd_tunnel_tso_set_result {
>
> if (port_id_is_invalid(res->port_id, ENABLED_WARN))
> return;
> + if (!port_is_stopped(res->port_id)) {
> + printf("Please stop port %d first\n", res->port_id);
> + return;
> + }
>
> if (!strcmp(res->mode, "set"))
> ports[res->port_id].tunnel_tso_segsz = res->tso_segsz;
>
> - if (ports[res->port_id].tunnel_tso_segsz == 0)
> + if (ports[res->port_id].tunnel_tso_segsz == 0) {
> + ports[res->port_id].dev_conf.txmode.offloads &=
> + ~(DEV_TX_OFFLOAD_VXLAN_TNL_TSO |
> + DEV_TX_OFFLOAD_GRE_TNL_TSO |
> + DEV_TX_OFFLOAD_IPIP_TNL_TSO |
> + DEV_TX_OFFLOAD_GENEVE_TNL_TSO);
> printf("TSO for tunneled packets is disabled\n");
> - else {
> + } else {
> + ports[res->port_id].dev_conf.txmode.offloads |=
> + (DEV_TX_OFFLOAD_VXLAN_TNL_TSO |
> + DEV_TX_OFFLOAD_GRE_TNL_TSO |
> + DEV_TX_OFFLOAD_IPIP_TNL_TSO |
> + DEV_TX_OFFLOAD_GENEVE_TNL_TSO);
> printf("TSO segment size for tunneled packets is %d\n",
> ports[res->port_id].tunnel_tso_segsz);
>
> @@ -3971,6 +4034,8 @@ struct cmd_tunnel_tso_set_result {
> printf("Warning: csum set outer-ip must be set to hw "
> "if outer L3 is IPv4; not necessary for IPv6\n");
> }
> +
> + cmd_reconfig_device_queue(res->port_id, 1, 1);
> }
>
> cmdline_parse_token_string_t cmd_tunnel_tso_set_tso =
> @@ -13012,8 +13077,13 @@ struct cmd_macsec_offload_on_result {
>
> if (port_id_is_invalid(port_id, ENABLED_WARN))
> return;
> + if (!port_is_stopped(port_id)) {
> + printf("Please stop port %d first\n", port_id);
> + return;
> + }
>
> ports[port_id].tx_ol_flags |= TESTPMD_TX_OFFLOAD_MACSEC;
> + ports[port_id].dev_conf.txmode.offloads |= DEV_TX_OFFLOAD_MACSEC_INSERT;
> #ifdef RTE_LIBRTE_IXGBE_PMD
> ret = rte_pmd_ixgbe_macsec_enable(port_id, en, rp);
> #endif
> @@ -13022,6 +13092,7 @@ struct cmd_macsec_offload_on_result {
>
> switch (ret) {
> case 0:
> + cmd_reconfig_device_queue(port_id, 1, 1);
> break;
> case -ENODEV:
> printf("invalid port_id %d\n", port_id);
> @@ -13096,14 +13167,21 @@ struct cmd_macsec_offload_off_result {
>
> if (port_id_is_invalid(port_id, ENABLED_WARN))
> return;
> + if (!port_is_stopped(port_id)) {
> + printf("Please stop port %d first\n", port_id);
> + return;
> + }
>
> ports[port_id].tx_ol_flags &= ~TESTPMD_TX_OFFLOAD_MACSEC;
> + ports[port_id].dev_conf.txmode.offloads &=
> + ~DEV_TX_OFFLOAD_MACSEC_INSERT;
> #ifdef RTE_LIBRTE_IXGBE_PMD
> ret = rte_pmd_ixgbe_macsec_disable(port_id);
> #endif
>
> switch (ret) {
> case 0:
> + cmd_reconfig_device_queue(port_id, 1, 1);
> break;
> case -ENODEV:
> printf("invalid port_id %d\n", port_id);
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index 2fdc051..ee7d083 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -616,8 +616,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_VLAN_INSERT) {
> printf("VLAN insert: ");
> - if (ports[port_id].tx_ol_flags &
> - TESTPMD_TX_OFFLOAD_INSERT_VLAN)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_VLAN_INSERT)
> printf("on\n");
> else
> printf("off\n");
> @@ -634,8 +634,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_QINQ_INSERT) {
> printf("Double VLANs insert: ");
> - if (ports[port_id].tx_ol_flags &
> - TESTPMD_TX_OFFLOAD_INSERT_QINQ)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_QINQ_INSERT)
> printf("on\n");
> else
> printf("off\n");
> @@ -643,7 +643,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_IPV4_CKSUM) {
> printf("TX IPv4 checksum: ");
> - if (ports[port_id].tx_ol_flags & TESTPMD_TX_OFFLOAD_IP_CKSUM)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_IPV4_CKSUM)
> printf("on\n");
> else
> printf("off\n");
> @@ -651,7 +652,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_UDP_CKSUM) {
> printf("TX UDP checksum: ");
> - if (ports[port_id].tx_ol_flags & TESTPMD_TX_OFFLOAD_UDP_CKSUM)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_UDP_CKSUM)
> printf("on\n");
> else
> printf("off\n");
> @@ -659,7 +661,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_TCP_CKSUM) {
> printf("TX TCP checksum: ");
> - if (ports[port_id].tx_ol_flags & TESTPMD_TX_OFFLOAD_TCP_CKSUM)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_TCP_CKSUM)
> printf("on\n");
> else
> printf("off\n");
> @@ -667,7 +670,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_SCTP_CKSUM) {
> printf("TX SCTP checksum: ");
> - if (ports[port_id].tx_ol_flags & TESTPMD_TX_OFFLOAD_SCTP_CKSUM)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_SCTP_CKSUM)
> printf("on\n");
> else
> printf("off\n");
> @@ -675,8 +679,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM) {
> printf("TX Outer IPv4 checksum: ");
> - if (ports[port_id].tx_ol_flags &
> - TESTPMD_TX_OFFLOAD_OUTER_IP_CKSUM)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM)
> printf("on\n");
> else
> printf("off\n");
> @@ -684,7 +688,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_TCP_TSO) {
> printf("TX TCP segmentation: ");
> - if (ports[port_id].tso_segsz != 0)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_TCP_TSO)
> printf("on\n");
> else
> printf("off\n");
> @@ -692,7 +697,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_UDP_TSO) {
> printf("TX UDP segmentation: ");
> - if (ports[port_id].tso_segsz != 0)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_UDP_TSO)
> printf("on\n");
> else
> printf("off\n");
> @@ -700,7 +706,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_VXLAN_TNL_TSO) {
> printf("TSO for VXLAN tunnel packet: ");
> - if (ports[port_id].tunnel_tso_segsz)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_VXLAN_TNL_TSO)
> printf("on\n");
> else
> printf("off\n");
> @@ -708,7 +715,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_GRE_TNL_TSO) {
> printf("TSO for GRE tunnel packet: ");
> - if (ports[port_id].tunnel_tso_segsz)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_GRE_TNL_TSO)
> printf("on\n");
> else
> printf("off\n");
> @@ -716,7 +724,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_IPIP_TNL_TSO) {
> printf("TSO for IPIP tunnel packet: ");
> - if (ports[port_id].tunnel_tso_segsz)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_IPIP_TNL_TSO)
> printf("on\n");
> else
> printf("off\n");
> @@ -724,7 +733,8 @@ struct rss_type_info {
>
> if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_GENEVE_TNL_TSO) {
> printf("TSO for GENEVE tunnel packet: ");
> - if (ports[port_id].tunnel_tso_segsz)
> + if (ports[port_id].dev_conf.txmode.offloads &
> + DEV_TX_OFFLOAD_GENEVE_TNL_TSO)
> printf("on\n");
> else
> printf("off\n");
> @@ -1703,8 +1713,10 @@ struct igb_ring_desc_16_bytes {
> tx_conf->tx_thresh.pthresh,
> tx_conf->tx_thresh.hthresh,
> tx_conf->tx_thresh.wthresh);
> - printf(" TX RS bit threshold=%d - TXQ flags=0x%"PRIx32"\n",
> - tx_conf->tx_rs_thresh, tx_conf->txq_flags);
> + printf(" TX RS bit threshold=%d - TXQ flags=0x%"PRIx32""
> + " - TXQ offloads=0x%"PRIx64"\n",
> + tx_conf->tx_rs_thresh, tx_conf->txq_flags,
> + tx_conf->offloads);
> }
> }
>
> @@ -2782,6 +2794,7 @@ struct igb_ring_desc_16_bytes {
> tx_vlan_set(portid_t port_id, uint16_t vlan_id)
> {
> int vlan_offload;
> +
> if (port_id_is_invalid(port_id, ENABLED_WARN))
> return;
> if (vlan_id_is_invalid(vlan_id))
> @@ -2795,6 +2808,7 @@ struct igb_ring_desc_16_bytes {
>
> tx_vlan_reset(port_id);
> ports[port_id].tx_ol_flags |= TESTPMD_TX_OFFLOAD_INSERT_VLAN;
> + ports[port_id].dev_conf.txmode.offloads |= DEV_TX_OFFLOAD_VLAN_INSERT;
> ports[port_id].tx_vlan_id = vlan_id;
> }
>
> @@ -2802,6 +2816,7 @@ struct igb_ring_desc_16_bytes {
> tx_qinq_set(portid_t port_id, uint16_t vlan_id, uint16_t vlan_id_outer)
> {
> int vlan_offload;
> +
> if (port_id_is_invalid(port_id, ENABLED_WARN))
> return;
> if (vlan_id_is_invalid(vlan_id))
> @@ -2817,6 +2832,7 @@ struct igb_ring_desc_16_bytes {
>
> tx_vlan_reset(port_id);
> ports[port_id].tx_ol_flags |= TESTPMD_TX_OFFLOAD_INSERT_QINQ;
> + ports[port_id].dev_conf.txmode.offloads |= DEV_TX_OFFLOAD_QINQ_INSERT;
> ports[port_id].tx_vlan_id = vlan_id;
> ports[port_id].tx_vlan_id_outer = vlan_id_outer;
> }
> @@ -2828,6 +2844,9 @@ struct igb_ring_desc_16_bytes {
> return;
> ports[port_id].tx_ol_flags &= ~(TESTPMD_TX_OFFLOAD_INSERT_VLAN |
> TESTPMD_TX_OFFLOAD_INSERT_QINQ);
> + ports[port_id].dev_conf.txmode.offloads &=
> + ~(DEV_TX_OFFLOAD_VLAN_INSERT |
> + DEV_TX_OFFLOAD_QINQ_INSERT);
> ports[port_id].tx_vlan_id = 0;
> ports[port_id].tx_vlan_id_outer = 0;
> }
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 77154ef..0087438 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -1498,6 +1498,9 @@ static int eth_event_callback(portid_t port_id,
> }
> if (port->need_reconfig_queues > 0) {
> port->need_reconfig_queues = 0;
> + port->tx_conf.txq_flags = ETH_TXQ_FLAGS_IGNORE;
> + /* Apply Tx offloads configuration */
> + port->tx_conf.offloads = port->dev_conf.txmode.offloads;
FAST_FREE flag got lost during conversion.
Per-queue configuration flags are initialized with PMD-specific default
values in rxtx_port_config:
rxtx_port_config(struct rte_port *port)
{
port->rx_conf = port->dev_info.default_rxconf;
port->tx_conf = port->dev_info.default_txconf;
...
but port->dev_conf.txmode is taken from global variable txmode, not from
PMD. See in init_config():
/* Apply default Tx configuration for all ports */
port->dev_conf.txmode = tx_mode;
port->dev_conf.rxmode = rx_mode;
So the configuration will not be consistent, i.e. different flags in
tx_queue_setup() and different in dev_configure().
If the intention is to keep defaults from PMD, let's fix this...
If not, please apply FAST_FREE flag as in example patch v3, e.g:
+ rte_eth_dev_info_get(portid, &dev_info);
+ if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
+ local_port_conf.txmode.offloads |=
+ DEV_TX_OFFLOAD_MBUF_FAST_FREE;
> /* setup tx queues */
> for (qi = 0; qi < nb_txq; qi++) {
> if ((numa_support) &&
next prev parent reply other threads:[~2018-01-05 18:11 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-23 12:07 [dpdk-dev] [PATCH 0/5] convert testpmd to new ethdev " Shahaf Shuler
2017-11-23 12:08 ` [dpdk-dev] [PATCH 1/5] app/testpmd: convert to new Ethdev " Shahaf Shuler
2017-12-04 22:31 ` Ferruh Yigit
2017-12-05 6:39 ` Shahaf Shuler
2017-12-06 22:57 ` Ferruh Yigit
2017-12-07 7:55 ` Shahaf Shuler
2017-11-23 12:08 ` [dpdk-dev] [PATCH 2/5] app/testpmd: remove txqflags Shahaf Shuler
2017-12-04 22:31 ` Ferruh Yigit
2017-12-05 6:48 ` Shahaf Shuler
2017-12-06 23:04 ` Ferruh Yigit
2017-12-07 7:56 ` Shahaf Shuler
2017-12-12 12:45 ` Maciej Czekaj
2017-12-13 7:25 ` Shahaf Shuler
2017-11-23 12:08 ` [dpdk-dev] [PATCH 3/5] app/testpmd: add command line option for multiseg Shahaf Shuler
2017-11-23 12:08 ` [dpdk-dev] [PATCH 4/5] app/testpmd: add command line option for mbuf fast free Shahaf Shuler
2017-11-23 12:08 ` [dpdk-dev] [PATCH 5/5] app/testpmd: enforce offloads caps Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 00/10] convert testpmd to new ethdev offloads API Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 01/10] app/testpmd: fix port configuration print Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 02/10] app/testpmd: convert to new Ethdev Rx offloads API Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 03/10] app/testpmd: support check of single port stop Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 04/10] app/testpmd: convert to new Ethdev Tx offloads API Shahaf Shuler
2018-01-05 18:11 ` Maciej Czekaj [this message]
2018-01-07 15:24 ` Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 05/10] app/testpmd: fix flowgen forwarding ol flags Shahaf Shuler
2018-01-09 5:32 ` Lu, Wenzhuo
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 06/10] app/testpmd: cleanup internal Tx offloads flags field Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 07/10] app/testpmd: add command line option for Tx offloads Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 08/10] app/testpmd: remove txqflags Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 09/10] app/testpmd: enforce offloads caps Shahaf Shuler
2017-12-12 12:52 ` [dpdk-dev] [PATCH v2 10/10] app/testpmd: fix on the flight VLAN configuration Shahaf Shuler
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 00/10] convert testpmd to new ethdev offloads API Shahaf Shuler
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 01/10] app/testpmd: fix port configuration print Shahaf Shuler
2018-01-05 3:33 ` Lu, Wenzhuo
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 02/10] app/testpmd: convert to new Ethdev Rx offloads API Shahaf Shuler
2018-01-09 3:05 ` Lu, Wenzhuo
2018-01-19 19:30 ` Patil, Harish
2018-01-20 19:29 ` Shahaf Shuler
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 03/10] app/testpmd: support check of single port stop Shahaf Shuler
2018-01-09 3:20 ` Lu, Wenzhuo
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 04/10] app/testpmd: convert to new Ethdev Tx offloads API Shahaf Shuler
2018-01-09 5:27 ` Lu, Wenzhuo
2018-01-09 6:47 ` Shahaf Shuler
2018-01-09 7:13 ` Lu, Wenzhuo
2018-01-09 10:02 ` Shahaf Shuler
2018-01-09 11:37 ` Lu, Wenzhuo
2018-01-09 12:14 ` Ananyev, Konstantin
2018-01-10 0:37 ` Lu, Wenzhuo
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 05/10] app/testpmd: fix flowgen forwarding ol flags Shahaf Shuler
2018-01-09 5:35 ` Lu, Wenzhuo
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 06/10] app/testpmd: cleanup internal Tx offloads flags field Shahaf Shuler
2018-01-09 6:30 ` Lu, Wenzhuo
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 07/10] app/testpmd: add command line option for Tx offloads Shahaf Shuler
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 08/10] app/testpmd: remove txqflags Shahaf Shuler
2018-01-09 7:17 ` Lu, Wenzhuo
2018-01-09 10:07 ` Shahaf Shuler
2018-01-09 11:51 ` Lu, Wenzhuo
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 09/10] app/testpmd: enforce offloads caps Shahaf Shuler
2018-01-09 7:48 ` Lu, Wenzhuo
2017-12-26 9:44 ` [dpdk-dev] [PATCH v3 10/10] app/testpmd: fix on the flight VLAN configuration Shahaf Shuler
2018-01-09 8:05 ` Lu, Wenzhuo
2018-01-09 10:03 ` Shahaf Shuler
2018-01-09 11:44 ` Lu, Wenzhuo
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 00/11] convert testpmd to new ethdev offloads API Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 01/11] app/testpmd: fix port configuration print Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 02/11] app/testpmd: convert to new Ethdev Rx offloads API Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 03/11] app/testpmd: support check of single port stop Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 04/11] app/testpmd: convert to new Ethdev Tx offloads API Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 05/11] app/testpmd: fix flowgen forwarding ol flags Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 06/11] app/testpmd: cleanup internal Tx offloads flags field Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 07/11] app/testpmd: add command line option for Tx offloads Shahaf Shuler
2018-01-15 3:06 ` Lu, Wenzhuo
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 08/11] app/testpmd: remove txqflags Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 09/11] app/testpmd: enforce offloads caps Shahaf Shuler
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 10/11] app/testpmd: adjust on the flight VLAN configuration Shahaf Shuler
2018-01-15 3:30 ` Lu, Wenzhuo
2018-01-10 9:09 ` [dpdk-dev] [PATCH v4 11/11] app/testpmd: enable fast free Tx offload by default Shahaf Shuler
2018-01-15 3:33 ` Lu, Wenzhuo
2018-01-15 10:00 ` [dpdk-dev] [PATCH v4 00/11] convert testpmd to new ethdev offloads API Thomas Monjalon
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=c1553442-e24a-0abd-f5f2-99b603aaf916@caviumnetworks.com \
--to=maciej.czekaj@caviumnetworks.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=jingjing.wu@intel.com \
--cc=shahafs@mellanox.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).