Show a patch.

GET /api/patches/396/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 396,
    "url": "https://patches.dpdk.org/api/patches/396/?format=api",
    "web_url": "https://patches.dpdk.org/patch/396/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk"
    },
    "msgid": "<1410948102-12740-6-git-send-email-bruce.richardson@intel.com>",
    "date": "2014-09-17T10:01:42",
    "name": "[dpdk-dev,5/5] mbuf: Add in second vlan tag field to mbuf",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "2b41ea3a4b6c5711ab7cbd060d52e567d9349671",
    "submitter": {
        "id": 20,
        "url": "https://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/patch/396/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/396/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/396/checks/",
    "tags": {},
    "headers": {
        "X-Mailman-Version": "2.1.15",
        "X-ExtLoop1": "1",
        "Errors-To": "dev-bounces@dpdk.org",
        "X-Mailer": "git-send-email 1.7.4.1",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 0486AB3A6;\n\tWed, 17 Sep 2014 11:57:03 +0200 (CEST)",
            "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n\tby dpdk.org (Postfix) with ESMTP id BF779B39E\n\tfor <dev@dpdk.org>; Wed, 17 Sep 2014 11:57:01 +0200 (CEST)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n\tby fmsmga102.fm.intel.com with ESMTP; 17 Sep 2014 03:02:41 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby fmsmga002.fm.intel.com with ESMTP; 17 Sep 2014 03:01:44 -0700",
            "from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com\n\t[10.237.217.46])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\ts8HA1gPv017182; Wed, 17 Sep 2014 11:01:43 +0100",
            "from sivswdev02.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev02.ir.intel.com with ESMTP id s8HA1ggI015794;\n\tWed, 17 Sep 2014 11:01:42 +0100",
            "(from bricha3@localhost)\n\tby sivswdev02.ir.intel.com with  id s8HA1gXE015715;\n\tWed, 17 Sep 2014 11:01:42 +0100"
        ],
        "References": "<1410948102-12740-1-git-send-email-bruce.richardson@intel.com>",
        "Delivered-To": "patchwork@dpdk.org",
        "X-BeenThere": "dev@dpdk.org",
        "Message-Id": "<1410948102-12740-6-git-send-email-bruce.richardson@intel.com>",
        "X-IronPort-AV": "E=Sophos;i=\"5.04,540,1406617200\"; d=\"scan'208\";a=\"600872930\"",
        "List-Post": "<mailto:dev@dpdk.org>",
        "Precedence": "list",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "X-Original-To": "patchwork@dpdk.org",
        "Return-Path": "<dev-bounces@dpdk.org>",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "In-Reply-To": "<1410948102-12740-1-git-send-email-bruce.richardson@intel.com>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "To": "dev@dpdk.org",
        "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>",
        "Date": "Wed, 17 Sep 2014 11:01:42 +0100",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "Subject": "[dpdk-dev] [PATCH 5/5] mbuf: Add in second vlan tag field to mbuf"
    },
    "content": "Packets with double vlan tags are relatively common. Applications can be\nwritten to use these, and some NICs (such as those supported by the i40e\ndriver) have hardware support for double vlan tags. To support apps and\ndrivers using double vlan tags, we need to add in a second vlan tag\nfield into the mbuf. The existing vlan_tci field is renamed vlan_tci0 to\ntake account of the fact that there is now a vlan_tci1 field.\n\nSigned-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(-)",
    "diff": "diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c\nindex 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;\ndiff --git a/app/test-pmd/macfwd.c b/app/test-pmd/macfwd.c\nindex 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;\ndiff --git a/app/test-pmd/macswap.c b/app/test-pmd/macswap.c\nindex 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;\ndiff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c\nindex 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;\ndiff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c\nindex 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 \ndiff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c\nindex 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;\ndiff --git a/app/test/packet_burst_generator.c b/app/test/packet_burst_generator.c\nindex 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)\ndiff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c\nindex 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 \ndiff --git a/examples/vhost/main.c b/examples/vhost/main.c\nindex 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;\ndiff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h\nindex 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 \ndiff --git a/lib/librte_pmd_e1000/em_rxtx.c b/lib/librte_pmd_e1000/em_rxtx.c\nindex 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 +\ndiff --git a/lib/librte_pmd_e1000/igb_rxtx.c b/lib/librte_pmd_e1000/igb_rxtx.c\nindex 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);\ndiff --git a/lib/librte_pmd_i40e/i40e_rxtx.c b/lib/librte_pmd_i40e/i40e_rxtx.c\nindex 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;\ndiff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c\nindex 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 |\ndiff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\nindex 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",
    "prefixes": [
        "dpdk-dev",
        "5/5"
    ]
}