From: Stephen Hemminger <stephen@networkplumber.org>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 5/5] mbuf: Add in second vlan tag field to mbuf
Date: Wed, 17 Sep 2014 13:46:46 -0700 [thread overview]
Message-ID: <20140917134646.7a8511f3@urahara> (raw)
In-Reply-To: <1410948102-12740-6-git-send-email-bruce.richardson@intel.com>
On Wed, 17 Sep 2014 11:01:42 +0100
Bruce Richardson <bruce.richardson@intel.com> wrote:
> Packets with double vlan tags are relatively common. Applications can be
> written to use these, and some NICs (such as those supported by the i40e
> driver) have hardware support for double vlan tags. To support apps and
> drivers using double vlan tags, we need to add in a second vlan tag
> field into the mbuf. The existing vlan_tci field is renamed vlan_tci0 to
> take account of the fact that there is now a vlan_tci1 field.
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> app/test-pmd/flowgen.c | 2 +-
> app/test-pmd/macfwd.c | 2 +-
> app/test-pmd/macswap.c | 2 +-
> app/test-pmd/rxonly.c | 2 +-
> app/test-pmd/testpmd.c | 4 ++--
> app/test-pmd/txonly.c | 2 +-
> app/test/packet_burst_generator.c | 4 ++--
> examples/ipv4_multicast/main.c | 3 ++-
> examples/vhost/main.c | 2 +-
> lib/librte_mbuf/rte_mbuf.h | 10 ++++++----
> lib/librte_pmd_e1000/em_rxtx.c | 8 ++++----
> lib/librte_pmd_e1000/igb_rxtx.c | 6 +++---
> lib/librte_pmd_i40e/i40e_rxtx.c | 8 ++++----
> lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 8 ++++----
> lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 4 ++--
> 15 files changed, 35 insertions(+), 32 deletions(-)
>
> diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c
> index 8b4ed9a..cd68916 100644
> --- a/app/test-pmd/flowgen.c
> +++ b/app/test-pmd/flowgen.c
> @@ -208,7 +208,7 @@ pkt_burst_flow_gen(struct fwd_stream *fs)
> pkt->nb_segs = 1;
> pkt->pkt_len = pkt_size;
> pkt->ol_flags = ol_flags;
> - pkt->vlan_tci = vlan_tci;
> + pkt->vlan_tci0 = vlan_tci;
> pkt->l2_len = sizeof(struct ether_hdr);
> pkt->l3_len = sizeof(struct ipv4_hdr);
> pkts_burst[nb_pkt] = pkt;
> diff --git a/app/test-pmd/macfwd.c b/app/test-pmd/macfwd.c
> index 38bae23..3e91050 100644
> --- a/app/test-pmd/macfwd.c
> +++ b/app/test-pmd/macfwd.c
> @@ -118,7 +118,7 @@ pkt_burst_mac_forward(struct fwd_stream *fs)
> mb->ol_flags = txp->tx_ol_flags;
> mb->l2_len = sizeof(struct ether_hdr);
> mb->l3_len = sizeof(struct ipv4_hdr);
> - mb->vlan_tci = txp->tx_vlan_id;
> + mb->vlan_tci0 = txp->tx_vlan_id;
> }
> nb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_rx);
> fs->tx_packets += nb_tx;
> diff --git a/app/test-pmd/macswap.c b/app/test-pmd/macswap.c
> index 1786095..02b04d7 100644
> --- a/app/test-pmd/macswap.c
> +++ b/app/test-pmd/macswap.c
> @@ -120,7 +120,7 @@ pkt_burst_mac_swap(struct fwd_stream *fs)
> mb->ol_flags = txp->tx_ol_flags;
> mb->l2_len = sizeof(struct ether_hdr);
> mb->l3_len = sizeof(struct ipv4_hdr);
> - mb->vlan_tci = txp->tx_vlan_id;
> + mb->vlan_tci0 = txp->tx_vlan_id;
> }
> nb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_rx);
> fs->tx_packets += nb_tx;
> diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c
> index 98c788b..a4c8797 100644
> --- a/app/test-pmd/rxonly.c
> +++ b/app/test-pmd/rxonly.c
> @@ -165,7 +165,7 @@ pkt_burst_receive(struct fwd_stream *fs)
> printf(" - FDIR hash=0x%x - FDIR id=0x%x ",
> mb->hash.fdir.hash, mb->hash.fdir.id);
> if (ol_flags & PKT_RX_VLAN_PKT)
> - printf(" - VLAN tci=0x%x", mb->vlan_tci);
> + printf(" - VLAN tci0=0x%x", mb->vlan_tci0);
> printf("\n");
> if (ol_flags != 0) {
> int rxf;
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 5751607..fdf3296 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -406,8 +406,8 @@ testpmd_mbuf_ctor(struct rte_mempool *mp,
> mb->ol_flags = 0;
> mb->data_off = RTE_PKTMBUF_HEADROOM;
> mb->nb_segs = 1;
> - mb->l2_l3_len = 0;
> - mb->vlan_tci = 0;
> + mb->l2_l3_len = 0;
> + mb->vlan_tci0 = 0;
> mb->hash.rss = 0;
> }
>
> diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c
> index 3d08005..52b2f06 100644
> --- a/app/test-pmd/txonly.c
> +++ b/app/test-pmd/txonly.c
> @@ -264,7 +264,7 @@ pkt_burst_transmit(struct fwd_stream *fs)
> pkt->nb_segs = tx_pkt_nb_segs;
> pkt->pkt_len = tx_pkt_length;
> pkt->ol_flags = ol_flags;
> - pkt->vlan_tci = vlan_tci;
> + pkt->vlan_tci0 = vlan_tci;
> pkt->l2_len = sizeof(struct ether_hdr);
> pkt->l3_len = sizeof(struct ipv4_hdr);
> pkts_burst[nb_pkt] = pkt;
> diff --git a/app/test/packet_burst_generator.c b/app/test/packet_burst_generator.c
> index 9e747a4..66f2a29 100644
> --- a/app/test/packet_burst_generator.c
> +++ b/app/test/packet_burst_generator.c
> @@ -264,7 +264,7 @@ nomore_mbuf:
> pkt->l2_len = eth_hdr_size;
>
> if (ipv4) {
> - pkt->vlan_tci = ETHER_TYPE_IPv4;
> + pkt->vlan_tci0 = ETHER_TYPE_IPv4;
> pkt->l3_len = sizeof(struct ipv4_hdr);
>
> if (vlan_enabled)
> @@ -272,7 +272,7 @@ nomore_mbuf:
> else
> pkt->ol_flags = PKT_RX_IPV4_HDR;
> } else {
> - pkt->vlan_tci = ETHER_TYPE_IPv6;
> + pkt->vlan_tci0 = ETHER_TYPE_IPv6;
> pkt->l3_len = sizeof(struct ipv6_hdr);
>
> if (vlan_enabled)
> diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c
> index 35bd842..54d0782 100644
> --- a/examples/ipv4_multicast/main.c
> +++ b/examples/ipv4_multicast/main.c
> @@ -338,7 +338,8 @@ mcast_out_pkt(struct rte_mbuf *pkt, int use_clone)
>
> /* copy metadata from source packet*/
> hdr->port = pkt->port;
> - hdr->vlan_tci = pkt->vlan_tci;
> + hdr->vlan_tci0 = pkt->vlan_tci0;
> + hdr->vlan_tci1 = pkt->vlan_tci1;
> hdr->l2_l3_len = pkt->l2_l3_len;
> hdr->hash = pkt->hash;
>
> diff --git a/examples/vhost/main.c b/examples/vhost/main.c
> index 85ee8b8..dc2177b 100644
> --- a/examples/vhost/main.c
> +++ b/examples/vhost/main.c
> @@ -2693,7 +2693,7 @@ virtio_tx_route_zcp(struct virtio_net *dev, struct rte_mbuf *m,
> mbuf->buf_addr = m->buf_addr;
> }
> mbuf->ol_flags = PKT_TX_VLAN_PKT;
> - mbuf->vlan_tci = vlan_tag;
> + mbuf->vlan_tci0 = vlan_tag;
> mbuf->l2_len = sizeof(struct ether_hdr);
> mbuf->l3_len = sizeof(struct ipv4_hdr);
> MBUF_HEADROOM_UINT32(mbuf) = (uint32_t)desc_idx;
> diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
> index b1acfc3..0991788 100644
> --- a/lib/librte_mbuf/rte_mbuf.h
> +++ b/lib/librte_mbuf/rte_mbuf.h
> @@ -159,8 +159,8 @@ struct rte_mbuf {
> uint16_t reserved2; /**< Unused field. Required for padding */
> uint16_t data_len; /**< Amount of data in segment buffer. */
> uint32_t pkt_len; /**< Total pkt len: sum of all segments. */
> - uint16_t reserved;
> - uint16_t vlan_tci; /**< VLAN Tag Control Identifier (CPU order) */
> + uint16_t vlan_tci0; /**< VLAN Tag Control Identifier (CPU order) */
> + uint16_t vlan_tci1; /**< Second VLAN Tag Control Identifier */
> union {
> uint32_t rss; /**< RSS hash result if RSS enabled */
> struct {
> @@ -536,7 +536,8 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m)
> m->next = NULL;
> m->pkt_len = 0;
> m->l2_l3_len = 0;
> - m->vlan_tci = 0;
> + m->vlan_tci0 = 0;
> + m->vlan_tci1 = 0;
> m->nb_segs = 1;
> m->port = 0xff;
>
> @@ -602,7 +603,8 @@ static inline void rte_pktmbuf_attach(struct rte_mbuf *mi, struct rte_mbuf *md)
> mi->data_off = md->data_off;
> mi->data_len = md->data_len;
> mi->port = md->port;
> - mi->vlan_tci = md->vlan_tci;
> + mi->vlan_tci0 = md->vlan_tci0;
> + mi->vlan_tci1 = md->vlan_tci1;
> mi->l2_l3_len = md->l2_l3_len;
> mi->hash = md->hash;
>
> diff --git a/lib/librte_pmd_e1000/em_rxtx.c b/lib/librte_pmd_e1000/em_rxtx.c
> index b8423b4..3b05a03 100644
> --- a/lib/librte_pmd_e1000/em_rxtx.c
> +++ b/lib/librte_pmd_e1000/em_rxtx.c
> @@ -440,7 +440,7 @@ eth_em_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
> /* If hardware offload required */
> tx_ol_req = (ol_flags & (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK));
> if (tx_ol_req) {
> - hdrlen.f.vlan_tci = tx_pkt->vlan_tci;
> + hdrlen.f.vlan_tci = tx_pkt->vlan_tci0;
> hdrlen.f.l2_len = tx_pkt->l2_len;
> hdrlen.f.l3_len = tx_pkt->l3_len;
> /* If new context to be built or reuse the exist ctx. */
> @@ -537,7 +537,7 @@ eth_em_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
> /* Set VLAN Tag offload fields. */
> if (ol_flags & PKT_TX_VLAN_PKT) {
> cmd_type_len |= E1000_TXD_CMD_VLE;
> - popts_spec = tx_pkt->vlan_tci << E1000_TXD_VLAN_SHIFT;
> + popts_spec = tx_pkt->vlan_tci0 << E1000_TXD_VLAN_SHIFT;
> }
>
> if (tx_ol_req) {
> @@ -803,7 +803,7 @@ eth_em_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
> rx_desc_error_to_pkt_flags(rxd.errors);
>
> /* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */
> - rxm->vlan_tci = rte_le_to_cpu_16(rxd.special);
> + rxm->vlan_tci0 = rte_le_to_cpu_16(rxd.special);
>
> /*
> * Store the mbuf address into the next entry of the array
> @@ -1029,7 +1029,7 @@ eth_em_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
> rx_desc_error_to_pkt_flags(rxd.errors);
>
> /* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */
> - rxm->vlan_tci = rte_le_to_cpu_16(rxd.special);
> + rxm->vlan_tci0 = rte_le_to_cpu_16(rxd.special);
>
> /* Prefetch data of first segment, if configured to do so. */
> rte_packet_prefetch((char *)first_seg->buf_addr +
> diff --git a/lib/librte_pmd_e1000/igb_rxtx.c b/lib/librte_pmd_e1000/igb_rxtx.c
> index 56d1dfc..76391d6 100644
> --- a/lib/librte_pmd_e1000/igb_rxtx.c
> +++ b/lib/librte_pmd_e1000/igb_rxtx.c
> @@ -398,7 +398,7 @@ eth_igb_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
> tx_last = (uint16_t) (tx_id + tx_pkt->nb_segs - 1);
>
> ol_flags = tx_pkt->ol_flags;
> - vlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci;
> + vlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci0;
> vlan_macip_lens.f.l2_l3_len = tx_pkt->l2_l3_len;
> tx_ol_req = ol_flags & PKT_TX_OFFLOAD_MASK;
>
> @@ -781,7 +781,7 @@ eth_igb_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
> rxm->hash.rss = rxd.wb.lower.hi_dword.rss;
> hlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);
> /* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */
> - rxm->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);
> + rxm->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);
>
> pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);
> pkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr);
> @@ -1015,7 +1015,7 @@ eth_igb_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
> * The vlan_tci field is only valid when PKT_RX_VLAN_PKT is
> * set in the pkt_flags field.
> */
> - first_seg->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);
> + first_seg->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);
> hlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);
> pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);
> pkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr);
> diff --git a/lib/librte_pmd_i40e/i40e_rxtx.c b/lib/librte_pmd_i40e/i40e_rxtx.c
> index cd05654..e753495 100644
> --- a/lib/librte_pmd_i40e/i40e_rxtx.c
> +++ b/lib/librte_pmd_i40e/i40e_rxtx.c
> @@ -611,7 +611,7 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
> I40E_RXD_QW1_LENGTH_PBUF_SHIFT) - rxq->crc_len;
> mb->data_len = pkt_len;
> mb->pkt_len = pkt_len;
> - mb->vlan_tci = rx_status &
> + mb->vlan_tci0 = rx_status &
> (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) ?
> rte_le_to_cpu_16(\
> rxdp[j].wb.qword0.lo_dword.l2tag1) : 0;
> @@ -848,7 +848,7 @@ i40e_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
> rxm->data_len = rx_packet_len;
> rxm->port = rxq->port_id;
>
> - rxm->vlan_tci = rx_status &
> + rxm->vlan_tci0 = rx_status &
> (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) ?
> rte_le_to_cpu_16(rxd.wb.qword0.lo_dword.l2tag1) : 0;
> pkt_flags = i40e_rxd_status_to_pkt_flags(qword1);
> @@ -1002,7 +1002,7 @@ i40e_recv_scattered_pkts(void *rx_queue,
> }
>
> first_seg->port = rxq->port_id;
> - first_seg->vlan_tci = (rx_status &
> + first_seg->vlan_tci0 = (rx_status &
> (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)) ?
> rte_le_to_cpu_16(rxd.wb.qword0.lo_dword.l2tag1) : 0;
> pkt_flags = i40e_rxd_status_to_pkt_flags(qword1);
> @@ -1142,7 +1142,7 @@ i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
>
> /* Descriptor based VLAN insertion */
> if (ol_flags & PKT_TX_VLAN_PKT) {
> - tx_flags |= tx_pkt->vlan_tci <<
> + tx_flags |= tx_pkt->vlan_tci0 <<
> I40E_TX_FLAG_L2TAG1_SHIFT;
> tx_flags |= I40E_TX_FLAG_INSERT_VLAN;
> td_cmd |= I40E_TX_DESC_CMD_IL2TAG1;
> diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> index c0bb49f..3a43cb8 100644
> --- a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> +++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> @@ -582,7 +582,7 @@ ixgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
> /* If hardware offload required */
> tx_ol_req = ol_flags & PKT_TX_OFFLOAD_MASK;
> if (tx_ol_req) {
> - vlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci;
> + vlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci0;
> vlan_macip_lens.f.l2_l3_len = tx_pkt->l2_l3_len;
>
> /* If new context need be built or reuse the exist ctx. */
> @@ -940,7 +940,7 @@ ixgbe_rx_scan_hw_ring(struct igb_rx_queue *rxq)
> rxq->crc_len);
> mb->data_len = pkt_len;
> mb->pkt_len = pkt_len;
> - mb->vlan_tci = rxdp[j].wb.upper.vlan;
> + mb->vlan_tci0 = rxdp[j].wb.upper.vlan;
> mb->hash.rss = rxdp[j].wb.lower.hi_dword.rss;
>
> /* convert descriptor fields to rte mbuf flags */
> @@ -1258,7 +1258,7 @@ ixgbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
>
> hlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);
> /* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */
> - rxm->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);
> + rxm->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);
>
> pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);
> pkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr);
> @@ -1500,7 +1500,7 @@ ixgbe_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
> * The vlan_tci field is only valid when PKT_RX_VLAN_PKT is
> * set in the pkt_flags field.
> */
> - first_seg->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);
> + first_seg->vlan_tci0 = rte_le_to_cpu_16(rxd.wb.upper.vlan);
> hlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);
> pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);
> pkt_flags = (uint16_t)(pkt_flags |
> diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
> index 263f9ce..998c50a 100644
> --- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
> +++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
> @@ -550,7 +550,7 @@ vmxnet3_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
> rte_pktmbuf_mtod(rxm, void *));
> #endif
> /* Copy vlan tag in packet buffer */
> - rxm->vlan_tci = rte_le_to_cpu_16(
> + rxm->vlan_tci0 = rte_le_to_cpu_16(
> (uint16_t)rcd->tci);
>
> } else
> @@ -563,7 +563,7 @@ vmxnet3_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
> rxm->pkt_len = (uint16_t)rcd->len;
> rxm->data_len = (uint16_t)rcd->len;
> rxm->port = rxq->port_id;
> - rxm->vlan_tci = 0;
> + rxm->vlan_tci0 = 0;
> rxm->data_off = RTE_PKTMBUF_HEADROOM;
>
> rx_pkts[nb_rx++] = rxm;
You need to add feature flags for when driver is doing offload, and have a software
routine to add/delete tag?
next prev parent reply other threads:[~2014-09-17 20:41 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-17 10:01 [dpdk-dev] [PATCH 0/5] Mbuf Structure Rework, part 3 Bruce Richardson
2014-09-17 10:01 ` [dpdk-dev] [PATCH 1/5] mbuf: ensure next pointer is set to null on free Bruce Richardson
2014-09-17 10:01 ` [dpdk-dev] [PATCH 2/5] ixgbe: add prefetch to improve slow-path tx perf Bruce Richardson
2014-09-17 15:21 ` Neil Horman
2014-09-17 15:35 ` Richardson, Bruce
2014-09-17 17:59 ` Neil Horman
2014-09-18 13:36 ` Bruce Richardson
2014-09-18 15:29 ` Neil Horman
2014-09-18 15:42 ` Bruce Richardson
2014-09-18 17:56 ` Neil Horman
2014-09-17 10:01 ` [dpdk-dev] [PATCH 3/5] testpmd: Change rxfreet default to 32 Bruce Richardson
2014-09-17 15:29 ` Neil Horman
2014-09-18 15:53 ` Richardson, Bruce
2014-09-18 17:13 ` Thomas Monjalon
2014-09-18 18:08 ` Neil Horman
2014-09-19 9:18 ` Richardson, Bruce
2014-09-19 10:24 ` Neil Horman
2014-09-19 10:28 ` Richardson, Bruce
2014-09-19 15:18 ` Neil Horman
2014-09-18 18:03 ` Neil Horman
2014-09-17 10:01 ` [dpdk-dev] [PATCH 4/5] mbuf: add userdata pointer field Bruce Richardson
2014-09-17 15:35 ` Neil Horman
2014-09-17 16:02 ` Richardson, Bruce
2014-09-17 18:29 ` Neil Horman
2014-09-17 10:01 ` [dpdk-dev] [PATCH 5/5] mbuf: Add in second vlan tag field to mbuf Bruce Richardson
2014-09-17 20:46 ` Stephen Hemminger [this message]
2014-09-23 11:08 ` [dpdk-dev] [PATCH v2 0/5] Mbuf Structure Rework, part 3 Bruce Richardson
2014-09-23 11:08 ` [dpdk-dev] [PATCH v2 1/5] mbuf: ensure next pointer is set to null on free Bruce Richardson
2014-09-23 11:08 ` [dpdk-dev] [PATCH v2 2/5] ixgbe: add prefetch to improve slow-path tx perf Bruce Richardson
2014-09-23 11:08 ` [dpdk-dev] [PATCH v2 3/5] testpmd: Change rxfreet default to 32 Bruce Richardson
2014-09-23 17:02 ` Neil Horman
2014-09-24 9:03 ` Richardson, Bruce
2014-09-24 10:05 ` Neil Horman
2014-11-07 12:30 ` Thomas Monjalon
2014-11-07 13:49 ` Bruce Richardson
2014-09-23 11:08 ` [dpdk-dev] [PATCH v2 4/5] mbuf: add userdata pointer field Bruce Richardson
2014-09-23 11:08 ` [dpdk-dev] [PATCH v2 5/5] mbuf: switch vlan_tci and reserved2 fields Bruce Richardson
2014-09-29 15:58 ` [dpdk-dev] [PATCH v2 0/5] Mbuf Structure Rework, part 3 De Lara Guarch, Pablo
2014-10-08 12:31 ` 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=20140917134646.7a8511f3@urahara \
--to=stephen@networkplumber.org \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.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).