DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Ouyang, Changchun" <changchun.ouyang@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [RFC 06/10] virtio: use software vlan stripping
Date: Tue, 26 Aug 2014 08:37:11 +0000	[thread overview]
Message-ID: <F52918179C57134FAEC9EA62FA2F96251183B285@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <20140826020848.386074683@networkplumber.org>

Hi Stephen,

Would you please describe the use scenario for the front end rx vlan strip and tx vlan insertion?
In our current implementation, backend will strip vlan tag for RX, and insert vlan tag for TX.
  
Thanks
Changchun

> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Tuesday, August 26, 2014 10:08 AM
> To: Ouyang, Changchun
> Cc: dev@dpdk.org; Stephen Hemminger
> Subject: [RFC 06/10] virtio: use software vlan stripping
> 
> Implement VLAN stripping in software. This allows application to be device
> independent.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> 
> 
> ---
>  lib/librte_pmd_virtio/virtio_ethdev.c |    2 ++
>  lib/librte_pmd_virtio/virtio_pci.h    |    1 +
>  lib/librte_pmd_virtio/virtio_rxtx.c   |   20 ++++++++++++++++++--
>  3 files changed, 21 insertions(+), 2 deletions(-)
> 
> --- a/lib/librte_pmd_virtio/virtio_ethdev.c	2014-08-25
> 19:00:07.574537243 -0700
> +++ b/lib/librte_pmd_virtio/virtio_ethdev.c	2014-08-25
> 19:00:07.574537243 -0700
> @@ -976,6 +976,8 @@ virtio_dev_configure(struct rte_eth_dev
>  		return (-EINVAL);
>  	}
> 
> +	hw->vlan_strip = rxmode->hw_vlan_strip;
> +
>  	ret = vtpci_irq_config(hw, 0);
>  	if (ret != 0)
>  		PMD_DRV_LOG(ERR, "failed to set config vector");
> --- a/lib/librte_pmd_virtio/virtio_pci.h	2014-08-25 19:00:07.574537243 -0700
> +++ b/lib/librte_pmd_virtio/virtio_pci.h	2014-08-25
> 19:00:07.574537243 -0700
> @@ -168,6 +168,7 @@ struct virtio_hw {
>  	uint32_t    max_tx_queues;
>  	uint32_t    max_rx_queues;
>  	uint16_t    vtnet_hdr_size;
> +	uint8_t	    vlan_strip;
>  	uint8_t	    use_msix;
>  	uint8_t     mac_addr[ETHER_ADDR_LEN];
>  };
> --- a/lib/librte_pmd_virtio/virtio_rxtx.c	2014-08-25 19:00:07.574537243 -0700
> +++ b/lib/librte_pmd_virtio/virtio_rxtx.c	2014-08-25
> 19:00:07.574537243 -0700
> @@ -49,6 +49,7 @@
>  #include <rte_prefetch.h>
>  #include <rte_string_fns.h>
>  #include <rte_errno.h>
> +#include <rte_byteorder.h>
> 
>  #include "virtio_logs.h"
>  #include "virtio_ethdev.h"
> @@ -406,8 +407,8 @@ virtio_dev_tx_queue_setup(struct rte_eth
> 
>  	PMD_INIT_FUNC_TRACE();
> 
> -	if ((tx_conf->txq_flags & ETH_TXQ_FLAGS_NOOFFLOADS)
> -	    != ETH_TXQ_FLAGS_NOOFFLOADS) {
> +	if ((tx_conf->txq_flags & ETH_TXQ_FLAGS_NOXSUMS)
> +	    != ETH_TXQ_FLAGS_NOXSUMS) {
>  		PMD_INIT_LOG(ERR, "TX checksum offload not
> supported\n");
>  		return -EINVAL;
>  	}
> @@ -444,6 +445,7 @@ uint16_t
>  virtio_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t
> nb_pkts)  {
>  	struct virtqueue *rxvq = rx_queue;
> +	struct virtio_hw *hw = rxvq->hw;
>  	struct rte_mbuf *rxm, *new_mbuf;
>  	uint16_t nb_used, num, nb_rx = 0;
>  	uint32_t len[VIRTIO_MBUF_BURST_SZ];
> @@ -487,6 +489,9 @@ virtio_recv_pkts(void *rx_queue, struct
>  		rxm->pkt.pkt_len = (uint32_t)(len[i] - hdr_size);
>  		rxm->pkt.data_len = (uint16_t)(len[i] - hdr_size);
> 
> +		if (hw->vlan_strip)
> +			rte_vlan_strip(rxm);
> +
>  		VIRTIO_DUMP_PACKET(rxm, rxm->pkt.data_len);
> 
>  		rx_pkts[nb_rx++] = rxm;
> @@ -711,6 +716,17 @@ virtio_xmit_pkts(void *tx_queue, struct
> 
>  		if (tx_pkts[nb_tx]->pkt.nb_segs <= txvq->vq_free_cnt) {
>  			txm = tx_pkts[nb_tx];
> +
> +			/* Do VLAN tag insertion */
> +			if (txm->ol_flags & PKT_TX_VLAN_PKT) {
> +				error = rte_vlan_insert(txm);
> +				if (unlikely(error)) {
> +					rte_pktmbuf_free(txm);
> +					++nb_tx;
> +					continue;
> +				}
> +			}
> +
>  			/* Enqueue Packet buffers */
>  			error = virtqueue_enqueue_xmit(txvq, txm);
>  			if (unlikely(error)) {


  reply	other threads:[~2014-08-26  8:33 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-26  2:07 [dpdk-dev] [RFC 00/10] virtio patches Stephen Hemminger
2014-08-26  2:07 ` [dpdk-dev] [RFC 01/10] virtio: rearrange resource initialization Stephen Hemminger
2014-08-26  7:14   ` Ouyang, Changchun
2014-08-26  2:07 ` [dpdk-dev] [RFC 02/10] virtio: use weak barriers Stephen Hemminger
2014-08-26  2:07 ` [dpdk-dev] [RFC 03/10] virtio: allow starting with link down Stephen Hemminger
2014-08-26  2:07 ` [dpdk-dev] [RFC 04/10] virtio: add support for Link State interrupt Stephen Hemminger
2014-08-26  2:07 ` [dpdk-dev] [RFC 05/10] ether: add soft vlan encap/decap functions Stephen Hemminger
2014-08-26  2:07 ` [dpdk-dev] [RFC 06/10] virtio: use software vlan stripping Stephen Hemminger
2014-08-26  8:37   ` Ouyang, Changchun [this message]
2014-08-26 16:24     ` Stephen Hemminger
2014-08-27  5:42       ` Ouyang, Changchun
2014-08-27 18:04         ` Stephen Hemminger
2014-08-26  2:07 ` [dpdk-dev] [RFC 07/10] virtio: remove unnecessary adapter structure Stephen Hemminger
2014-08-26  6:43   ` Ouyang, Changchun
2014-08-26  2:07 ` [dpdk-dev] [RFC 08/10] virtio: remove redundant vq_alignment Stephen Hemminger
2014-08-26  8:41   ` Ouyang, Changchun
2014-08-26  2:07 ` [dpdk-dev] [RFC 09/10] virtio: fix how states are handled during initialization Stephen Hemminger
2014-08-26  2:07 ` [dpdk-dev] [RFC 10/10] virtio: add support for promiscious and multicast Stephen Hemminger
2014-08-26  6:55   ` Ouyang, Changchun

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=F52918179C57134FAEC9EA62FA2F96251183B285@shsmsx102.ccr.corp.intel.com \
    --to=changchun.ouyang@intel.com \
    --cc=dev@dpdk.org \
    --cc=stephen@networkplumber.org \
    /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).