DPDK patches and discussions
 help / color / mirror / Atom feed
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) &&

  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).