List comments

GET /api/patches/396/comments/
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "id": 844,
        "web_url": "https://patches.dpdk.org/comment/844/",
        "msgid": "<20140917134646.7a8511f3@urahara>",
        "date": "2014-09-17T20:46:46",
        "subject": "Re: [dpdk-dev] [PATCH 5/5] mbuf: Add in second vlan tag field to\n\tmbuf",
        "submitter": {
            "id": 27,
            "url": "https://patches.dpdk.org/api/people/27/",
            "name": "Stephen Hemminger",
            "email": "stephen@networkplumber.org"
        },
        "content": "On Wed, 17 Sep 2014 11:01:42 +0100\nBruce Richardson <bruce.richardson@intel.com> wrote:\n\n> Packets with double vlan tags are relatively common. Applications can be\n> written to use these, and some NICs (such as those supported by the i40e\n> driver) have hardware support for double vlan tags. To support apps and\n> drivers using double vlan tags, we need to add in a second vlan tag\n> field into the mbuf. The existing vlan_tci field is renamed vlan_tci0 to\n> take account of the fact that there is now a vlan_tci1 field.\n> \n> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>\n> ---\n>  app/test-pmd/flowgen.c                |  2 +-\n>  app/test-pmd/macfwd.c                 |  2 +-\n>  app/test-pmd/macswap.c                |  2 +-\n>  app/test-pmd/rxonly.c                 |  2 +-\n>  app/test-pmd/testpmd.c                |  4 ++--\n>  app/test-pmd/txonly.c                 |  2 +-\n>  app/test/packet_burst_generator.c     |  4 ++--\n>  examples/ipv4_multicast/main.c        |  3 ++-\n>  examples/vhost/main.c                 |  2 +-\n>  lib/librte_mbuf/rte_mbuf.h            | 10 ++++++----\n>  lib/librte_pmd_e1000/em_rxtx.c        |  8 ++++----\n>  lib/librte_pmd_e1000/igb_rxtx.c       |  6 +++---\n>  lib/librte_pmd_i40e/i40e_rxtx.c       |  8 ++++----\n>  lib/librte_pmd_ixgbe/ixgbe_rxtx.c     |  8 ++++----\n>  lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c |  4 ++--\n>  15 files changed, 35 insertions(+), 32 deletions(-)\n> \n> diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c\n> index 8b4ed9a..cd68916 100644\n> --- a/app/test-pmd/flowgen.c\n> +++ b/app/test-pmd/flowgen.c\n> @@ -208,7 +208,7 @@ pkt_burst_flow_gen(struct fwd_stream *fs)\n>  \t\tpkt->nb_segs\t\t= 1;\n>  \t\tpkt->pkt_len\t\t= pkt_size;\n>  \t\tpkt->ol_flags\t\t= ol_flags;\n> -\t\tpkt->vlan_tci\t\t= vlan_tci;\n> +\t\tpkt->vlan_tci0\t\t= vlan_tci;\n>  \t\tpkt->l2_len\t\t= sizeof(struct ether_hdr);\n>  \t\tpkt->l3_len\t\t= sizeof(struct ipv4_hdr);\n>  \t\tpkts_burst[nb_pkt]\t= pkt;\n> diff --git a/app/test-pmd/macfwd.c b/app/test-pmd/macfwd.c\n> index 38bae23..3e91050 100644\n> --- a/app/test-pmd/macfwd.c\n> +++ b/app/test-pmd/macfwd.c\n> @@ -118,7 +118,7 @@ pkt_burst_mac_forward(struct fwd_stream *fs)\n>  \t\tmb->ol_flags = txp->tx_ol_flags;\n>  \t\tmb->l2_len = sizeof(struct ether_hdr);\n>  \t\tmb->l3_len = sizeof(struct ipv4_hdr);\n> -\t\tmb->vlan_tci = txp->tx_vlan_id;\n> +\t\tmb->vlan_tci0 = txp->tx_vlan_id;\n>  \t}\n>  \tnb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_rx);\n>  \tfs->tx_packets += nb_tx;\n> diff --git a/app/test-pmd/macswap.c b/app/test-pmd/macswap.c\n> index 1786095..02b04d7 100644\n> --- a/app/test-pmd/macswap.c\n> +++ b/app/test-pmd/macswap.c\n> @@ -120,7 +120,7 @@ pkt_burst_mac_swap(struct fwd_stream *fs)\n>  \t\tmb->ol_flags = txp->tx_ol_flags;\n>  \t\tmb->l2_len = sizeof(struct ether_hdr);\n>  \t\tmb->l3_len = sizeof(struct ipv4_hdr);\n> -\t\tmb->vlan_tci = txp->tx_vlan_id;\n> +\t\tmb->vlan_tci0 = txp->tx_vlan_id;\n>  \t}\n>  \tnb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_rx);\n>  \tfs->tx_packets += nb_tx;\n> diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c\n> index 98c788b..a4c8797 100644\n> --- a/app/test-pmd/rxonly.c\n> +++ b/app/test-pmd/rxonly.c\n> @@ -165,7 +165,7 @@ pkt_burst_receive(struct fwd_stream *fs)\n>  \t\t\tprintf(\" - FDIR hash=0x%x - FDIR id=0x%x \",\n>  \t\t\t       mb->hash.fdir.hash, mb->hash.fdir.id);\n>  \t\tif (ol_flags & PKT_RX_VLAN_PKT)\n> -\t\t\tprintf(\" - VLAN tci=0x%x\", mb->vlan_tci);\n> +\t\t\tprintf(\" - VLAN tci0=0x%x\", mb->vlan_tci0);\n>  \t\tprintf(\"\\n\");\n>  \t\tif (ol_flags != 0) {\n>  \t\t\tint rxf;\n> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c\n> index 5751607..fdf3296 100644\n> --- a/app/test-pmd/testpmd.c\n> +++ b/app/test-pmd/testpmd.c\n> @@ -406,8 +406,8 @@ testpmd_mbuf_ctor(struct rte_mempool *mp,\n>  \tmb->ol_flags     = 0;\n>  \tmb->data_off     = RTE_PKTMBUF_HEADROOM;\n>  \tmb->nb_segs      = 1;\n> -\tmb->l2_l3_len       = 0;\n> -\tmb->vlan_tci     = 0;\n> +\tmb->l2_l3_len    = 0;\n> +\tmb->vlan_tci0    = 0;\n>  \tmb->hash.rss     = 0;\n>  }\n>  \n> diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c\n> index 3d08005..52b2f06 100644\n> --- a/app/test-pmd/txonly.c\n> +++ b/app/test-pmd/txonly.c\n> @@ -264,7 +264,7 @@ pkt_burst_transmit(struct fwd_stream *fs)\n>  \t\tpkt->nb_segs = tx_pkt_nb_segs;\n>  \t\tpkt->pkt_len = tx_pkt_length;\n>  \t\tpkt->ol_flags = ol_flags;\n> -\t\tpkt->vlan_tci  = vlan_tci;\n> +\t\tpkt->vlan_tci0 = vlan_tci;\n>  \t\tpkt->l2_len = sizeof(struct ether_hdr);\n>  \t\tpkt->l3_len = sizeof(struct ipv4_hdr);\n>  \t\tpkts_burst[nb_pkt] = pkt;\n> diff --git a/app/test/packet_burst_generator.c b/app/test/packet_burst_generator.c\n> index 9e747a4..66f2a29 100644\n> --- a/app/test/packet_burst_generator.c\n> +++ b/app/test/packet_burst_generator.c\n> @@ -264,7 +264,7 @@ nomore_mbuf:\n>  \t\tpkt->l2_len = eth_hdr_size;\n>  \n>  \t\tif (ipv4) {\n> -\t\t\tpkt->vlan_tci  = ETHER_TYPE_IPv4;\n> +\t\t\tpkt->vlan_tci0  = ETHER_TYPE_IPv4;\n>  \t\t\tpkt->l3_len = sizeof(struct ipv4_hdr);\n>  \n>  \t\t\tif (vlan_enabled)\n> @@ -272,7 +272,7 @@ nomore_mbuf:\n>  \t\t\telse\n>  \t\t\t\tpkt->ol_flags = PKT_RX_IPV4_HDR;\n>  \t\t} else {\n> -\t\t\tpkt->vlan_tci  = ETHER_TYPE_IPv6;\n> +\t\t\tpkt->vlan_tci0  = ETHER_TYPE_IPv6;\n>  \t\t\tpkt->l3_len = sizeof(struct ipv6_hdr);\n>  \n>  \t\t\tif (vlan_enabled)\n> diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c\n> index 35bd842..54d0782 100644\n> --- a/examples/ipv4_multicast/main.c\n> +++ b/examples/ipv4_multicast/main.c\n> @@ -338,7 +338,8 @@ mcast_out_pkt(struct rte_mbuf *pkt, int use_clone)\n>  \n>  \t/* copy metadata from source packet*/\n>  \thdr->port = pkt->port;\n> -\thdr->vlan_tci = pkt->vlan_tci;\n> +\thdr->vlan_tci0 = pkt->vlan_tci0;\n> +\thdr->vlan_tci1 = pkt->vlan_tci1;\n>  \thdr->l2_l3_len = pkt->l2_l3_len;\n>  \thdr->hash = pkt->hash;\n>  \n> diff --git a/examples/vhost/main.c b/examples/vhost/main.c\n> index 85ee8b8..dc2177b 100644\n> --- a/examples/vhost/main.c\n> +++ b/examples/vhost/main.c\n> @@ -2693,7 +2693,7 @@ virtio_tx_route_zcp(struct virtio_net *dev, struct rte_mbuf *m,\n>  \t\tmbuf->buf_addr = m->buf_addr;\n>  \t}\n>  \tmbuf->ol_flags = PKT_TX_VLAN_PKT;\n> -\tmbuf->vlan_tci = vlan_tag;\n> +\tmbuf->vlan_tci0 = vlan_tag;\n>  \tmbuf->l2_len = sizeof(struct ether_hdr);\n>  \tmbuf->l3_len = sizeof(struct ipv4_hdr);\n>  \tMBUF_HEADROOM_UINT32(mbuf) = (uint32_t)desc_idx;\n> diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h\n> index b1acfc3..0991788 100644\n> --- a/lib/librte_mbuf/rte_mbuf.h\n> +++ b/lib/librte_mbuf/rte_mbuf.h\n> @@ -159,8 +159,8 @@ struct rte_mbuf {\n>  \tuint16_t reserved2;       /**< Unused field. Required for padding */\n>  \tuint16_t data_len;        /**< Amount of data in segment buffer. */\n>  \tuint32_t pkt_len;         /**< Total pkt len: sum of all segments. */\n> -\tuint16_t reserved;\n> -\tuint16_t vlan_tci;        /**< VLAN Tag Control Identifier (CPU order) */\n> +\tuint16_t vlan_tci0;       /**< VLAN Tag Control Identifier (CPU order) */\n> +\tuint16_t vlan_tci1;       /**< Second VLAN Tag Control Identifier */\n>  \tunion {\n>  \t\tuint32_t rss;     /**< RSS hash result if RSS enabled */\n>  \t\tstruct {\n> @@ -536,7 +536,8 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m)\n>  \tm->next = NULL;\n>  \tm->pkt_len = 0;\n>  \tm->l2_l3_len = 0;\n> -\tm->vlan_tci = 0;\n> +\tm->vlan_tci0 = 0;\n> +\tm->vlan_tci1 = 0;\n>  \tm->nb_segs = 1;\n>  \tm->port = 0xff;\n>  \n> @@ -602,7 +603,8 @@ static inline void rte_pktmbuf_attach(struct rte_mbuf *mi, struct rte_mbuf *md)\n>  \tmi->data_off = md->data_off;\n>  \tmi->data_len = md->data_len;\n>  \tmi->port = md->port;\n> -\tmi->vlan_tci = md->vlan_tci;\n> +\tmi->vlan_tci0 = md->vlan_tci0;\n> +\tmi->vlan_tci1 = md->vlan_tci1;\n>  \tmi->l2_l3_len = md->l2_l3_len;\n>  \tmi->hash = md->hash;\n>  \n> diff --git a/lib/librte_pmd_e1000/em_rxtx.c b/lib/librte_pmd_e1000/em_rxtx.c\n> index b8423b4..3b05a03 100644\n> --- a/lib/librte_pmd_e1000/em_rxtx.c\n> +++ b/lib/librte_pmd_e1000/em_rxtx.c\n> @@ -440,7 +440,7 @@ eth_em_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n>  \t\t/* If hardware offload required */\n>  \t\ttx_ol_req = (ol_flags & (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK));\n>  \t\tif (tx_ol_req) {\n> -\t\t\thdrlen.f.vlan_tci = tx_pkt->vlan_tci;\n> +\t\t\thdrlen.f.vlan_tci = tx_pkt->vlan_tci0;\n>  \t\t\thdrlen.f.l2_len = tx_pkt->l2_len;\n>  \t\t\thdrlen.f.l3_len = tx_pkt->l3_len;\n>  \t\t\t/* If new context to be built or reuse the exist ctx. */\n> @@ -537,7 +537,7 @@ eth_em_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n>  \t\t/* Set VLAN Tag offload fields. */\n>  \t\tif (ol_flags & PKT_TX_VLAN_PKT) {\n>  \t\t\tcmd_type_len |= E1000_TXD_CMD_VLE;\n> -\t\t\tpopts_spec = tx_pkt->vlan_tci << E1000_TXD_VLAN_SHIFT;\n> +\t\t\tpopts_spec = tx_pkt->vlan_tci0 << E1000_TXD_VLAN_SHIFT;\n>  \t\t}\n>  \n>  \t\tif (tx_ol_req) {\n> @@ -803,7 +803,7 @@ eth_em_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n>  \t\t\t\trx_desc_error_to_pkt_flags(rxd.errors);\n>  \n>  \t\t/* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */\n> -\t\trxm->vlan_tci = rte_le_to_cpu_16(rxd.special);\n> +\t\trxm->vlan_tci0 = rte_le_to_cpu_16(rxd.special);\n>  \n>  \t\t/*\n>  \t\t * Store the mbuf address into the next entry of the array\n> @@ -1029,7 +1029,7 @@ eth_em_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n>  \t\t\t\t\trx_desc_error_to_pkt_flags(rxd.errors);\n>  \n>  \t\t/* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */\n> -\t\trxm->vlan_tci = rte_le_to_cpu_16(rxd.special);\n> +\t\trxm->vlan_tci0 = rte_le_to_cpu_16(rxd.special);\n>  \n>  \t\t/* Prefetch data of first segment, if configured to do so. */\n>  \t\trte_packet_prefetch((char *)first_seg->buf_addr +\n> diff --git a/lib/librte_pmd_e1000/igb_rxtx.c b/lib/librte_pmd_e1000/igb_rxtx.c\n> index 56d1dfc..76391d6 100644\n> --- a/lib/librte_pmd_e1000/igb_rxtx.c\n> +++ b/lib/librte_pmd_e1000/igb_rxtx.c\n> @@ -398,7 +398,7 @@ eth_igb_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n>  \t\ttx_last = (uint16_t) (tx_id + tx_pkt->nb_segs - 1);\n>  \n>  \t\tol_flags = tx_pkt->ol_flags;\n> -\t\tvlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci;\n> +\t\tvlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci0;\n>  \t\tvlan_macip_lens.f.l2_l3_len = tx_pkt->l2_l3_len;\n>  \t\ttx_ol_req = ol_flags & PKT_TX_OFFLOAD_MASK;\n>  \n> @@ -781,7 +781,7 @@ eth_igb_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n>  \t\trxm->hash.rss = rxd.wb.lower.hi_dword.rss;\n>  \t\thlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);\n>  \t\t/* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */\n> -\t\trxm->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n> +\t\trxm->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n>  \n>  \t\tpkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);\n>  \t\tpkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr);\n> @@ -1015,7 +1015,7 @@ eth_igb_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n>  \t\t * The vlan_tci field is only valid when PKT_RX_VLAN_PKT is\n>  \t\t * set in the pkt_flags field.\n>  \t\t */\n> -\t\tfirst_seg->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n> +\t\tfirst_seg->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n>  \t\thlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);\n>  \t\tpkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);\n>  \t\tpkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr);\n> diff --git a/lib/librte_pmd_i40e/i40e_rxtx.c b/lib/librte_pmd_i40e/i40e_rxtx.c\n> index cd05654..e753495 100644\n> --- a/lib/librte_pmd_i40e/i40e_rxtx.c\n> +++ b/lib/librte_pmd_i40e/i40e_rxtx.c\n> @@ -611,7 +611,7 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)\n>  \t\t\t\tI40E_RXD_QW1_LENGTH_PBUF_SHIFT) - rxq->crc_len;\n>  \t\t\tmb->data_len = pkt_len;\n>  \t\t\tmb->pkt_len = pkt_len;\n> -\t\t\tmb->vlan_tci = rx_status &\n> +\t\t\tmb->vlan_tci0 = rx_status &\n>  \t\t\t\t(1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) ?\n>  \t\t\trte_le_to_cpu_16(\\\n>  \t\t\t\trxdp[j].wb.qword0.lo_dword.l2tag1) : 0;\n> @@ -848,7 +848,7 @@ i40e_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)\n>  \t\trxm->data_len = rx_packet_len;\n>  \t\trxm->port = rxq->port_id;\n>  \n> -\t\trxm->vlan_tci = rx_status &\n> +\t\trxm->vlan_tci0 = rx_status &\n>  \t\t\t(1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) ?\n>  \t\t\trte_le_to_cpu_16(rxd.wb.qword0.lo_dword.l2tag1) : 0;\n>  \t\tpkt_flags = i40e_rxd_status_to_pkt_flags(qword1);\n> @@ -1002,7 +1002,7 @@ i40e_recv_scattered_pkts(void *rx_queue,\n>  \t\t}\n>  \n>  \t\tfirst_seg->port = rxq->port_id;\n> -\t\tfirst_seg->vlan_tci = (rx_status &\n> +\t\tfirst_seg->vlan_tci0 = (rx_status &\n>  \t\t\t(1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)) ?\n>  \t\t\trte_le_to_cpu_16(rxd.wb.qword0.lo_dword.l2tag1) : 0;\n>  \t\tpkt_flags = i40e_rxd_status_to_pkt_flags(qword1);\n> @@ -1142,7 +1142,7 @@ i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)\n>  \n>  \t\t/* Descriptor based VLAN insertion */\n>  \t\tif (ol_flags & PKT_TX_VLAN_PKT) {\n> -\t\t\ttx_flags |= tx_pkt->vlan_tci <<\n> +\t\t\ttx_flags |= tx_pkt->vlan_tci0 <<\n>  \t\t\t\t\tI40E_TX_FLAG_L2TAG1_SHIFT;\n>  \t\t\ttx_flags |= I40E_TX_FLAG_INSERT_VLAN;\n>  \t\t\ttd_cmd |= I40E_TX_DESC_CMD_IL2TAG1;\n> diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c\n> index c0bb49f..3a43cb8 100644\n> --- a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c\n> +++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c\n> @@ -582,7 +582,7 @@ ixgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n>  \t\t/* If hardware offload required */\n>  \t\ttx_ol_req = ol_flags & PKT_TX_OFFLOAD_MASK;\n>  \t\tif (tx_ol_req) {\n> -\t\t\tvlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci;\n> +\t\t\tvlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci0;\n>  \t\t\tvlan_macip_lens.f.l2_l3_len = tx_pkt->l2_l3_len;\n>  \n>  \t\t\t/* If new context need be built or reuse the exist ctx. */\n> @@ -940,7 +940,7 @@ ixgbe_rx_scan_hw_ring(struct igb_rx_queue *rxq)\n>  \t\t\t\t\t\t\trxq->crc_len);\n>  \t\t\tmb->data_len = pkt_len;\n>  \t\t\tmb->pkt_len = pkt_len;\n> -\t\t\tmb->vlan_tci = rxdp[j].wb.upper.vlan;\n> +\t\t\tmb->vlan_tci0 = rxdp[j].wb.upper.vlan;\n>  \t\t\tmb->hash.rss = rxdp[j].wb.lower.hi_dword.rss;\n>  \n>  \t\t\t/* convert descriptor fields to rte mbuf flags */\n> @@ -1258,7 +1258,7 @@ ixgbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n>  \n>  \t\thlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);\n>  \t\t/* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */\n> -\t\trxm->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n> +\t\trxm->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n>  \n>  \t\tpkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);\n>  \t\tpkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr);\n> @@ -1500,7 +1500,7 @@ ixgbe_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n>  \t\t * The vlan_tci field is only valid when PKT_RX_VLAN_PKT is\n>  \t\t * set in the pkt_flags field.\n>  \t\t */\n> -\t\tfirst_seg->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n> +\t\tfirst_seg->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);\n>  \t\thlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);\n>  \t\tpkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);\n>  \t\tpkt_flags = (uint16_t)(pkt_flags |\n> diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\n> index 263f9ce..998c50a 100644\n> --- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\n> +++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\n> @@ -550,7 +550,7 @@ vmxnet3_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)\n>  \t\t\t\t\t       rte_pktmbuf_mtod(rxm, void *));\n>  #endif\n>  \t\t\t\t/* Copy vlan tag in packet buffer */\n> -\t\t\t\trxm->vlan_tci = rte_le_to_cpu_16(\n> +\t\t\t\trxm->vlan_tci0 = rte_le_to_cpu_16(\n>  \t\t\t\t\t\t(uint16_t)rcd->tci);\n>  \n>  \t\t\t} else\n> @@ -563,7 +563,7 @@ vmxnet3_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)\n>  \t\t\trxm->pkt_len = (uint16_t)rcd->len;\n>  \t\t\trxm->data_len = (uint16_t)rcd->len;\n>  \t\t\trxm->port = rxq->port_id;\n> -\t\t\trxm->vlan_tci = 0;\n> +\t\t\trxm->vlan_tci0 = 0;\n>  \t\t\trxm->data_off = RTE_PKTMBUF_HEADROOM;\n>  \n>  \t\t\trx_pkts[nb_rx++] = rxm;\n\nYou need to add feature flags for when driver is doing offload, and have a software\nroutine to add/delete tag?",
        "headers": {
            "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
            "Cc": "dev@dpdk.org",
            "X-Original-To": "patchwork@dpdk.org",
            "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to\n\t:references:mime-version:content-type:content-transfer-encoding;\n\tbh=u1JqXrN5CPX7mh4uJYBv0FkUxgsERusXrqK9u/1T558=;\n\tb=YfVyWKvIsikumsgUTSSxaE803eEJsaRmpxZzzhD66vekIHtkHsv3+na0FgR5f0TBo2\n\tJRsrDkoSWElNI+a1WFUaprr8IgWdXFonreQpj1Gnq5oHh2Cb9CjNOHHWlh+bBnR0/CpW\n\tw/qbQ8+Z+8k/zt+K9s5RtHRA7LwLVU9vEe9hAJqLuYYntM57AtbGZmt0QQi2atUy+YeF\n\thmJ3U7JtWWqE0h819r086fAiDTdDc31nYT4ZJou5zMy6ARXVzMCSahY1qqjqFee/nIU7\n\tV74YIwGmrWhem2AAakKWARUegSzrUSjTccP/azSkIh9MsR2Q4XEU9eIrfLeCB3Zjr/6j\n\tNHrA==",
            "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
            "Date": "Wed, 17 Sep 2014 13:46:46 -0700",
            "Precedence": "list",
            "X-BeenThere": "dev@dpdk.org",
            "References": "<1410948102-12740-1-git-send-email-bruce.richardson@intel.com>\n\t<1410948102-12740-6-git-send-email-bruce.richardson@intel.com>",
            "In-Reply-To": "<1410948102-12740-6-git-send-email-bruce.richardson@intel.com>",
            "X-Gm-Message-State": "ALoCoQm+AAjMA+06gYFz2L9l9qa1TOZ7zIbI5toeNrlyQZiKH1klrHT3sLkXGi7waTf2GIXjBNB1",
            "Content-Type": "text/plain; charset=US-ASCII",
            "To": "Bruce Richardson <bruce.richardson@intel.com>",
            "Errors-To": "dev-bounces@dpdk.org",
            "MIME-Version": "1.0",
            "Received": [
                "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 22404B39B;\n\tWed, 17 Sep 2014 22:41:16 +0200 (CEST)",
                "from mail-pd0-f182.google.com (mail-pd0-f182.google.com\n\t[209.85.192.182]) by dpdk.org (Postfix) with ESMTP id 9176AB396\n\tfor <dev@dpdk.org>; Wed, 17 Sep 2014 22:41:13 +0200 (CEST)",
                "by mail-pd0-f182.google.com with SMTP id w10so2878165pde.41\n\tfor <dev@dpdk.org>; Wed, 17 Sep 2014 13:46:55 -0700 (PDT)",
                "from urahara (static-50-53-65-80.bvtn.or.frontiernet.net.\n\t[50.53.65.80]) by mx.google.com with ESMTPSA id\n\tqp9sm17755493pbc.31.2014.09.17.13.46.52 for <multiple recipients>\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tWed, 17 Sep 2014 13:46:54 -0700 (PDT)"
            ],
            "From": "Stephen Hemminger <stephen@networkplumber.org>",
            "Message-ID": "<20140917134646.7a8511f3@urahara>",
            "List-Post": "<mailto:dev@dpdk.org>",
            "Sender": "\"dev\" <dev-bounces@dpdk.org>",
            "Content-Transfer-Encoding": "7bit",
            "Subject": "Re: [dpdk-dev] [PATCH 5/5] mbuf: Add in second vlan tag field to\n\tmbuf",
            "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
            "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
            "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
            "Return-Path": "<dev-bounces@dpdk.org>",
            "Delivered-To": "patchwork@dpdk.org",
            "X-Received": "by 10.68.203.5 with SMTP id km5mr79097pbc.91.1410986814940;\n\tWed, 17 Sep 2014 13:46:54 -0700 (PDT)",
            "X-Mailman-Version": "2.1.15"
        }
    }
]