[dpdk-dev,22/22] virtio: Use soft vlan strip in mergeable Rx path

Message ID 1421298930-15210-23-git-send-email-changchun.ouyang@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Ouyang Changchun Jan. 15, 2015, 5:15 a.m. UTC
  To keep the consistent logic with normal Rx path, the mergeable
Rx path also needs software vlan strip/decap if it is enabled.

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
 lib/librte_pmd_virtio/virtio_rxtx.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Stephen Hemminger Jan. 15, 2015, 4:55 p.m. UTC | #1
On Thu, 15 Jan 2015 13:15:30 +0800
Ouyang Changchun <changchun.ouyang@intel.com> wrote:

> To keep the consistent logic with normal Rx path, the mergeable
> Rx path also needs software vlan strip/decap if it is enabled.
> 
> Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> ---
>  lib/librte_pmd_virtio/virtio_rxtx.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/lib/librte_pmd_virtio/virtio_rxtx.c b/lib/librte_pmd_virtio/virtio_rxtx.c
> index 2529dc4..9090613 100644
> --- a/lib/librte_pmd_virtio/virtio_rxtx.c
> +++ b/lib/librte_pmd_virtio/virtio_rxtx.c
> @@ -568,6 +568,7 @@ virtio_recv_mergeable_pkts(void *rx_queue,
>  			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];
> @@ -674,6 +675,9 @@ virtio_recv_mergeable_pkts(void *rx_queue,
>  			seg_res -= rcv_cnt;
>  		}
>  
> +		if (hw->vlan_strip)
> +			rte_vlan_strip(rx_pkts[nb_rx]);
> +
>  		VIRTIO_DUMP_PACKET(rx_pkts[nb_rx],
>  			rx_pkts[nb_rx]->data_len);
>  

If you resubmit, just combine this with earlier patch that does vlan strip
  
Ouyang Changchun Jan. 16, 2015, 12:56 a.m. UTC | #2
> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Friday, January 16, 2015 12:56 AM
> To: Ouyang, Changchun
> Cc: dev@dpdk.org; Doherty, Declan; Cao, Waterman
> Subject: Re: [PATCH 22/22] virtio: Use soft vlan strip in mergeable Rx path
> 
> On Thu, 15 Jan 2015 13:15:30 +0800
> Ouyang Changchun <changchun.ouyang@intel.com> wrote:
> 
> > To keep the consistent logic with normal Rx path, the mergeable Rx
> > path also needs software vlan strip/decap if it is enabled.
> >
> > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> > ---
> >  lib/librte_pmd_virtio/virtio_rxtx.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/lib/librte_pmd_virtio/virtio_rxtx.c
> > b/lib/librte_pmd_virtio/virtio_rxtx.c
> > index 2529dc4..9090613 100644
> > --- a/lib/librte_pmd_virtio/virtio_rxtx.c
> > +++ b/lib/librte_pmd_virtio/virtio_rxtx.c
> > @@ -568,6 +568,7 @@ virtio_recv_mergeable_pkts(void *rx_queue,
> >  			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];
> > @@ -674,6 +675,9 @@ virtio_recv_mergeable_pkts(void *rx_queue,
> >  			seg_res -= rcv_cnt;
> >  		}
> >
> > +		if (hw->vlan_strip)
> > +			rte_vlan_strip(rx_pkts[nb_rx]);
> > +
> >  		VIRTIO_DUMP_PACKET(rx_pkts[nb_rx],
> >  			rx_pkts[nb_rx]->data_len);
> >
> 
> If you resubmit, just combine this with earlier patch that does vlan strip

I think just keeping it as a separate a patch may be a good way.
Thanks
Changchun
  

Patch

diff --git a/lib/librte_pmd_virtio/virtio_rxtx.c b/lib/librte_pmd_virtio/virtio_rxtx.c
index 2529dc4..9090613 100644
--- a/lib/librte_pmd_virtio/virtio_rxtx.c
+++ b/lib/librte_pmd_virtio/virtio_rxtx.c
@@ -568,6 +568,7 @@  virtio_recv_mergeable_pkts(void *rx_queue,
 			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];
@@ -674,6 +675,9 @@  virtio_recv_mergeable_pkts(void *rx_queue,
 			seg_res -= rcv_cnt;
 		}
 
+		if (hw->vlan_strip)
+			rte_vlan_strip(rx_pkts[nb_rx]);
+
 		VIRTIO_DUMP_PACKET(rx_pkts[nb_rx],
 			rx_pkts[nb_rx]->data_len);